Transizione ai repository standard

Se utilizzi Container Registry per gestire le immagini container, questa pagina spiega come configurare un repository pkg.dev Artifact Registry e in che modo l'utilizzo dei repository è diverso dall'utilizzo di Container Registry.

Queste istruzioni sono rivolte principalmente agli amministratori del repository. Per scoprire come sono cambiate le modalità di creazione, push, pull e 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 il seguente comando per aggiornare i componenti alle versioni più recenti:

    gcloud components update
    
  3. Scopri i prezzi 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 nel progetto Google Cloud:

  • Per creare repository Artifact Registry e concedere l'accesso ai singoli repository: Amministratore di Artifact Registry (roles/artifactregistry.admin)
  • Per visualizzare e gestire la configurazione esistente di Container Registry applicata ai bucket di archiviazione Cloud Storage: Amministratore di archiviazione (roles/storage.admin)
  • Per concedere l'accesso al repository a livello di progetto: Amministratore IAM del progetto (roles/resourcemanager.projectIamAdmin) o un ruolo che includa 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 a progetti, cartelle e organizzazioni.

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

Panoramica

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

Per semplicità, le istruzioni in questa pagina presuppongono che sia Container Registry sia 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 generali.

Artifact Registry offre anche repository gcr.io. Questi repository possono reindirizzare il traffico gcr.io dai tuoi registry esistenti ai repository Artifact Registry corrispondenti. Offrono una certa compatibilità con Container Registry, ma presentano anche alcune limitazioni delle funzionalità. Tuttavia, se hai molti script, configurazioni di strumenti o codice con riferimenti a gcr.io, potrebbe essere necessario un approccio più tattico per la transizione ad Artifact Registry. Esamina la documentazione relativa alla transizione per i repository con supporto per il dominio gcr.io per prendere una decisione appropriata.

Passaggi per la transizione

Questa guida ti spiega come completare i seguenti passaggi:

  1. Crea un repository Docker per i tuoi container. Devi creare un repository prima di poter eseguire il push delle immagini.
  2. Concedi le autorizzazioni al repository.
  3. Configura l'autenticazione per poterti connettere al nuovo repository.
  4. Se necessario, copia le immagini da Container Registry 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.

Creare repository

Container Registry crea automaticamente un bucket di archiviazione in una località a più regioni se non hai mai eseguito il push di un'immagine.

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

  • Il formato del repository. Artifact Registry archivia i container nei repository Docker.
  • Una località regionale o multiregionale per il repository.

    Quando scegli una posizione per i repository Artifact Registry, prendi in considerazione la vicinanza dei repository all'altra infrastruttura e ai tuoi utenti. Se intendi copiare le immagini da Container Registry ad Artifact Registry, le differenze di 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 in modo da utilizzareCMEK. In Artifact Registry, puoi configurare i repository per utilizzare CMEK quando li crei. Per saperne di più sull'utilizzo delle chiavi CMEK con Artifact Registry, consulta Attivare le 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 di repository, inclusi quelli che utilizzano la chiave CMEK per la crittografia, consulta Creare repository.

Concedi le autorizzazioni

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

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

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

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

    Vai a Bucket

  2. Fai clic sul bucket di archiviazione per l'host del registry che vuoi visualizzare. 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 sulla scheda Autorizzazioni.

  4. Nella scheda Autorizzazioni, fai clic sulla sottoscheda 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 principale. 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 l'accesso ai repository di Artifact Registry. Per i ruoli Cloud Storage ereditati dal progetto principale, devi verificare che il principale utilizzi attualmente Container Registry. Alcuni principali 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 forniscono intrinsecamente tutto l'accesso alle risorse Cloud Storage suggerito dai loro nomi e non forniscono autorizzazioni aggiuntive per altri servizi Google Cloud. Verifica quali utenti e account di servizio richiedono accesso ad Artifact Registry e utilizza la tabella di mappatura dei ruoli per assegnare i ruoli corretti, se l'accesso ad Artifact Registry è appropriato.

La tabella seguente mappa i ruoli di Artifact Registry in base alle autorizzazioni concesse dai ruoli Cloud Storage predefiniti per l'accesso a Container Registry. I ruoli di Artifact Registry forniscono una separazione aggiuntiva delle autorizzazioni non disponibile nei ruoli Cloud Storage predefiniti.

Accesso richiesto Ruolo attuale Ruolo Artifact Registry Dove concedere il ruolo
Esporta solo immagini (sola lettura) Storage Object Viewer
(roles/storage.objectViewer)
Lettore di Artifact Registry
(roles/artifactregistry.reader)
Repository Artifact Registry o progetto Google Cloud
Eseguire il push e il pull delle immagini (lettura e scrittura) Storage Legacy Bucket Writer
(roles/storage.legacyBucketWriter)
Artifact Registry Writer
(roles/artifactregistry.writer)
Repository Artifact Registry o progetto Google Cloud
Eseguire il push, il pull ed eliminare le immagini Storage Legacy Bucket Writer
(roles/storage.legacyBucketWriter)
Artifact Registry Repository Administrator
(roles/artifactregistry.repoAdmin)
Repository Artifact Registry o progetto Google Cloud
Creare, gestire ed eliminare i repository Storage Admin
(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 di agente 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 informazioni dettagliate sulle autorizzazioni nei ruoli dell'agente di servizio, consulta la sezione Riferimento ai ruoli dell'agente di servizio.

Ruoli personalizzati

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

Per istruzioni su come concedere i ruoli di Artifact Registry, consulta Configurare i ruoli e le autorizzazioni.

Esegui l'autenticazione nel repository

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

Se utilizzi lo strumento di assistenza per le credenziali Docker:

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

Per informazioni dettagliate sulla configurazione dell'autenticazione, consulta Configurare l'autenticazione per Docker.

Copiare i container da Container Registry

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

Eseguire il push e il pull delle immagini

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

  • Il nome host per i repository Docker di Artifact Registry include un prefisso della 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 nel registry eu.gcr.io del 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 informazioni dettagliate su come eseguire il push e il pull delle immagini in Artifact Registry, consulta Eseguire il push e il pull delle immagini.

Esegui il deployment delle immagini

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

La creazione delle immagini e il loro push in un repository con Cloud Build avviene in genere come per Container Registry. La differenza principale in Artifact Registry è che un repository di destinazione deve esistere prima di eseguire il push delle immagini, inclusa la prima immagine.

Assicurati di creare i repository di cui hai bisogno prima di eseguire i comandi che pushano le 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 Integrazione con Cloud Build.

Altre caratteristiche

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 di analisi degli elementi. Quando attivi 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 analisi degli elementi.
  • Puoi continuare a utilizzare i comandi gcloud container images per elencare le note e le occorrenze associate ai percorsi delle immagini gcr.io.
Container Registry Artifact Registry
Cerca le 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 scansione.
Scansione on demand
Scansione automatica
  • Il comando CLI di Google Cloud gcloud container images include flag per visualizzare i risultati dell'analisi, tra cui vulnerabilità e altri metadati.
  • Le analisi restituiscono informazioni sulle vulnerabilità del sistema operativo solo per le immagini in Container Registry con sistemi operativi supportati.
Cerca le vulnerabilità del sistema operativo e dei pacchetti di lingua con l'analisi automatica e on demand. Scopri di più sui tipi di scansione.
Scansione on demand
Scansione automatica
  • Il comando CLI di Google Cloud gcloud artifacts docker images 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à del pacchetto di linguaggio sia per i sistemi operativi supportati sia per quelli non supportati.

Notifiche Pub/Sub

Artifact Registry pubblica le modifiche nello 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 i Controlli di servizio VPC, puoi configurare perimetri di sicurezza attorno alle risorse dei servizi gestiti da Google e controllare il movimento dei dati oltre il confine del perimetro.

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

Ripulire le immagini di Container Registry

Quando non vuoi più utilizzare 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 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.

gcloud

Se vuoi eliminare in blocco almeno centomila immagini in un bucket, evita di utilizzare l'interfaccia a riga di comando gcloud poiché il processo di eliminazione richiede molto tempo. Utilizza la console Google Cloud per eseguire l'operazione. Per ulteriori informazioni, consulta la sezione sulla eliminazione collettiva degli oggetti Cloud Storage.

Per eliminare un bucket, utilizza il comando gcloud storage rm con il flag --recursive.

gcloud storage rm gs://BUCKET-NAME --recursive

Sostituisci BUCKET-NAME con il nome del bucket di archiviazione di Container Registry. 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

La risposta è simile al seguente esempio:

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

Se nello stesso progetto Google Cloud sono in esecuzione altri servizi Google Cloud, lascia attiva l'API Container Registry. Se provi a disattivare 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 al momento non utilizzi Container Registry con questi servizi.

Passaggi successivi