-
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.