Come posso creare AMI Amazon Linux personalizzate per Amazon EKS?

5 minuti di lettura
0

Desidero creare un Amazon Linux Amazon Machine Image (AMI) personalizzato da distribuire con un cluster Amazon Elastic Kubernetes Service (Amazon EKS).

Breve descrizione

Per creare un'AMI Amazon Linux personalizzata per Amazon EKS, devi utilizzare quanto segue:

Nota: Packer funziona utilizzando uno stack AWS CloudFormation. Lo stack esegue un'istanza Amazon Elastic Compute Cloud (Amazon EC2) m4.large o a1.large (a seconda dell'architettura AMI di destinazione). L'istanza viene fornita da Packer. Dopo aver fornito all'istanza pacchetti e binari, Packer crea un'AMI dall'istanza in esecuzione.

Risoluzione

Nota: Se ricevi errori durante l'esecuzione dei comandi AWS Command Line Interface (AWS CLI), assicurati di utilizzare la versione più recente dell'interfaccia a riga di comando di AWS.

Installa e configura Packer

  1. Installa Packer dal sito Web HashiCorp.

  2. Configura le credenziali del tuo account AWS per consentire a Packer di effettuare chiamate alle operazioni dell'API AWS per tuo conto. Puoi utilizzare credenziali statiche (chiave segreta e chiave di accesso segreta), una variabile di ambiente, file di credenziali condivisi o un ruolo Amazon EC2.

Nota: Per ulteriori informazioni sulla configurazione delle credenziali AWS per Packer, consulta Authentication e IAM Task or Instance Role sul sito web HashiCorp.

Clona il repository AMI di Amazon EKS

Per clonare il repository AMI di Amazon EKS sulla tua workstation, esegui il seguente comando:

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

Nota: Packer viene eseguito tramite una serie di target makefile con eks-worker-al2.json come specifica di build. Il processo di compilazione utilizza il builder amazon-ebs Packer (dal sito Web HashiCorp) e lancia un'istanza. Il provider della shell Packer (dal sito Web HashiCorp) esegue lo script **install-worker.sh **sull'istanza per installare il software ed eseguire altre attività di configurazione. Quindi, Packer crea un'AMI dall'istanza e termina l'istanza dopo la creazione dell'AMI.

Fornisci un'AMI di origine personalizzata

Per configurare un'AMI sorgente personalizzata, imposta le variabili source_ami_id, source_ami_owners e aws_region nel file di configurazione di Packer eks-worker-al2.json. Ad esempio:

"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

Per fornire binari di lavoro personalizzati, completa i passaggi nella sezione (Facoltativo) Fornisci i tuoi binari Kubernetes.

Per creare l'immagine utilizzando i file binari Kubernetes predefiniti di AWS, completa i passaggi nella sezione Crea un'AMI di lavoro Amazon EKS utilizzando binari predefiniti.

(Facoltativo) Fornisci i tuoi binari Kubernetes

Quando Packer effettua il provisioning dell'istanza, i file binari vengono scaricati per impostazione predefinita dal bucket pubblico Amazon EKS di Amazon Simple Storage Service (Amazon S3) amazon-eks in us-west-2. Per ulteriori informazioni, consultate il file install-worker.sh.

  1. Per esaminare i file binari disponibili forniti nel bucket predefinito, esegui il seguente comando AWS CLI
$ aws s3 ls s3://amazon-eks
$ aws s3 ls s3://amazon-eks/kubernetes_version/kubernetes_build_date/bin/linux/arch/

**Nota:**Sostituisci amazon-eks, kubernetes_version, kubernetes_build_date e arch con i tuoi valori.

Importante: Per scaricare i tuoi file binari sul nodo worker durante il provisioning, devi rispecchiare la struttura delle cartelle bucket amazon-eks utilizzata nello script install-worker.sh.

  1. Dopo aver preparato i file binari tramite il tuo processo di compilazione, copia i binari nel tuo bucket S3 utilizzando l'interfaccia a riga di comando di AWS.

Ecco un esempio che utilizza un binario kubelet personalizzato:

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

Nota: Sostituisci my-custom-bucket, amazon-eks, kubernetes_version, ** kubernetes_build_date** e arch con i tuoi valori.

Importante: Devi fornire tutti i file binari elencati nel bucket amazon-eks predefinito per una combinazione specifica di kubernetes_version, kubernetes_build_date e ** arch**. Questi binari devono essere accessibili tramite le credenziali di AWS Identity and Access Management (IAM) configurate nella sezione Installa e configura HashiCorp Packer.

Crea un'AMI di lavoro Amazon EKS utilizzando binari personalizzati

Per avviare il processo di compilazione, usa l'AMI di origine configurata in eks-worker-al2.json per invocare make con parametri. Ad esempio:

$ 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

Nota: Verifica che i parametri binari_bucket_name, binary_bucket_region, kubernetes_version e kubernetes_build_date corrispondano al percorso dei tuoi file binari in Amazon S3.

Crea un'AMI worker di Amazon EKS utilizzando binari predefiniti

  1. Per creare l'AMI worker di Amazon EKS utilizzando un'AMI di base personalizzata e i binari Kubernetes predefiniti (più recenti), conferma che il file eks-worker-al2.json sia aggiornato con l'AMI di base corretta.

  2. Per attivare il processo di compilazione fornendo la versione di Kubernetes come parametro, esegui il seguente comando:

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

Nota: Per configurazioni più avanzate, devi modificare i file di configurazione nel repository AWS GitHub amazon-eks-ami prima di attivare la build.

**Suggerimento:**Consulta AWS GitHub per problemi comuni relativi all'utilizzo della configurazione Packer per creare AMI personalizzate.


AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa