Eseguire la migrazione automatica da Container Registry ad Artifact Registry

Utilizza lo strumento di migrazione automatica per eseguire la transizione da Container Registry ai repository gcr.io ospitati su Artifact Registry.

La migrazione ai repository di Artifact Registry gcr.io può essere eseguita sugli endpoint Container Registry che ricevono traffico senza richiedere tempi di inattività o interruzioni del servizio.

Lo strumento di migrazione automatica può eseguire le seguenti azioni:

  • Crea repository gcr.io in Artifact Registry per ciascuno dei tuoi progetti gcr.io elencati nella regione corrispondente.
  • Suggerisci un criterio IAM per ogni repository e applicalo o salta l'applicazione a seconda delle preferenze dell'utente.
  • Reindirizza tutto il traffico dagli endpoint gcr.io ad Artifact Registry.
  • Copia tutte le immagini container archiviate in Container Registry nei repository Artifact Registrygcr.io, anche se hai già attivato il reindirizzamento.

Prima di iniziare

  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


    Se ignori questo passaggio, lo strumento di migrazione automatica ti chiede di abilitare l'API Artifact Registry.

Ruoli obbligatori

Per la transizione ai repository gcr.io in Artifact Registry utilizzando lo strumento di migrazione automatica, sono necessari i seguenti ruoli.

Ruoli del service account:

Puoi utilizzare l'account di servizio di migrazione gcr.io con l'indirizzo email di artifact-registry-same-project-copier@system.gserviceaccount.com o l'account di servizio Artifact Registry per eseguire la transizione ai repository gcr.io in Artifact Registry.

Per assicurarti che il account di servizio che utilizzi per la migrazione disponga delle autorizzazioni necessarie per copiare le immagini da Container Registry ad Artifact Registry, chiedi all'amministratore di concedere al account di servizio che utilizzi per la migrazione il ruolo IAM Visualizzatore oggetti Storage (roles/storage.objectViewer) nel progetto, nella cartella o nell'organizzazione Container Registry.

Per ulteriori informazioni sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

L'amministratore potrebbe anche essere in grado di concedere al account di servizio che utilizzi per la migrazione le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Ruoli utente:

Per ottenere le autorizzazioni necessarie per la transizione ai repository gcr.io ospitati su Artifact Registry, chiedi all'amministratore di concederti il ruolo IAM Artifact Registry Container Registry Migration Admin (roles/artifactregistry.containerRegistryMigrationAdmin) nell'organizzazione o nel progetto che vuoi migrare. Google Cloud Per saperne di più sull'assegnazione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Esegui la migrazione ai repository gcr.io ospitati su Artifact Registry

Puoi eseguire la migrazione di un singolo progetto Google Cloud o di più progetti Google Cloud contemporaneamente utilizzando il comando gcloud artifacts docker upgrade migrate.

Per eseguire la migrazione ai repository gcr.io, esegui il comando seguente.

gcloud artifacts docker upgrade migrate \
    --projects=PROJECTS

Dove PROJECTS è l'ID progetto di un singolo progetto che vuoi migrare ai repository gcr.io ospitati su Artifact Registry o un elenco separato da virgole di ID progetto che vuoi migrare ai repository gcr.io ospitati su Artifact Registry.

Lo strumento di migrazione completa i seguenti passaggi:

  • Crea repository gcr.io in Artifact Registry per ciascuno dei tuoi progetti gcr.io elencati nella regione corrispondente.
  • Suggerisce un criterio IAM per ogni repository e applica il criterio o ne salta l'applicazione a seconda delle preferenze dell'utente.
  • Reindirizza tutto il traffico dall'endpoint gcr.io ad Artifact Registry. Artifact Registry pubblica temporaneamente le immagini mancanti copiandole da Container Registry al momento della richiesta finché tutte le immagini container non vengono copiate in Artifact Registry.
  • Copia tutte le immagini container archiviate nei tuoi bucket gcr.io nei repository gcr.io appena creati ospitati su Artifact Registry.
  • Disattiva la copia al momento della richiesta. Il repository gcr.io ospitato su Artifact Registry non dipende più da Container Registry.

Se vuoi copiare solo le immagini estratte da Container Registry negli ultimi 30-180 giorni, puoi includere il flag --recent-images=DAYS. Sostituisci DAYS con il numero di giorni, compreso tra 30 e 180, entro i quali lo strumento deve verificare la presenza di ritiri.

Se vuoi copiare un numero specifico di versioni caricate di recente di ogni immagine, puoi includere il flag --last-uploaded-versions=VERSIONS. Sostituisci VERSIONS con il numero di versioni che vuoi copiare per ogni immagine. Se vengono caricate nuove immagini durante la copia, è possibile che venga copiato un numero di versioni superiore a quello specificato.

I flag --recent-images e --last-uploaded-versions si escludono a vicenda e non possono essere utilizzati insieme.

Se si verificano errori o timeout, puoi eseguire di nuovo il comando in tutta sicurezza e i passaggi completati vengono ignorati.

Esegui la migrazione più lentamente con le letture canary

Puoi utilizzare il flag --canary-reads per eseguire il rollout solo di una percentuale di letture e nessuna scrittura in Artifact Registry. Le immagini mancanti estratte da Artifact Registry vengono copiate da Container Registry al momento della richiesta.

La migrazione con letture canary presenta due vantaggi:

  • L'implementazione in Artifact Registry può essere testata su un numero molto inferiore di richieste.
  • Le immagini vengono comunque inviate a Container Registry durante la maggior parte del processo, quindi è più sicuro eseguire il rollback.

Ti consigliamo di procedere come segue:

  1. Per impostare la percentuale di letture canary all'1%, esegui questo comando:

    gcloud artifacts docker upgrade migrate \
        --projects=PROJECTS \
        --canary-reads=1
    
  2. Verifica che tutto funzioni ancora correttamente.

  3. Per impostare la percentuale di letture canary al 10%, esegui questo comando :

    gcloud artifacts docker upgrade migrate \
        --projects=PROJECTS \
        --canary-reads=10
    
  4. Verifica che tutto funzioni ancora correttamente.

  5. Per impostare le letture canary al 100%, esegui questo comando:

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

A questo punto, tutte le letture vengono inviate ad Artifact Registry e tutte le scritture vengono ancora inviate a Container Registry.

Per completare la migrazione, invia anche le scritture ad Artifact Registry eseguendo il comando artifacts docker upgrade migrate senza il flag --canary-reads:

gcloud artifacts docker upgrade migrate \
    --projects=PROJECTS

Esegui il rollback delle letture canary

Per eseguire il rollback delle letture canary, esegui questo comando:

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

La lettura canary è disattivata anche quando vengono eseguiti i comandi gcloud artifacts settings disable-upgrade-redirection o gcloud artifacts settings enable-upgrade-redirection.

Quota AnalyzeIamPolicy

Se esegui la migrazione di un numero elevato di progetti e esaurisci la quota AnalyzeIamPolicy, puoi utilizzare il flag --no-use-analyze-iam. L'utilizzo del flag --no-use-analyze-iam per la migrazione è più lento rispetto a quando non lo si utilizza, ma evita l'invio di richieste rispetto alla quota AnalyzeIamPolicy.

Passaggi successivi