-
Pour cloner le référentiel AWS Labs amazon-eks-ami, exécutez la commande suivante :
sudo git clone https://github.com/awslabs/amazon-eks-ami && cd amazon-eks-ami
Pour en savoir plus, consultez la page amazon-ecs-init sur le site Web de GitHub.
-
Pour créer un nouveau fichier nommé variables-custom.json dans le répertoire amazon-eks-ami, exécutez la commande suivante :
sudo vi variables-custom.json
Remarque : Le fichier de variables par défaut remplacé par variables-custom.json se trouve dans le fichier variables-default.json du site web de GitHub. Si vous utilisez Amazon Linux 2 (AL2), le chemin du fichier pour variables-default.json est /amazon-eks-ami/templates/al2/variables-default.json. Si vous utilisez Amazon Linux 2023 (AL2023), le chemin du fichier est /amazon-eks-ami/templates/al2023/variables-default.json.
-
Dans le fichier variables-custom.json, ajoutez vos valeurs :
{
"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
}
Lorsque vous utilisez une AMI existante comme source pour créer une AMI personnalisée pour EKS, définissez la valeur launch_block_device_mappings_volume_size value. La valeur doit être égale ou supérieure à la taille du volume de l’instantané de l’AMI. La valeur par défaut est « 4 » dans le fichier variables-default.json.
Si vous utilisez l'option iam_instance_profile dans Packer, vous devez fournir le nom du profil d'instance du rôle IAM que vous souhaitez associer. Ne fournissez pas l'ARN du rôle IAM ou l'ARN du profil d'instance.
Si le paramètre temporary_security_group_source_cidrs n'est pas fourni, Packer ouvre le port SSH pour toutes les adresses IP (0.0.0.0/0). Pour éviter tout risque de sécurité, il est recommandé de spécifier l'adresse IP de votre machine source dans le paramètre temporary_security_group_source_cidrs.
-
Pour lancer le processus de création d'AMI personnalisée, exécutez la commande suivante :
sudo make PACKER_OPTIONAL_K8S_VARIABLE_FILE=variables-custom.json k8s=1.29 os_distro=al2 arch=x86_64 -d
Ou, pour activer la journalisation de Packer, exécutez la commande suivante :
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
Remarque : Pour définir le fuseau horaire de votre système, remplacez **« :Asia/Kolkata » ** par votre fuseau horaire. Le fichier journal généré par Packer est disponible dans le même répertoire que celui dans lequel vous exécutez la commande Packer.
-
Vérifiez que les informations d'identification utilisateur IAM ou le rôle IAM que vous utilisez pour exécuter la commande make disposent des autorisations IAM requises. Pour plus d'informations, consultez les sections IAM task or instance role et Attaching IAM policies to roles sur le site Web de Hashicorp. Les autorisations doivent également accorder l'accès au compartiment Amazon Simple Storage Service (Amazon S3) par défaut. Vous devez joindre la politique AmazonS3ReadOnlyAccess. Si vous n'êtes pas autorisé à accéder au compartiment S3, l'erreur suivante peut s'afficher :
« required variable not set: kubernetes_build_date
required variable not set: kubernetes_version »
Remarque : Ces autorisations permettent à Packer de passer des appels d'API à AWS. Utilisez des informations d’identification statiques telles qu’une clé secrète et une clé d’accès secrète, une variable d’environnement ou des fichiers d’informations d’identification partagés.
-
Vérifiez que votre AMI personnalisée est présente dans la région AWS de l'AMI source.
Lorsque Packer provisionne l'instance, les fichiers binaires par défaut sont téléchargés depuis le compartiment S3 public Amazon EKS amazon-eks dans us-west-2. Pour plus d'informations, consultez le fichier install-worker.sh sur le site Web de GitHub.