Transizione ai repository standard

Se attualmente utilizzi Container Registry per gestire le immagini container, questa pagina spiega come configurare un repository Artifact Registry standard e in che modo l'utilizzo dei repository si differenzia da quello di Container Registry.

Queste istruzioni sono rivolte principalmente agli amministratori del repository. Per scoprire come sono cambiate la creazione, il push, il pull e il deployment delle immagini, consulta le seguenti informazioni:

Prima di iniziare

  1. Abilita l'API Artifact Registry dalla console Google Cloud o con il comando:

    gcloud services enable artifactregistry.googleapis.com
    
  2. Installa gcloud CLI, se non è già installato. Per un'installazione esistente, esegui questo comando per aggiornare i componenti alle versioni più recenti:

    gcloud components update
    
  3. Scopri di più sui pricing di Artifact Registry prima di iniziare la transizione.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per configurare i repository gcr.io, chiedi all'amministratore di concederti i seguenti ruoli IAM sul progetto Google Cloud:

  • Per creare repository Artifact Registry e concedere l'accesso a singoli repository: Amministratore di Artifact Registry (roles/artifactregistry.admin)
  • Per visualizzare e gestire la configurazione esistente di Container Registry applicata ai bucket di archiviazione di Cloud Storage: Amministratore Storage (roles/storage.admin)
  • Per concedere l'accesso al repository a livello di progetto: Amministratore IAM progetto (roles/resourcemanager.projectIamAdmin) o un ruolo che include autorizzazioni equivalenti, come Amministratore cartelle (roles/resourcemanager.folderAdmin) o Amministratore organizzazione (roles/resourcemanager.organizationAdmin)

Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

Potresti anche essere in grado di ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Panoramica

I repository standard sono normali repository Artifact Registry che supportano tutte le funzionalità.

Per semplicità, le istruzioni in questa pagina presuppongono che Container Registry e Artifact Registry si trovino nello stesso progetto Google Cloud. Puoi continuare a utilizzare entrambi i servizi durante la transizione ad Artifact Registry, in modo da poter eseguire gradualmente i passaggi di configurazione e aggiornare l'automazione. Se necessario, puoi configurare Artifact Registry in un progetto separato ed eseguire gli stessi passaggi complessivi.

Artifact Registry offre anche repository gcr.io. Questi repository possono reindirizzare il traffico gcr.io dai registry esistenti ai repository Artifact Registry corrispondenti. Forniscono una certa compatibilità con le versioni precedenti con Container Registry, ma presentano anche alcune limitazioni di funzionalità. Tuttavia, se hai molte configurazioni degli strumenti, script o codice con riferimenti gcr.io, potrebbe essere necessario un approccio più tattico per passare ad Artifact Registry. Consulta la documentazione sulla transizione relativa ai repository con assistenza per i domini gcr.io per prendere una decisione appropriata.

Passaggi per la transizione

Questa guida illustra come completare i seguenti passaggi:

  1. Crea un repository Docker per i tuoi container. Prima di eseguire il push delle immagini, devi creare un repository.
  2. Concedi le autorizzazioni al repository.
  3. Configura l'autenticazione in modo da poterti connettere con il nuovo repository.
  4. Se necessario, copia da Container Registry le immagini che vuoi utilizzare nel nuovo repository.
  5. Prova a eseguire il push e il pull dei container.
  6. Prova a eseguire il deployment delle immagini in un ambiente di runtime.
  7. Configura le funzionalità aggiuntive.
  8. Esegui la pulizia delle immagini in Container Registry al termine della transizione.

Crea repository

Container Registry crea automaticamente un bucket di archiviazione in una multiregione se non hai mai eseguito il push di un'immagine lì.

In Artifact Registry, devi creare un repository prima di poter caricare immagini. Quando crei un repository devi specificare:

  • Il formato del repository. Artifact Registry archivia i container in repository Docker.
  • Una località a una o più regioni per il repository.

    Quando scegli una località per i tuoi repository Artifact Registry, considera la vicinanza dei repository rispetto all'altra infrastruttura e ai tuoi utenti. Se intendi copiare immagini da Container Registry ad Artifact Registry, le differenze nella località possono influire sul costo della copia.

  • Una chiave Cloud Key Management Service, se utilizzi chiavi di crittografia gestite dal cliente (CMEK) per la crittografia.

    In Container Registry, configuri il bucket di archiviazione di Container Registry per l'utilizzo di CMEK. In Artifact Registry, configuri i repository in modo che utilizzino CMEK al momento della creazione. Per saperne di più sull'utilizzo di CMEK con Artifact Registry, consulta Abilitazione delle chiavi di crittografia gestite dal cliente.

