Automatische Migration von Container Registry zu Artifact Registry

Mit dem automatischen Migrationstool können Sie von Container Registry zu gcr.io-Repositories migrieren, die in Artifact Registry gehostet werden.

Die Migration zu Artifact Registry gcr.io-Repositories kann für Container Registry-Endpunkte durchgeführt werden, die Traffic empfangen, ohne dass Ausfallzeiten oder Dienstunterbrechungen erforderlich sind.

Das automatische Migrationstool kann die folgenden Aktionen ausführen:

  • Erstellen Sie in Artifact Registry gcr.io-Repositories für jedes Ihrer aufgeführten gcr.io-Projekte in der entsprechenden Region.
  • Für jedes Repository wird eine IAM-Richtlinie vorgeschlagen. Je nach Nutzereinstellung wird die Richtlinie angewendet oder die Anwendung wird übersprungen.
  • Leiten Sie den gesamten Traffic von gcr.io-Endpunkten an Artifact Registry weiter.
  • Kopieren Sie alle in Container Registry gespeicherten Container-Images in Ihre gcr.io-Repositories in Artifact Registry, auch wenn Sie die Weiterleitung bereits aktiviert haben.

Hinweise

  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


    Das automatische Migrationstool fordert Sie auf, die Artifact Registry API zu aktivieren, wenn Sie diesen Schritt überspringen.

Erforderliche Rollen

Die folgenden Rollen sind für die Umstellung auf gcr.io-Repositories in Artifact Registry mit dem automatischen Migrationstool erforderlich.

Dienstkontorollen:

Sie können das gcr.io-Migrationsdienstkonto mit der E-Mail-Adresse artifact-registry-same-project-copier@system.gserviceaccount.com oder das Artifact Registry-Dienstkonto verwenden, um zu gcr.io-Repositories in Artifact Registry zu migrieren.

Damit das Dienstkonto, das Sie für die Migration verwenden, die erforderlichen Berechtigungen zum Kopieren von Bildern aus Container Registry in Artifact Registry hat, bitten Sie Ihren Administrator, dem Dienstkonto, das Sie für die Migration verwenden, die IAM-Rolle Storage-Objekt-Betrachter (roles/storage.objectViewer) für das Container Registry-Projekt, den Ordner oder die Organisation zuzuweisen.

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Ihr Administrator kann dem Dienstkonto, das Sie für die Migration verwenden, möglicherweise auch die erforderlichen Berechtigungen über benutzerdefinierte Rollen oder andere vordefinierte Rollen erteilen.

Nutzerrollen:

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Artifact Registry Container Registry Migration Admin (roles/artifactregistry.containerRegistryMigrationAdmin) für die Google Cloud Organisation oder das Projekt zuzuweisen, die Sie migrieren möchten, um die Berechtigungen zu erhalten, die Sie für die Migration zu gcr.io-Repositories benötigen, die in Artifact Registry gehostet werden. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Zu gcr.io-Repositories migrieren, die in Artifact Registry gehostet werden

Sie können ein einzelnes Google Cloud Projekt oder mehrere Google Cloud Projekte gleichzeitig mit dem Befehl gcloud artifacts docker upgrade migrate migrieren.

Führen Sie den folgenden Befehl aus, um zu gcr.io-Repositories zu migrieren.

gcloud artifacts docker upgrade migrate \
    --projects=PROJECTS

Dabei ist PROJECTS die Projekt-ID eines einzelnen Projekts, das Sie zu gcr.io-Repositories migrieren möchten, die in Artifact Registry gehostet werden, oder eine durch Kommas getrennte Liste von Projekt-IDs, die Sie zu gcr.io-Repositories migrieren möchten, die in Artifact Registry gehostet werden.

Das Migrationstool führt die folgenden Schritte aus:

  • Erstellt gcr.io-Repositories in Artifact Registry für jedes Ihrer aufgeführten gcr.io-Projekte in der entsprechenden Region.
  • Schlägt für jedes Repository eine IAM-Richtlinie vor und wendet die Richtlinie an oder überspringt die Anwendung, je nach Nutzereinstellung.
  • Leitet den gesamten Traffic vom gcr.io-Endpunkt an Artifact Registry weiter. Artifact Registry stellt fehlende Images vorübergehend bereit, indem sie zum Zeitpunkt der Anfrage aus Container Registry kopiert werden, bis alle Container-Images in Artifact Registry kopiert wurden.
  • Kopiert alle Container-Images, die in Ihren gcr.io-Buckets gespeichert sind, in die neu erstellten gcr.io-Repositories, die in Artifact Registry gehostet werden.
  • Deaktiviert das Kopieren zur Anfragezeit. Das in Artifact Registry gehostete gcr.io-Repository ist nicht mehr von Container Registry abhängig.

