Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
Como faço para criar AMIs personalizadas do Amazon Linux para o Amazon EKS?
Quero criar uma imagem de máquina da Amazon (AMI) do Amazon Linux personalizada para implantar um cluster do Amazon Elastic Kubernetes Service (Amazon EKS).
Resolução
Pré-requisitos
- Instale o Packer em sua máquina local ou em uma instância Amazon Linux Amazon Elastic Compute Cloud (EC2). Para obter instruções, consulte Instalar o Packer no site da Hashicorp.
- Em seguida, instale o Amazon Plugin para usar com o Hashicorp Packer para criar imagens personalizadas na AWS. Para obter instruções, consulte Instalação no site Hda ashicorp.
- Certifique-se de que o make e o git estejam instalados:
sudo yum install make -y sudo yum install git -y
Criar uma AMI personalizada do Amazon Linux para o Amazon EKS
Conclua as seguintes etapas:
-
Para clonar o repositório amazon-eks-ami do AWS Labs, execute o seguinte comando:
sudo git clone https://github.com/awslabs/amazon-eks-ami && cd amazon-eks-ami
Para obter mais informações, consulte amazon-eks-ami no site do GitHub.
-
Para criar um novo arquivo chamado variables-custom.json no diretório amazon-eks-ami, execute o seguinte comando:
sudo vi variables-custom.json
Observação: o arquivo de variáveis padrão que o variables-custom.json substitui está localizado no arquivo variables-default.json no site do GitHub. Se você usa o Amazon Linux 2 (AL2), o caminho do arquivo para variables-default.json é /amazon-eks-ami/templates/al2/variables-default.json. Se você usa o Amazon Linux 2023 (AL2023), o caminho do arquivo é /amazon-eks-ami/templates/al2023/variables-default.json.
-
No arquivo variables-custom.json, adicione seus valores:
{ "aws_region": "AWS_Region", "source_ami_filter_name": "AMI_Name", "source_ami_id": "Source_AMI_ID", "source_ami_owners": "AMI_Owner_Account_ID", "temporary_security_group_source_cidrs": "Source_Machine_IP", #example: local_machine_IP /32 or NAT_GW_IP /32 or EC2_PublicIP /32 "launch_block_device_mappings_volume_size": "Integer", #Root volume size of the instance to be launched by packer "iam_instance_profile": "IAM_Instance_Profile_Name" #Optional }
Ao usar uma AMI existente como origem para criar uma AMI personalizada para EKS, defina o valor launch_block_device_mappings_volume_size. O valor deve ser igual ou maior que o tamanho do volume do snapshot da AMI. O valor padrão é “4" no arquivo variables-default.json.
Se você usar a opção iam_instance_profile no Packer, deverá fornecer o nome do perfil da instância da função do IAM que você deseja anexar. Não forneça o ARN da função do IAM nem o ARN do perfil da instância.
Se o parâmetro temporary_security_group_source_cidrs não for fornecido, o Packer abrirá a porta SSH para todos os endereços IP (0.0.0.0/0). Para evitar um risco de segurança, é uma prática recomendada especificar o endereço IP da sua máquina de origem no parâmetro temporary_security_group_source_cidrs. -
Para iniciar o processo personalizado de criação da AMI, execute o seguinte comando:
sudo make PACKER_OPTIONAL_K8S_VARIABLE_FILE=variables-custom.json k8s=1.29 os_distro=al2 arch=x86_64 -d
Ou, para ativar o registro do empacotador, execute o seguinte comando:
sudo PACKER_LOG_PATH=packer_logs.txt`TZ=":Asia/Kolkata" date +%Y-%m-%d_%H%M` PACKER_LOG=1 make PACKER_OPTIONAL_K8S_VARIABLE_FILE=variables-custom.json k8s=1.29 os_distro=al2 arch=x86_64 -d
Observação: para definir o fuso horário do seu sistema, substitua “:Asia/Kolkata” pelo seu fuso horário. O arquivo de log gerado pelo Packer está disponível no mesmo diretório em que você executa o comando Packer.
-
Verifique se as credenciais de usuário do IAM ou a função do IAM que você usa para executar o comando make têm as permissões de IAM necessárias. Para obter mais informações, consulte Função de tarefa ou instância do IAM e Anexar políticas do IAM a funções no site da Hashicorp. Além disso, as permissões devem permitir o acesso ao bucket padrão do Amazon Simple Storage Service (Amazon S3). Você deve anexar a política AmazonS3ReadOnlyAccess. Se você não tiver permissões para acessar o bucket do S3, poderá receber o seguinte erro:
“variável necessária não definida: kubernetes_build_date
variável necessária não definida: kubernetes\ _version”Observação: essas permissões permitem que o Packer faça chamadas de API para a AWS. Ou você pode configurar as credenciais estáticas, como uma chave secreta e uma chave de acesso secreta, uma variável de ambiente ou arquivos de credenciais compartilhados.
-
Verifique se sua AMI personalizada está presente na sua região da AWS da AMI de origem.
Quando o Packer provisiona a instância, os binários padrão são baixados do bucket público S3 do Amazon EKS amazon-eks em us-west-2. Para obter mais informações, consulte o arquivo install-worker.sh no site do GitHub.
Fornecer seus próprios binários do Kubernetes (opcional)
Conclua as seguintes etapas:
- Para examinar os binários disponíveis que são fornecidos no bucket padrão, execute o seguinte comando:
Observação: substitua amazon-eks, kubernetes_version, kubernetes_build_date e arch pelos seus próprios valores.aws s3 ls s3://amazon-eks aws s3 ls s3://amazon-eks/kubernetes_version/kubernetes_build_date/bin/linux/arch/
- Para baixar seus próprios binários para o nó de processamento conforme ele é provisionado, espelhe a estrutura de pastas do bucket amazon-eks usada no script install-worker.sh.
- Depois que seus binários estiverem preparados, use a AWS CLI para copiá-los no seu bucket do Amazon S3. O exemplo a seguir usa um binário kubelet personalizado:
Observação: substitua my-custom-bucket, amazon-eks, kubernetes_version, kubernetes_build_date e arch pelos seus próprios valores. Você deve fornecer todos os binários listados no bucket padrão do amazon-eks.aws s3 cp kubelet s3://my-custom-bucket/kubernetes_version/kubernetes_build_date/bin/linux/arch/kubelet
- Para iniciar o processo de criação, use a AMI de origem configurada em variables-default.json no diretório al2 no caminho /amazon-eks-ami/templates/al2/variables-default.json. Para invocar make com os parâmetros, execute um comando semelhante ao seguinte:
Observação: verifique se os parâmetros binary_bucket_name, binary_bucket_region, kubernetes_version e kubernetes_build_date correspondem ao caminho dos binários no Amazon S3.make k8s binary_bucket_name=Custom_Bucket_Name binary_bucket_region=Region kubernetes_version=Version kubernetes_build_date=Build_Date -d

Conteúdo relevante
- feita há 21 diaslg...
- feita há 13 diaslg...
- feita há 14 diaslg...
- feita há 13 diaslg...
- feita há 3 meseslg...
- AWS OFICIALAtualizada há um mês
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há 9 meses