Container Registry ospita i container nel dominio gcr.io. Artifact Registry ospita i container sul dominio pkg.dev.

Per informazioni sulla creazione dei repository, inclusi quelli che utilizzano CMEK per la crittografia, consulta la pagina Creazione dei repository.

Concedi le autorizzazioni

Container Registry utilizza i ruoli di Cloud Storage per controllare l'accesso. Artifact Registry dispone di ruoli IAM propri e questi ruoli separano i ruoli di lettura, scrittura e amministrazione del repository in modo più chiaro rispetto a Container Registry.

Per mappare rapidamente le autorizzazioni esistenti concesse sui bucket di archiviazione ai ruoli di Artifact Registry suggeriti, utilizza lo strumento di mappatura dei ruoli.

In alternativa, puoi visualizzare un elenco di entità con accesso ai bucket di archiviazione utilizzando la console Google Cloud.

  1. Nella console Google Cloud, vai alla pagina Bucket di Cloud Storage.

    Vai a Bucket

  2. Fai clic sul bucket di archiviazione relativo all'host del registro che vuoi visualizzare. Nei nomi dei bucket, PROJECT-ID è l'ID progetto Google Cloud.

    • gcr.io: artifacts.PROJECT-ID.appspot.com
    • asia.gcr.io: asia.artifacts.PROJECT-ID.appspot.com
    • eu.gcr.io: eu.artifacts.PROJECT-ID.appspot.com
    • us.gcr.io: us.artifacts.PROJECT-ID.appspot.com
  3. Fai clic sulla scheda Autorizzazioni.

  4. Nella scheda Autorizzazioni, fai clic sulla scheda secondaria Visualizza per ruolo.

  5. Espandi un ruolo per visualizzare le entità che lo hanno.

L'elenco include i ruoli IAM concessi direttamente nel bucket e i ruoli ereditati dal progetto padre. In base al ruolo, puoi scegliere il ruolo Artifact Registry più appropriato da concedere.

Cloud Storage e ruoli di base

Concedi agli utenti e agli account di servizio che attualmente accedono a Container Registry con accesso ai repository Artifact Registry. Per i ruoli Cloud Storage ereditati dal progetto padre, devi verificare che l'entità utilizzi attualmente Container Registry. Alcune entità potrebbero accedere solo ad altri bucket Cloud Storage non correlati a Container Registry.

I ruoli di base Proprietario, Editor e Visualizzatore esistenti prima di IAM hanno accesso limitato ai bucket di archiviazione. Non offrono intrinsecamente tutti gli accessi alle risorse Cloud Storage implicati dal loro nome, né forniscono autorizzazioni aggiuntive per altri servizi Google Cloud. Verifica quali utenti e account di servizio richiedono l'accesso ad Artifact Registry e utilizza la tabella di mappatura dei ruoli per concedere i ruoli appropriati se l'accesso ad Artifact Registry è appropriato.

La seguente tabella mappa i ruoli Artifact Registry in base alle autorizzazioni concesse dai ruoli Cloud Storage predefiniti per l'accesso a Container Registry. I ruoli di Artifact Registry offrono un'ulteriore separazione delle autorizzazioni che non è disponibile nei ruoli predefiniti di Cloud Storage.

Accesso richiesto Ruolo attuale Ruolo Artifact Registry Dove concedere il ruolo
Estrai solo immagini (sola lettura) Visualizzatore oggetti Storage
(roles/storage.objectViewer)
Lettore Artifact Registry
(roles/artifactregistry.reader)
Repository Artifact Registry o progetto Google Cloud
Esegui il push e il pull delle immagini (lettura e scrittura) Writer bucket legacy di Storage
(roles/storage.legacyBucketWriter)
Writer Artifact Registry
(roles/artifactregistry.writer)
Repository Artifact Registry o progetto Google Cloud
Esegui il push, il pull ed l'eliminazione delle immagini Writer bucket legacy di Storage
(roles/storage.legacyBucketWriter)
Amministratore repository Artifact Registry
(roles/artifactregistry.repoAdmin)
Repository Artifact Registry o progetto Google Cloud
Creare, gestire ed eliminare i repository Amministratore Storage
(roles/storage.admin)
Amministratore di Artifact Registry
(roles/artifactregistry.Admin)
Progetto Google Cloud
Ruoli dell'agente di servizio ereditati dal progetto