Wenn Sie nur Images kopieren möchten, die in den letzten 30 bis 180 Tagen aus Container Registry abgerufen wurden, können Sie das Flag --recent-images=DAYS einfügen. Ersetzen Sie DAYS durch die Anzahl der Tage zwischen 30 und 180, in denen das Tool nach Pulls suchen soll.

Wenn Sie eine bestimmte Anzahl der zuletzt hochgeladenen Versionen jedes Bildes kopieren möchten, können Sie das Flag --last-uploaded-versions=VERSIONS einfügen. Ersetzen Sie VERSIONS durch die Anzahl der Versionen, die Sie für jedes Bild kopieren möchten. Wenn während des Kopierens neue Bilder hochgeladen werden, werden möglicherweise mehr Versionen als angegeben kopiert.

Das Flag --recent-images und das Flag --last-uploaded-versions schließen sich gegenseitig aus und können nicht zusammen verwendet werden.

Wenn Fehler oder Zeitüberschreitungen auftreten, können Sie den Befehl gefahrlos noch einmal ausführen. Abgeschlossene Schritte werden übersprungen.

Langsamere Migration mit Canary-Lesevorgängen

Mit dem Flag --canary-reads können Sie nur einen bestimmten Prozentsatz von Lesevorgängen und keine Schreibvorgänge für Artifact Registry einführen. Fehlende Images, die aus Artifact Registry abgerufen werden, werden zum Zeitpunkt der Anfrage aus Container Registry kopiert.

Die Migration mit Canary-Lesevorgängen hat zwei Vorteile:

  • Die Einführung in Artifact Registry kann zuerst mit einer viel kleineren Anzahl von Anfragen getestet werden.
  • Images werden während des größten Teils des Prozesses weiterhin in Container Registry übertragen. Daher ist es sicherer, ein Rollback durchzuführen.

Wir empfehlen folgendes Vorgehen:

  1. Führen Sie den folgenden Befehl aus, um den Prozentsatz der Canary-Lesevorgänge auf 1 % festzulegen:

    gcloud artifacts docker upgrade migrate \
        --projects=PROJECTS \
        --canary-reads=1
    
  2. Prüfen Sie, ob alles noch richtig funktioniert.

  3. Führen Sie den folgenden Befehl aus, um den Prozentsatz der Canary-Lesevorgänge auf 10 % festzulegen :

    gcloud artifacts docker upgrade migrate \
        --projects=PROJECTS \
        --canary-reads=10
    
  4. Prüfen Sie, ob alles noch richtig funktioniert.

  5. Führen Sie den folgenden Befehl aus, um Canary-Lesevorgänge auf 100 % festzulegen:

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

An diesem Punkt werden alle Lesevorgänge an Artifact Registry und alle Schreibvorgänge weiterhin an Container Registry gesendet.

Um die Migration abzuschließen, müssen Sie auch Schreibvorgänge an Artifact Registry senden. Führen Sie dazu den Befehl artifacts docker upgrade migrate ohne das Flag --canary-reads aus:

gcloud artifacts docker upgrade migrate \
    --projects=PROJECTS

Canary-Lesevorgänge zurücksetzen

Führen Sie den folgenden Befehl aus, um Canary-Lesevorgänge rückgängig zu machen:

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

Canary-Lesevorgänge sind auch deaktiviert, wenn die Befehle gcloud artifacts settings disable-upgrade-redirection oder gcloud artifacts settings enable-upgrade-redirection ausgeführt werden.

Kontingent für AnalyzeIamPolicy

Wenn Sie eine große Anzahl von Projekten migrieren und das AnalyzeIamPolicy-Kontingent aufgebraucht ist, können Sie das Flag --no-use-analyze-iam verwenden. Die Verwendung des Flags --no-use-analyze-iam für die Migration ist langsamer als ohne, aber es werden keine Anfragen an das Kontingent „AnalyzeIamPolicy“ gesendet.

Nächste Schritte