Eseguire la migrazione automatica da Container Registry ad Artifact Registry

Utilizza lo strumento di migrazione automatica per passare 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 di Container Registry che ricevono traffico senza richiedere tempi di riposo o interruzione del servizio.

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

  • Crea repository gcr.io in Artifact Registry per ciascuno dei progetti gcr.io elencati nella regione corrispondente.
  • Suggerire un criterio IAM per ogni repository e applicarlo o saltare l'applicazione in base alle preferenze dell'utente.
  • Reindirizza tutto il traffico dagli endpoint gcr.io ad Artifact Registry.
  • Copia tutte le immagini container archiviate in Container Registry nei tuoi 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


    Lo strumento di migrazione automatica ti chiede di abilitare l'API Artifact Registry se salti questo passaggio.

Ruoli obbligatori

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

Ruoli dell'account di servizio:

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 l'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 all'account di servizio che utilizzi per la migrazione il ruolo IAM Visualizzatore oggetti archiviazione (roles/storage.objectViewer) per il progetto, la cartella o l'organizzazione Container Registry.

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

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

Ruoli utente:

Per ottenere le autorizzazioni necessarie per eseguire la transizione ai repository gcr.io ospitati su Artifact Registry, chiedi all'amministratore di concederti il ruolo IAM Amministratore della migrazione di Container Registry in Artifact Registry (roles/artifactregistry.containerRegistryMigrationAdmin) nell' Google Cloud organizzazione o nel progetto di cui vuoi eseguire la migrazione. Per ulteriori informazioni sulla concessione dei ruoli, consulta Gestire 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 Google Cloud progetto o di più Google Cloud progetti contemporaneamente utilizzando il comando gcloud artifacts docker upgrade migrate.

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

gcloud artifacts docker upgrade migrate \
    --projects=PROJECTS

dove PROJECTS è l'ID di un singolo progetto di cui vuoi eseguire la migrazione ai repository gcr.io ospitati su Artifact Registry o un elenco di ID progetto separati da virgole di cui vuoi eseguire la migrazione 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 progetti gcr.io elencati nella regione corrispondente.
  • Suggerisce un criterio IAM per ogni repository e lo applica o ne salta l'applicazione in base alle 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 dei container non vengono copiate in Artifact Registry.
  • Copia tutte le immagini container archiviate nei 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 pull.

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 da copiare per ogni immagine. Se durante la copia vengono caricate nuove immagini, potrebbe essere copiato più del numero di versioni specificate.

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

Se si verificano errori o timeout, puoi riavviare 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 implementare solo 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 canarie presenta due vantaggi:

  • L'implementazione in Artifact Registry può essere testata prima 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 la seguente procedura:

  1. Per impostare la percentuale di letture canary su 1%, esegui il seguente 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 sul 10%, esegui il seguente comando :

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

  5. Per impostare le letture canary sul 100%, esegui il seguente 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 il seguente comando:

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

Le letture Canary vengono disattivate anche quando vengono eseguiti i comandi gcloud artifacts settings disable-upgrade-redirection o gcloud artifacts settings enable-upgrade-redirection.

Quota di AnalyzeIamPolicy

Se esegui la migrazione di un numero elevato di progetti e non hai più 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 non utilizzarlo, ma evita di inviare richieste in base alla quota di AnalyzeIamPolicy.

Passaggi successivi