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

Date de la dernière mise à jour : 06/02/2020

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

Installer et configurer Packer

1.    Installez Packer.

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.

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 comme spécification de génération. Le processus de génération utilise le générateur Packer amazon-ebs et lance une instance. Le fournisseur shell Packer exécute le script install-worker.sh sur l'instance pour installer le logiciel et effectuer d'autres tâches de configuration. 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 personnalisée, définissez les variables source_ami_id, source_ami_owners, et aws_region dans le fichier de configuration Packer eks-worker-al2.json. Consultez l'exemple suivant :

"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 suivante de l'interface de ligne de commande AWS (CLI AWS) :

$ 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 Amazon S3 à l'aide de l'interface de ligne de commande AWS.

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 amazon-eks par défaut pour une combinaison kubernetes_version, kubernetes_build_date et arch spécifique. Ces fichiers binaires doivent être accessibles via les 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 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. Consultez l'exemple suivant :

$ 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 à 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 k8s 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.


Cet article vous a-t-il été utile ?

Cette page peut-elle être améliorée ?


Vous avez besoin d’aide ?