Kopieren eines Container-Images von einem Repository in ein anderes - Amazon EKS

Kopieren eines Container-Images von einem Repository in ein anderes

In diesem Thema wird beschrieben, wie Sie ein Container-Image aus einem Repository abrufen, auf das Ihre Knoten keinen Zugriff haben, und in ein Repository verschieben, auf das sie Zugriff haben. Das Image können Sie in Amazon ECR oder ein alternatives Repository verschieben, auf das die Knoten Zugriff haben.

Voraussetzungen

Gehen Sie wie folgt vor, um ein Container-Image aus einem Repository abzurufen und es in ein eigenes Repository zu verschieben. In den folgenden Beispielen in diesem Thema wird das Image für Metriken-Hilfsprogramm abgerufen. Ersetzen Sie beim Ausführen dieser Schritte die example values unbedingt durch eigene Werte.

So kopieren Sie ein Container-Image aus einem Repository in ein anderes

  1. Wenn Sie noch nicht über ein Amazon-ECR-Repository oder ein anderes Repository verfügen, erstellen Sie eines, auf das die Knoten zugreifen können. Mit dem folgenden Befehl wird ein privates Amazon-ECR-Repository erstellt. Der Name eines privaten Amazon-ECR-Repositorys muss mit einem Buchstaben beginnen. Er darf nur Kleinbuchstaben, Zahlen, Bindestriche (-), Unterstriche (_) und Schrägstriche (/) enthalten. Weitere Informationen finden Sie unter Erstellen eines privaten Repositorys im Benutzerhandbuch von Amazon Elastic Container Registry.

    Sie können cni-metrics-helper mit einem beliebigen Namen ersetzen, den Sie wählen. Erstellen Sie – als bewährte Methode – ein separates Repository für jedes Image. Das wird empfohlen, weil Image-Tags in einem Repository eindeutig sein müssen. Ersetzen Sie region-code durch eine von Amazon ECR unterstützte AWS-Region.

    aws ecr create-repository --region region-code --repository-name cni-metrics-helper
  2. Bestimmen Sie die Registrierung, das Repository und das Tag (optional) des Images, das die Knoten abrufen müssen. Diese Informationen liegen im Format registry/repository[:tag] vor.

    Bei vielen der Amazon-EKS-Themen zur Installation von Images müssen Sie eine Manifestdatei anwenden oder das Image mithilfe eines Helm-Charts installieren. Bevor Sie eine Manifestdatei anwenden oder ein Helm-Chart installieren, sollten Sie sich jedoch zunächst den Inhalt des Manifests oder der Datei values.yaml des Charts ansehen. So können Sie die Registrierung, das Repository und das Tag für den Abrufvorgang bestimmen.

    Die folgende Zeile beispielsweise finden Sie in der Manifestdatei für Metriken-Hilfsprogramm. Die Registrierung ist 602401143452.dkr.ecr.us-west-2.amazonaws.com, eine private Amazon-ECR-Registrierung. Das Repository ist cni-metrics-helper.

    image: "602401143452.dkr.ecr.us-west-2.amazonaws.com/cni-metrics-helper:v1.11.2"

    Die folgenden Variationen sind bei einem Image-Speicherort möglich:

    • Nur repository-name:tag. In diesem Fall ist in der Regel docker.io die Registrierung, aber nicht spezifiziert, da Kubernetes sie standardmäßig einem Repository-Namen voranstellt, wenn keine Registrierung angegeben ist.

    • repository-name/repository-namespace/repository:tag. Ein Repository-Namespace ist optional, wird jedoch manchmal vom Repository-Besitzer zum Kategorisieren von Images angegeben. Alle Amazon-EC2-Images in der Amazon ECR Public Gallery nutzen beispielsweise den Namespace aws-ec2.

    Zeigen Sie vor dem Installieren eines Images mit Helm die Helm-Datei values.yaml an, um den Image-Speicherort zu bestimmen. Die Datei values.yaml für Metriken-Hilfsprogramm enthält zum Beispiel die folgenden Zeilen.

    image: region: us-west-2 tag: v1.11.2 account: "602401143452" domain: "amazonaws.com"
  3. Rufen Sie das in der Manifestdatei angegebene Container-Image ab.

    1. Beim Abruf aus einer öffentlichen Registrierung wie zum Beispiel Amazon ECR Public Gallery können Sie zum nächsten Unterschritt springen, da keine Authentifizierung erforderlich ist. In diesem Beispiel authentifizieren Sie sich bei einer privaten Amazon-ECR-Registrierung, die das Repository für das Helper-Image für CNI-Metriken enthält. Amazon EKS verwaltet das Image in jeder Registrierung, die in Registrierungen für Amazon-Container-Images aufgeführt ist. Die Authentifizierung ist bei jeder der Registrierungen möglich. Dazu ersetzen Sie 602401143452 und region-code durch die Informationen für eine andere Registrierung. Für jede AWS-Region, in der Amazon EKS unterstützt wird, existiert eine separate Registrierung.

      aws ecr get-login-password --region region-code | docker login --username AWS --password-stdin 602401143452.dkr.ecr.region-code.amazonaws.com
    2. Rufen Sie das Image ab. In diesem Beispiel erfolgt der Abruf aus der Registrierung, bei der Sie sich im letzten Unterschritt authentifiziert haben. Ersetzen Sie 602401143452 und region-code durch die Informationen, die Sie im vorherigen Unterschritt angegeben haben.

      docker pull 602401143452.dkr.ecr.region-code.amazonaws.com/cni-metrics-helper:v1.11.2
  4. Markieren Sie das abgerufene Image mit Ihrer Registrierung, Ihrem Repository und Ihrem Tag. Im folgenden Beispiel wird davon ausgegangen, dass Sie das Image über die Manifestdatei abgerufen haben und es in das private Amazon-ECR-Repository verschieben, das Sie im ersten Schritt erstellt haben. Ersetzen Sie 111122223333 durch Ihre Konto-ID. Ersetzen Sie region-code mit der AWS-Region, in der Sie Ihr privates Amazon-ECR-Pflichtfeld erstellt haben.

    docker tag cni-metrics-helper:v1.11.2 111122223333.dkr.ecr.region-code.amazonaws.com/cni-metrics-helper:v1.11.2
  5. Authentifizieren Sie sich bei Ihrer Registrierung. In diesem Beispiel authentifizieren Sie sich bei der privaten Amazon-ECR-Registrierung, die Sie im ersten Schritt erstellt haben. Weitere Informationen finden Sie unter Registrierungsauthentifizierung im Benutzerhandbuch von Amazon Elastic Container Registry.

    aws ecr get-login-password --region region-code | docker login --username AWS --password-stdin 111122223333.dkr.ecr.region-code.amazonaws.com
  6. Verschieben Sie das Image in Ihr Repository. In diesem Beispiel verschieben Sie das Image in das private Amazon-ECR-Repository, das Sie im ersten Schritt erstellt haben. Weitere Informationen finden Sie unter Verschieben eines Docker-Images im Benutzerhandbuch von Amazon Elastic Container Registry.

    docker push 111122223333.dkr.ecr.region-code.amazonaws.com/cni-metrics-helper:v1.11.2
  7. Aktualisieren Sie die Manifestdatei, mit deren Hilfe Sie das Image in einem vorherigen Schritt bestimmt haben, mit den Werten registry/repository:tag für das verschobene Image. Bei der Installation mit einem Helm-Chart gibt es oft eine Option zur Angabe der Werte registry/repository:tag. Geben Sie bei der Installation des Charts die Werte registry/repository:tag für das Image an, das Sie in das Repository verschoben haben.