Migrer automatiquement de Container Registry vers Artifact Registry

Utilisez l'outil de migration automatique pour passer de Container Registry aux dépôts gcr.io hébergés sur Artifact Registry.

La migration vers les dépôts gcr.io Artifact Registry peut être effectuée sur les points de terminaison Container Registry qui reçoivent du trafic sans nécessiter de temps d'arrêt ni de perturbation du service.

L'outil de migration automatique peut effectuer les actions suivantes:

  • Créez des dépôts gcr.io dans Artifact Registry pour chacun de vos projets gcr.io listés dans la région correspondante.
  • Suggérez une stratégie IAM pour chaque dépôt et appliquez-la ou ignorez-la en fonction des préférences de l'utilisateur.
  • Rediriger tout le trafic provenant des points de terminaison gcr.io vers Artifact Registry.
  • Copiez toutes les images de conteneur stockées dans Container Registry vers vos dépôts gcr.io Artifact Registry, même si vous avez déjà activé la redirection.

Avant de commencer

  1. Install the Google Cloud CLI.
  2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. Enable the Artifact Registry API.

    Enable the API


    L'outil de migration automatique vous invite à activer l'API Artifact Registry si vous ignorez cette étape.

Rôles requis

Les rôles suivants sont requis pour passer aux dépôts gcr.io dans Artifact Registry à l'aide de l'outil de migration automatique.

Rôles de compte de service:

Vous pouvez utiliser le compte de service de migration gcr.io avec l'adresse e-mail de artifact-registry-same-project-copier@system.gserviceaccount.com ou le compte de service Artifact Registry pour passer aux dépôts gcr.io dans Artifact Registry.

Pour vous assurer que le compte de service que vous utilisez pour la migration dispose des autorisations nécessaires pour copier des images de Container Registry vers Artifact Registry, demandez à votre administrateur d'accorder au compte de service que vous utilisez pour la migration le rôle IAM Lecteur d'objets de l'espace de stockage (roles/storage.objectViewer) sur le projet, le dossier ou l'organisation Container Registry.

Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

Votre administrateur peut également attribuer au compte de service que vous utilisez pour la migration les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Rôles utilisateur:

Pour obtenir les autorisations nécessaires pour passer aux dépôts gcr.io hébergés sur Artifact Registry, demandez à votre administrateur de vous accorder le rôle IAM Administrateur de la migration du référentiel de conteneurs Artifact Registry (roles/artifactregistry.containerRegistryMigrationAdmin) sur l' Google Cloud organisation ou le projet que vous souhaitez migrer. Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Migrer vers des dépôts gcr.io hébergés sur Artifact Registry

Vous pouvez migrer un seul projet Google Cloud ou plusieurs projets Google Cloud en même temps à l'aide de la commande gcloud artifacts docker upgrade migrate.

Pour migrer vers des dépôts gcr.io, exécutez la commande suivante.

gcloud artifacts docker upgrade migrate \
    --projects=PROJECTS

PROJECTS est l'ID d'un seul projet que vous souhaitez migrer vers des dépôts gcr.io hébergés sur Artifact Registry, ou une liste d'ID de projet séparés par une virgule que vous souhaitez migrer vers des dépôts gcr.io hébergés sur Artifact Registry.

L'outil de migration effectue les étapes suivantes:

  • Crée des dépôts gcr.io dans Artifact Registry pour chacun de vos projets gcr.io listés dans la région correspondante.
  • Suggère une stratégie IAM pour chaque dépôt, puis applique la stratégie ou ignore l'application en fonction des préférences de l'utilisateur.
  • Redirige tout le trafic du point de terminaison gcr.io vers Artifact Registry. Artifact Registry diffuse temporairement les images manquantes en les copiant depuis Container Registry au moment de la requête jusqu'à ce que toutes les images de conteneur soient copiées vers Artifact Registry.
  • Copier toutes les images de conteneur stockées dans vos buckets gcr.io dans les dépôts gcr.io nouvellement créés hébergés sur Artifact Registry
  • Désactive la copie au moment de la requête. Le dépôt gcr.io hébergé sur Artifact Registry ne dépend plus de Container Registry.

Si vous ne souhaitez copier que les images extraites de Container Registry au cours des 30 à 180 derniers jours, vous pouvez inclure l'indicateur --recent-images=DAYS. Remplacez DAYS par le nombre de jours (compris entre 30 et 180) pendant lesquels l'outil doit rechercher des extractions.

Si vous souhaitez copier un nombre spécifique de versions récemment importées de chaque image, vous pouvez inclure l'indicateur --last-uploaded-versions=VERSIONS. Remplacez VERSIONS par le nombre de versions que vous souhaitez copier pour chaque image. Si de nouvelles images sont importées pendant la copie, le nombre de versions spécifié peut être dépassé.

L'option --recent-images et l'option --last-uploaded-versions sont mutuellement exclusives et ne peuvent pas être utilisées ensemble.

Si vous rencontrez des erreurs ou des expirations de délai, vous pouvez réexécuter la commande en toute sécurité, et les étapes terminées sont ignorées.

Migrer plus lentement avec les lectures Canary

Vous pouvez utiliser l'indicateur --canary-reads pour ne déployer qu'un pourcentage de lectures, et aucune écriture, dans Artifact Registry. Les images manquantes extraites d'Artifact Registry sont copiées depuis Container Registry au moment de la requête.

La migration avec des lectures Canary présente deux avantages:

  • Le déploiement dans Artifact Registry peut d'abord être testé sur un nombre beaucoup plus faible de requêtes.
  • Les images sont toujours transférées vers Container Registry pendant la majeure partie du processus. Il est donc plus sûr de revenir en arrière.

Nous vous recommandons de suivre la procédure suivante:

  1. Pour définir le pourcentage de lectures de canari sur 1 %, exécutez la commande suivante:

    gcloud artifacts docker upgrade migrate \
        --projects=PROJECTS \
        --canary-reads=1
    
  2. Vérifiez que tout fonctionne toujours correctement.

  3. Pour définir le pourcentage de lectures de canari sur 10 %, exécutez la commande suivante :

    gcloud artifacts docker upgrade migrate \
        --projects=PROJECTS \
        --canary-reads=10
    
  4. Vérifiez que tout fonctionne toujours correctement.

  5. Pour définir les lectures de canari sur 100 %, exécutez la commande suivante:

    gcloud artifacts docker upgrade migrate \
        --projects=PROJECTS \
        --canary-reads=100
    

À ce stade, toutes les lectures sont envoyées à Artifact Registry et toutes les écritures sont toujours envoyées à Container Registry.

Pour effectuer la migration, envoyez également des écritures vers Artifact Registry en exécutant la commande artifacts docker upgrade migrate sans l'option --canary-reads:

gcloud artifacts docker upgrade migrate \
    --projects=PROJECTS

Effectuer un rollback des lectures Canary

Pour annuler les lectures de canari, exécutez la commande suivante:

gcloud artifacts docker upgrade migrate \
    --projects=PROJECTS \
    --canary-reads=0

Les lectures Canary sont également désactivées lorsque vous exécutez les commandes gcloud artifacts settings disable-upgrade-redirection ou gcloud artifacts settings enable-upgrade-redirection.

Quota AnalyzeIamPolicy

Si vous migrez un grand nombre de projets et que vous n'avez plus de quotas d'analyse des stratégies IAM, vous pouvez utiliser l'indicateur --no-use-analyze-iam. L'utilisation de l'indicateur --no-use-analyze-iam pour la migration est plus lente que sans l'utiliser, mais évite d'envoyer des requêtes sur le quota AnalyzeIamPolicy.

Étape suivante