Comment créer des AMI Amazon Linux personnalisées pour Amazon EKS ?

Lecture de 5 minute(s)
0

Je souhaite créer une Amazon Machine Image (AMI) Amazon Linux personnalisée à déployer avec un cluster Amazon Elastic Kubernetes Service (Amazon EKS).

Brève description

Pour créer une AMI Linux personnalisée pour Amazon EKS, vous devez utiliser les éléments suivants :

Remarque : Packer utilise une pile AWS CloudFormation. La pile exécute une instance Amazon Elastic Compute Cloud (Amazon EC2) m4.large ou a1.large (en fonction de l'architecture AMI cible). L'instance est allouée par Packer. Une fois que l'instance est allouée avec des packages et des fichiers binaires, Packer crée une AMI à partir de l'instance en cours d'exécution.

Résolution

Remarque : si vous recevez des erreurs lors de l'exécution de commandes depuis l'interface de ligne de commande AWS (AWS CLI), assurez-vous que vous utilisez la version d'AWS CLI la plus récente.

Installer et configurer Packer

1.    Installez Packer à partir du site de HashiCorp.

2.    Configurez les informations d'identification de votre compte AWS pour permettre à Packer d'effectuer des appels aux opérations d'API AWS en votre nom. Vous pouvez utiliser des informations d'identification statiques (clé secrète et clé d'accès secrète), une variable d'environnement, des fichiers d'informations d'identification partagés ou un rôle Amazon EC2.

Remarque : pour plus d'informations sur la configuration des informations d'identification AWS pour Packer, consultez les rubriques Authentification et Tâche IAM ou rôle d'instance sur le site Web de HashiCorp.

Cloner le référentiel d'AMI Amazon EKS

Pour cloner le référentiel d'AMI Amazon EKS sur votre station de travail, exécutez la commande suivante :

$ git clone https://github.com/awslabs/amazon-eks-ami && cd amazon-eks-ami

Remarque : Packer est exécuté via une série de cibles makefile avec eks-worker-al2.json utilisé comme spécification de génération. Le processus de génération utilise le générateur Packer amazon-ebs (depuis le site Web HashiCorp) et lance une instance. Le fournisseur shell Packer (du site Web HashiCorp) exécute le script install-worker.sh sur l'instance pour installer le logiciel et effectuer d'autres tâches de paramétrage. Ensuite, Packer crée une AMI à partir de l'instance et met fin à l'instance une fois l'AMI créée.

Fournir une AMI source personnalisée

Pour configurer une AMI source, définissez les variables source_ami_id, source_ami_owners, et aws_region dans le fichier de configuration Packer eks-worker-al2.json. Par exemple :

"source_ami_id": "SOURCE_AMI_ID",      # Enter the ID of your source image
"source_ami_owners": "AWS_ACCOUNT_ID", # Enter the account where this image is stored
"aws_region": "AWS_DEFAULT_REGION",    # Enter the AWS Region of the source AMI

Pour fournir des fichiers binaires de travail personnalisés, suivez les étapes de la section (Facultatif) Fournir vos propres fichiers binaires Kubernetes.

Pour créer l'image à l'aide de fichiers binaires Kubernetes par défaut d'AWS, suivez les étapes de la section Créer une AMI de travail Amazon EKS à l'aide de fichiers binaires par défaut.

(Facultatif) Fournir vos propres fichiers binaires Kubernetes

Lorsque Packer alloue l'instance, les fichiers binaires sont téléchargés par défaut à partir du compartiment Amazon Simple Storage Service (Amazon S3) public Amazon EKS amazon-eks dans us-west-2. Pour plus d'informations, consultez le fichier install-worker.sh.

1.    Pour examiner les fichiers binaires disponibles fournis dans le compartiment par défaut, exécutez la commande d'AWS CLI suivante

$ aws s3 ls s3://amazon-eks 
$ aws s3 ls s3://amazon-eks/kubernetes_version/kubernetes_build_date/bin/linux/arch/

Remarque : remplacez amazon-eks, kubernetes_version, kubernetes_build_date et arch par vos propres valeurs.

Important : pour télécharger vos propres fichiers binaires sur le nœud de travail pendant l'allocation, vous devez mettre en miroir la structure de dossiers du compartiment amazon-eks utilisée dans le script install-worker.sh.

2.    Une fois vos fichiers binaires préparés via votre propre processus de génération, copiez-les dans votre propre compartiment S3 à l'aide d'AWS CLI.

Voici un exemple qui utilise un fichier binaire kubelet personnalisé :

$ aws s3 cp kubelet s3://my-custom-bucket/kubernetes_version/kubernetes_build_date/bin/linux/arch/kubelet

Remarque : remplacez my-custom-bucket, amazon-eks, kubernetes_version, kubernetes_build_date et arch par vos propres valeurs.

Important : vous devez fournir tous les fichiers binaires répertoriés dans le compartiment par défaut amazon-eks pour une combinaison kubernetes_version, kubernetes_build_date et arch spécifique. Ces fichiers binaires doivent être accessibles grâce aux informations d'identification AWS Identity and Access Management (IAM) configurées dans la section Installer et configurer HashiCorp Packer.

Créer une AMI de travail Amazon EKS à l'aide de fichiers binaires personnalisés

Pour démarrer le processus de génération, utilisez l'AMI source configurée dans eks-worker-al2.json pour appeler make avec les paramètres. Par exemple :

$ make k8s \
    binary_bucket_name=my-custom-bucket \
    binary_bucket_region=eu-west-1 \
    kubernetes_version=1.14.9 \
    kubernetes_build_date=2020-01-22

Remarque : vérifiez que les paramètres binary_bucket_name, binary_bucket_region, kubernetes_version et kubernetes_build_date correspondent au chemin d'accès vers vos fichiers binaires dans Amazon S3.

Créer une AMI de travail Amazon EKS à l'aide de fichiers binaires par défaut

1.    Pour créer l'AMI de travail Amazon EKS à l'aide d'une AMI de base personnalisée et des fichiers binaires Kubernetes par défaut (les plus récents), vérifiez que le fichier eks-worker-al2.json est mis à jour avec l'AMI de base appropriée.

2.    Pour déclencher le processus de génération en fournissant la version Kubernetes comme paramètre, exécutez la commande suivante :

$ make 1.14  # Build a Amazon EKS Worker AMI for k8s 1.14

Remarque : pour les configurations plus avancées, vous devez modifier les fichiers de configuration dans le référentiel GitHub AWS amazon-eks-ami avant de déclencher la génération.

Conseil : consultez AWS GitHub pour découvrir les problèmes courants liés à l'utilisation de la configuration Packer pour créer des AMI personnalisées.


AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 2 ans