Gli account di servizio predefiniti per i servizi Google Cloud hanno i propri ruoli concessi a livello di progetto. Ad esempio, l'agente di servizio per Cloud Run ha il ruolo Agente di servizio Cloud Run.

Nella maggior parte dei casi, questi ruoli degli agenti di servizio contengono autorizzazioni predefinite equivalenti per Container Registry e Artifact Registry e non è necessario apportare ulteriori modifiche se esegui Artifact Registry nello stesso progetto del servizio Container Registry esistente.

Per maggiori dettagli sulle autorizzazioni nei ruoli di agente di servizio, consulta la documentazione sul ruolo di agente di servizio.

Ruoli personalizzati

Utilizza la tabella di mappatura dei ruoli per decidere il ruolo da concedere a utenti o account di servizio in base al livello di accesso richiesto.

Per istruzioni sulla concessione dei ruoli Artifact Registry, consulta Configurare ruoli e autorizzazioni.

Autenticazione nel repository

Artifact Registry supporta gli stessi metodi di autenticazione di Container Registry.

Se utilizzi l'helper delle credenziali Docker:

  • Devi utilizzare la versione 2.0 o successive per interagire con i repository Artifact Registry. La versione autonoma è disponibile in GitHub.
  • Devi configurare l'helper delle credenziali con le località Artifact Registry che intendi utilizzare. Per impostazione predefinita, l'helper per le credenziali configura solo l'accesso agli host di Container Registry.

Per maggiori dettagli sulla configurazione dell'autenticazione, consulta Configurazione dell'autenticazione per Docker.

Copia container da Container Registry

Se in Container Registry sono presenti container che vuoi continuare a utilizzare in Artifact Registry, hai varie opzioni per copiarli. Per istruzioni dettagliate, consulta Copia di immagini da Container Registry

Esegui il push e il pull delle immagini

I comandi Docker che utilizzi per eseguire il tagging, il push e il pull delle immagini in Artifact Registry sono simili a quelli che utilizzi in Container Registry. Esistono due differenze fondamentali:

  • Il nome host per i repository Docker di Artifact Registry include un prefisso di località, seguito da -docker.pkg.dev. Alcuni esempi sono australia-southeast1-docker.pkg.dev, europe-north1-docker.pkg.dev e europe-docker.pkg.dev.
  • Poiché Artifact Registry supporta più repository Docker in un singolo progetto, devi specificare il nome del repository nei comandi.

Ad esempio, in Container Registry, questo comando esegue il push dell'immagine my-image al registro eu.gcr.io nel progetto my-project.

docker push eu.gcr.io/my-project/my-image

In Artifact Registry, questo comando esegue il push dell'immagine my-image nel repository regionale europe-north1-docker.pkg.dev nel repository my-repo e nel progetto my-project.

docker push europe-north1-docker.pkg.dev/my-project/my-repo/my-image

Per maggiori dettagli su come eseguire il push e il pull delle immagini in Artifact Registry, consulta Push e pull delle immagini.

Esegui il deployment delle immagini

Gli account di servizio per le integrazioni comuni di Google Cloud sono configurati con autorizzazioni predefinite per i repository nello stesso progetto.

Creare immagini ed eseguirne il push in un repository con Cloud Build solitamente funziona come per Container Registry. La differenza principale in Artifact Registry è che deve esistere un repository di destinazione prima di eseguire il push delle immagini, inclusa la prima immagine di cui esegui il push.

Assicurati di creare i repository di cui hai bisogno prima di eseguire i comandi che eseguono il push delle immagini, inclusi il comando Docker docker push e il comando Cloud Build gcloud builds submit.

I builder di Cloud Build sono ancora ospitati su gcr.io. Per ulteriori informazioni, consulta la pagina relativa all'integrazione con Cloud Build.

Altre funzioni

Questa sezione descrive la configurazione di altre funzionalità che potresti aver impostato in Container Registry.

Artifact Analysis

Artifact Analysis supporta sia Container Registry che Artifact Registry. La documentazione di Artifact Analysis include entrambi i prodotti.

  • Entrambi i prodotti utilizzano le stesse API Artifact Analysis. Quando abiliti le API Artifact Analysis in Container Registry o Artifact Registry, le API vengono attivate per entrambi i prodotti.
  • Entrambi i prodotti utilizzano gli stessi argomenti Pub/Sub per le notifiche di Artifact Analysis.
  • Puoi continuare a utilizzare i comandi gcloud container images per elencare note e occorrenze associate ai percorsi delle immagini gcr.io.
Container Registry Artifact Registry
Analisi delle vulnerabilità del sistema operativo e dei pacchetti di linguaggio con l'analisi on demand nelle immagini con un sistema operativo supportato. La scansione automatica restituisce solo informazioni sulle vulnerabilità del sistema operativo. Scopri di più sui tipi di analisi.
Analisi on demand
Scansione automatica
  • Il comando Google Cloud CLI gcloud container images include flag per visualizzare i risultati della scansione, tra cui vulnerabilità e altri metadati.
  • Le analisi restituiscono solo informazioni sulle vulnerabilità del sistema operativo per le immagini in Container Registry con sistemi operativi supportati.
Analisi delle vulnerabilità dei pacchetti di sistemi operativi e linguaggi con analisi sia on demand che automatica. Scopri di più sui tipi di analisi.
Analisi on demand
Scansione automatica
  • Il comando gcloud artefatti docker images di Google Cloud include flag per visualizzare i risultati della scansione, tra cui vulnerabilità e altri metadati.
  • Le analisi restituiscono informazioni sulle vulnerabilità del sistema operativo per le immagini in Artifact Registry con sistemi operativi supportati e informazioni sulle vulnerabilità dei pacchetti di linguaggio per i sistemi operativi supportati e non supportati.

Notifiche Pub/Sub

Artifact Registry pubblica modifiche allo stesso argomento gcr di Container Registry. Non è necessaria alcuna configurazione aggiuntiva se utilizzi già Pub/Sub con Container Registry nello stesso progetto di Artifact Registry.

Se configuri Artifact Registry in un progetto separato, l'argomento gcr potrebbe non esistere. Per le istruzioni di configurazione, consulta Configurazione delle notifiche Pub/Sub.

Perimetri di servizio

Con Controlli di servizio VPC, puoi configurare i perimetri di sicurezza intorno alle risorse dei tuoi servizi gestiti da Google e controllare lo spostamento dei dati oltre il confine del perimetro.

Per le istruzioni, consulta Protezione dei repository in un perimetro di servizio.

Esegui la pulizia delle immagini di Container Registry

Quando è tutto pronto per interrompere l'utilizzo di Container Registry, elimina le immagini rimanenti eliminando i bucket di archiviazione per Container Registry.

Per eliminare ogni bucket di archiviazione di Container Registry:

Console

  1. Vai alla pagina di Cloud Storage nella console Google Cloud.
  2. Seleziona il bucket di archiviazione da eliminare. Nei nomi dei bucket, PROJECT-ID è il tuo ID progetto Google Cloud.

    • gcr.io: artifacts.PROJECT-ID.appspot.com
    • asia.gcr.io: asia.artifacts.PROJECT-ID.appspot.com
    • eu.gcr.io: eu.artifacts.PROJECT-ID.appspot.com
    • us.gcr.io: us.artifacts.PROJECT-ID.appspot.com
  3. Fai clic su Elimina. Viene visualizzata una finestra di dialogo di conferma.

  4. Per confermare l'eliminazione, inserisci il nome del bucket e fai clic su Elimina.

gsutil

Se vuoi eliminare in blocco almeno centomila immagini in un bucket, evita di utilizzare gsutil poiché il processo di eliminazione richiede molto tempo. Utilizza la console Google Cloud per eseguire l'operazione.

Per eliminare un bucket, usa il comando gsutil rm con il flag -r.

gsutil rm -r gs://BUCKET-NAME

Sostituisci BUCKET-NAME con il nome del bucket di archiviazione di Container Registry. Nei nomi dei bucket, PROJECT-ID è l'ID progetto Google Cloud.

  • gcr.io: artifacts.PROJECT-ID.appspot.com
  • asia.gcr.io: asia.artifacts.PROJECT-ID.appspot.com
  • eu.gcr.io: eu.artifacts.PROJECT-ID.appspot.com
  • us.gcr.io: us.artifacts.PROJECT-ID.appspot.com

La risposta è simile al seguente esempio:

Removing gs://artifacts.my-project.appspot.com/...

Se altri servizi Google Cloud sono in esecuzione nello stesso progetto Google Cloud, lascia abilitata l'API Container Registry. Se provi a disabilitare l'API Container Registry. Container Registry mostra un avviso se nel progetto sono abilitati altri servizi con una dipendenza configurata. La disattivazione dell'API Container Registry disattiva automaticamente tutti i servizi nello stesso progetto con una dipendenza configurata, anche se non stai attualmente utilizzando Container Registry con quei servizi.

Passaggi successivi