Wie erstelle ich benutzerdefinierte Amazon Linux-AMIs für Amazon EKS?

Lesedauer: 4 Minute
0

Ich möchte ein benutzerdefiniertes Amazon Linux Amazon Machine Image (AMI) für die Bereitstellung mit einem Amazon Elastic Kubernetes Service (Amazon EKS)-Cluster erstellen.

Kurzbeschreibung

Um ein benutzerdefiniertes Amazon Linux AMI für Amazon EKS zu erstellen, müssen Sie Folgendes anwenden:

Hinweis: Packer arbeitet mit einem AWS CloudFormation-Stack. Auf dem Stack wird eine m4.large oder a1.large Amazon Elastic Compute Cloud (Amazon EC2)-Instance ausgeführt (abhängig von der Ziel-AMI-Architektur). Packer stellt die Instance bereit. Nachdem die Instance mit Paketen und Binärdateien bereitgestellt wurde, erstellt Packer ein AMI aus der laufenden Instance.

Lösung

Hinweis: Wenn Sie beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhalten, vergewissern Sie sich, dass Sie die neueste AWS CLI-Version verwenden.

Packer installieren und konfigurieren

1.    Installieren Sie Packer über die HashiCorp-Website.

2.    Konfigurieren Sie Ihre AWS-Kontoanmeldeinformationen, damit Packer in Ihrem Namen Aufrufe an AWS-API-Operationen tätigen kann. Sie können statische Anmeldeinformationen (geheimer Schlüssel und geheimer Zugriffsschlüssel), eine Umgebungsvariable, gemeinsam genutzte Anmeldeinformationsdateien oder eine Amazon EC2-Rolle verwenden.

Hinweis: Weitere Informationen zur Konfiguration von AWS-Anmeldeinformationen für Packer finden Sie unter Authentifizierung und IAM-Task- oder Instance-Rolle auf der HashiCorp-Website.

Amazon EKS AMI-Repository klonen

Führen Sie den folgenden Befehl aus, um das Amazon EKS AMI-Repository auf Ihren Arbeitsplatz zu klonen:

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

Hinweis: Packer wird über eine Reihe von Makefile-Zielen mit eks-worker-al2.json als Build-Spezifikation ausgeführt. Der Build-Prozess verwendet den Amazon-ebs-Packer-Builder (über die HashiCorp-Website) und startet eine Instance. Der Packer-Shell-Provisioner (über die HashiCorp-Website) führt das Skript install-worker.sh auf der Instance aus, um Software zu installieren und andere Konfigurationsaufgaben auszuführen. Dann erstellt Packer ein AMI aus der Instance und beendet die Instance, nachdem das AMI erstellt wurde.

Benutzerdefiniertes Quell-AMI bereitstellen

Um ein benutzerdefiniertes Quell-AMI zu konfigurieren, stellen Sie die Variablen source_ami_id, source_ami_owners und aws_region in der Packer-Konfirugrationsdatei eks-worker-al2.json ein. Zum Beispiel:

"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

Um benutzerdefinierte Worker-Binärdateien bereitzustellen, führen Sie die Schritte im Abschnitt (Optional) Eigene Kubernetes-Binärdateien bereitstellen aus.

Um das Image mit standardmäßigen Kubernetes-Binärdateien von AWS zu erstellen, führen Sie die Schritte im Abschnitt Amazon EKS-Worker-AMI mithilfe von Standardbinärdateien erstellen aus.

(Optional) Eigene Kubernetes-Binärdateien bereitstellen

Wenn Packer die Instance bereitstellt, werden Binärdateien standardmäßig aus dem öffentlichen Amazon Simple Storage Service (Amazon S3)-Bucket amazon-eks nach us-west-2 heruntergeladen. Weitere Informationen finden Sie in der Datei install-worker.sh.

1.    Führen Sie den folgenden AWS-CLI-Befehl aus, um die verfügbaren Binärdateien zu überprüfen, die im Standard-Bucket bereitgestellt werden.

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

Hinweis: Ersetzen Sie amazon-eks, kubernetes_version, kubernetes_build_date und arch durch Ihre Werte.

Wichtig: Um Ihre eigenen Binärdateien während der Bereitstellung auf den Worker-Knoten herunterzuladen, müssen Sie die amazon-eks-Bucket-Ordnerstruktur widerspiegeln, die im Skript install-worker.sh verwendet wird.

2.    Nachdem Ihre Binärdateien durch Ihren eigenen Erstellungsprozess vorbereitet wurden, kopieren Sie die Binärdateien in Ihren eigenen S3-Bucket mithilfe der AWS-CLI.

Hier ist ein Beispiel, das eine benutzerdefinierte kubelet-Binärdatei verwendet:

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

Hinweis: Ersetzen Sie my-custom-bucket, amazon-eks, kubernetes_version, kubernetes_build_date und arch durch Ihre Werte.

Wichtig: Sie müssen alle im standardmäßigen amazon-eks-Bucket aufgelisteten Binärdateien für eine bestimmte Kombination aus kubernetes_version, kubernetes_build_date und arch bereitstellen. Auf diese Binärdateien muss über die Anmeldeinformationen für AWS Identity and Access Management (IAM) zugegriffen werden können, die im Abschnitt HashiCorp Packer installieren und konfigurieren konfiguriert sind.

Amazon EKS-Worker-AMI mithilfe benutzerdefinierter Binärdateien erstellen

Um den Build-Prozess zu starten, verwenden Sie das in eks-worker-al2.json konfigurierte Quell-AMI, um make mit Parametern aufzurufen. Zum Beispiel:

$ 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

Hinweis: Vergewissern Sie sich, dass die Parameter binary_bucket_name, binary_bucket_region, kubernetes_version und kubernetes_build_date mit dem Pfad zu Ihren Binärdateien in Amazon S3 übereinstimmen.

Amazon EKS-Worker-AMI mithilfe von Standardbinärdateien erstellen

1.    Um das Amazon EKS-Worker-AMI mit einem benutzerdefinierten Basis-AMI und den standardmäßigen (neuesten) Kubernetes-Binärdateien zu erstellen, stellen Sie sicher, dass die Datei eks-worker-al2.json mit dem richtigen Basis-AMI aktualisiert wurde.

2.    Führen Sie den folgenden Befehl aus, um den Build-Prozess auszulösen, indem Sie die Kubernetes-Version als Parameter angeben:

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

Hinweis: Für komplexere Konfigurationen müssen Sie die Konfigurationsdateien im Amazon-eks-ami AWS GitHub-Repository ändern, bevor Sie den Build auslösen.

Tipp: Auf AWS GitHub finden Sie häufige Probleme bei der Verwendung der Packer-Konfiguration zur Erstellung benutzerdefinierter AMIs.


AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren