Copier une image de conteneur d'un référentiel vers un autre référentiel - Amazon EKS

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Copier une image de conteneur d'un référentiel vers un autre référentiel

Cette rubrique décrit comment extraire une image de conteneur d'un référentiel auquel vos nœuds n'ont pas accès et envoyer l'image vers un référentiel auquel vos nœuds ont accès. Vous pouvez transmettre l'image à Amazon ECR ou à un référentiel alternatif auquel vos nœuds ont accès.

Prérequis
  • Le moteur Docker installé et configuré sur votre ordinateur. Pour connaître la marche à suivre, consultez la rubrique Installer Docker Engine dans la documentation Docker.

  • Version 2.12.3 ou ultérieure ou version 1.27.160 ou ultérieure de l’AWS Command Line Interface (AWS CLI) installée et configurée sur votre appareil ou AWS CloudShell. Pour vérifier votre version actuelle, utilisez aws --version | cut -d / -f2 | cut -d ' ' -f1. Les gestionnaires de package, par exemple yum, apt-get, Homebrew ou macOS, sont souvent antérieurs de plusieurs versions à la AWS CLI. Pour installer la dernière version, consultez Installation, mise à jour et désinstallation de l’AWS CLI et Configuration rapide avec aws configure dans le Guide de l’utilisateur AWS Command Line Interface. La version d’AWS CLI qui est installée dans AWS CloudShell peut également être en retard de plusieurs versions par rapport à la dernière version. Pour la mettre à jour, consultez Installation d’AWS CLI dans votre répertoire d’accueil dans le Guide de l’utilisateur AWS CloudShell.

  • Un point de terminaison d'un VPC d'interface pour Amazon ECR si vous souhaitez que vos nœuds extraient des images de conteneur ou transmettent des images de conteneur vers un référentiel Amazon ECR privé sur le réseau d'Amazon. Pour de plus amples informations, veuillez consulter Créer des points de terminaison de VPC pour Amazon ECR dans le Guide de l'utilisateur Amazon Elastic Container Registry.

Effectuez les étapes suivantes pour extraire une image de conteneur d'un référentiel et la transférer vers votre propre référentiel. Dans les exemples suivants fournis dans cette rubrique, l'image pour l'assistant de métriques Amazon VPC CNI plugin for Kubernetes est extraite. Lorsque vous suivez ces étapes, assurez-vous de remplacer les example values par vos propres valeurs.

Pour copier une image de conteneur d'un référentiel vers un autre référentiel
  1. Si vous ne disposez pas déjà d'un référentiel Amazon ECR ou d'un autre référentiel, créez-en un auquel vos nœuds ont accès. La commande suivante crée un référentiel privé Amazon ECR. Un nom de référentiel privé Amazon ECR doit commencer par une lettre. Il peut uniquement contenir des lettres minuscules, des chiffres, des tirets (-), des traits de soulignement (_) et des barres obliques (/). Pour de plus amples informations, veuillez consulter Créer un référentiel privé dans le Guide de l'utilisateur Amazon Elastic Container Registry.

    Vous pouvez remplacer.cni-metrics-helper par ce que vous souhaitez. Il est recommandé de créer un référentiel distinct pour chaque image. Nous vous le recommandons, car les identifications d'image doivent être uniques au sein d'un référentiel. Remplacez region-code par une Région AWS prise en charge par Amazon ECR.

    aws ecr create-repository --region region-code --repository-name cni-metrics-helper
  2. Déterminez le registre, le référentiel et l'identification (facultatif) de l'image que vos nœuds doivent extraire. Ces informations se trouvent dans le format registry/repository[:tag].

    De nombreuses rubriques Amazon EKS sur l'installation d'images nécessitent que vous appliquiez un fichier manifeste ou que vous installiez l'image à l'aide des Charts de Helm. Cependant, avant d'appliquer un fichier manifeste ou d'installer une charte de Helm, visualisez d'abord le contenu du fichier values.yaml manifeste ou de la charte. De cette façon, vous pouvez déterminer le registre, le référentiel et l'identification à extraire.

    Par exemple, vous pouvez trouver la ligne suivante dans le fichier manifeste pour l'assistant de métriques Amazon VPC CNI plugin for Kubernetes. Le registre est 602401143452.dkr.ecr.us-west-2.amazonaws.com, qui est un registre privé Amazon ECR. Le référentiel est cni-metrics-helper.

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

    Vous pouvez voir les variantes suivantes pour un emplacement d'image :

    • Seul repository-name:tag. Dans ce cas, docker.io est généralement le registre, mais il n'est pas spécifié puisque Kubernetes l'ajoute par défaut à un nom de référentiel si aucun registre n'est spécifié.

    • repository-name/repository-namespace/repository:tag. Un espace de noms de référentiel est facultatif, mais est parfois spécifié par le propriétaire du référentiel pour catégoriser les images. Par exemple, toutes les images Amazon EC2 de la galerie publique Amazon ECR utilisent l'espace de noms aws-ec2.

    Avant d'installer une image avec Helm, affichez le fichier values.yaml Helm pour déterminer l'emplacement de l'image. Par exemple, le fichier values.yaml pour l'assistant de métriques Amazon VPC CNI plugin for Kubernetes comprend les lignes suivantes.

    image: region: us-west-2 tag: v1.12.6 account: "602401143452" domain: "amazonaws.com"
  3. Extrayez l'image conteneur spécifiée dans le fichier manifeste.

    1. Si vous extrayez des images d'un registre public, tel que la galerie publique Amazon ECR, vous pouvez passer à la sous-étape suivante, car l'authentification n'est pas requise. Dans cet exemple, vous vous authentifiez auprès d'un registre privé Amazon ECR contenant le référentiel pour l'image d'assistance des métriques CNI. Amazon EKS conserve l'image dans chaque registre répertorié dans Registres d'images de conteneur Amazon. Vous pouvez vous authentifier auprès de n'importe quel registre en remplaçant 602401143452 et region-code par les informations d'un registre différent. Un registre distinct existe pour chaque Région AWS dans laquelle Amazon EKS est pris en charge.

      aws ecr get-login-password --region region-code | docker login --username AWS --password-stdin 602401143452.dkr.ecr.region-code.amazonaws.com
    2. Extrayez l'image. Dans cet exemple, vous effectuez une extraction à partir du registre auquel vous vous êtes authentifié au cours de la sous-étape précédente. Remplacez 602401143452 et region-code par les informations que vous avez spécifiées lors de la sous-étape précédente.

      docker pull 602401143452.dkr.ecr.region-code.amazonaws.com/cni-metrics-helper:v1.12.6
  4. Étiquetez l'image que vous avez extraite avec votre registre, votre référentiel et votre identification. L'exemple suivant suppose que vous avez extrait l'image du fichier manifeste et que vous allez la transmettre au référentiel privé Amazon ECR que vous avez créé à la première étape. Remplacez 111122223333 par votre ID de compte. Remplacez region-code par la Région AWS dans laquelle vous avez créé votre référentiel privé Amazon ECR.

    docker tag cni-metrics-helper:v1.12.6 111122223333.dkr.ecr.region-code.amazonaws.com/cni-metrics-helper:v1.12.6
  5. Authentifiez auprès de votre registre. Dans cet exemple, vous vous authentifiez auprès du registre privé Amazon ECR que vous avez créé à la première étape. Pour plus d'informations, veuillez consulter Authentification de registre dans le Guide de l'utilisateur 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. Transmettez l'image à votre référentiel. Dans cet exemple, vous transmettez l'image au référentiel privé Amazon ECR que vous avez créé à la première étape. Pour plus d'informations, consultez Transmission d'une image Docker dans le Guide de l'utilisateur Amazon Elastic Container Registry.

    docker push 111122223333.dkr.ecr.region-code.amazonaws.com/cni-metrics-helper:v1.12.6
  7. Mettez à jour le fichier manifeste que vous avez utilisé pour déterminer l'image lors d'une étape précédente avec le registry/repository:tag pour l'image que vous avez transmise. Si vous installez avec les Charts de Helm, il existe souvent une option pour spécifier le fichier registry/repository:tag. Lors de l'installation du graphique, spécifiez le registry/repository:tag pour l'image que vous avez transmise à votre référentiel.