Configura repository con il supporto del dominio gcr.io

Questo documento spiega come configurare manualmente gcr.io repository in Artifact Registry.

Ti consigliamo di utilizzare il nostro strumento di migrazione automatica per la transizione a gcr.io repository in Artifact Registry.

Se vuoi creare gcr.io repository in Artifact Registry utilizzando chiavi di crittografia gestite dal cliente (CMEK), quindi completa i passaggi descritti in Prima di iniziare, quindi segui segui le istruzioni riportate in Creazione manuale del repository.

Prima di iniziare

  1. Installa Google Cloud CLI, se non lo è già installato. Per un'installazione esistente, esegui questo comando per aggiornare alle ultime versioni:

    gcloud components update
    
  2. Abilita le API Artifact Registry e Resource Manager. gcloud CLI utilizza l'API Resource Manager per verificare uno degli le autorizzazioni richieste.

    Esegui questo comando:

    gcloud services enable \
        cloudresourcemanager.googleapis.com \
        artifactregistry.googleapis.com
    
  3. Scopri di più sui prezzi di Artifact Registry prima del giorno inizi 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 a singoli repository: Amministratore Artifact Registry (roles/artifactregistry.admin)
  • Per visualizzare e gestire la configurazione esistente di Container Registry applicata ai bucket di archiviazione di Cloud Storage: Storage Admin (roles/storage.admin)
  • Per creare un repository gcr.io la prima volta che esegui il push di un'immagine a un nome host gcr.io: Writer Create-on-push Artifact Registry (roles/artifactregistry.createOnPushWriter)
  • 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 riuscire a ottenere le autorizzazioni richieste tramite la ruoli o altri ruoli predefiniti ruoli.

Limitazioni

Le seguenti limitazioni si applicano ai repository che supportano i domini gcr.io:

  • Non puoi mappare un host di Container Registry a un Repository Artifact Registry in un altro progetto.
  • Ogni nome host di Container Registry viene mappato a un solo nome corrispondente Repository gcr.io di Artifact Registry nella stessa località multiregionale.
  • I nomi dei repository gcr.io sono predefiniti e non puoi modificarli.

Se hai bisogno di un maggiore controllo sulla località dei tuoi repository, puoi transizione a repository standard su Artifact Registry pkg.dev. Poiché i repository standard non supportano gcr.io dominio, questo approccio di transizione richiede più modifiche al dominio esistente automazione e flussi di lavoro. Per ulteriori informazioni, consulta Scegliere un'opzione di transizione sulle differenze di funzionalità.

Crea repository

Crea repository gcr.io in modo da poter configurare l'accesso per i tuoi utenti e copia le immagini di Container Registry esistenti in Artifact Registry prima di abilitare il reindirizzamento.

Creazione rapida di repository

Questi passaggi creano gcr.io repository criptati con Chiavi di proprietà di Google e gestite da Google. Se vuoi utilizzare la crittografia gestita dal cliente chiavi (CMEK), devi creare repository manualmente.

Per creare gcr.io repository:

  1. Apri la pagina Repository nella console Google Cloud.

    Apri la pagina Repository

    Nella pagina, un banner mostra il messaggio You have gcr.io repositories in Container Registry.

    Apri la pagina Impostazioni

  2. Nel banner, fai clic su Crea gcr.io repository.

    Si apre il riquadro Crea repository gcr.io. La sezione Copia di immagini elenca i nomi completi di ciascun repository che verrà è stato creato. Questi nomi di repository ti serviranno se vuoi copiare da Container Registry prima di attivare il reindirizzamento.

  3. Fai clic su Crea.

Artifact Registry crea gcr.io repository per tutti i container di Container Registry nomi host:

Nome host Container Registry Nome repository Artifact Registry
gcr.io gcr.io
asia.gcr.io asia.gcr.io
eu.gcr.io eu.gcr.io
us.gcr.io us.gcr.io

Per vedere l'URL di Artifact Registry per il repository, tieni il Puntatore sull'icona di avviso ( ) accanto al nome del repository.

Prima di reindirizzare il traffico ai nuovi repository, devi assicurarti che l'automazione esistente può accedere al repository. Il passaggio successivo è la configurazione autorizzazioni per concedere l'accesso ai repository.

Creazione manuale del repository

Crea manualmente gcr.io repository se vuoi utilizzare chiavi di crittografia gestite dal cliente (CMEK) per criptare dei contenuti del repository o se è presente un vincolo di località è un'organizzazione Google Cloud che blocca la creazione di nuove risorse località specifiche.

Per creare manualmente un repository gcr.io:

  1. Se utilizzi CMEK, crea la chiave che utilizzerai con questo repository e concedere le autorizzazioni per utilizzare la chiave. Consulta Attivazione delle chiavi di crittografia gestite dal cliente

  2. Aggiungi il repository.

    Console

    1. Apri la pagina Repository nella console Google Cloud.

      Apri la pagina Repository

    2. Fai clic su Crea repository.

    3. Specifica il nome del repository.

      Nome host Container Registry Nome repository Artifact Registry
      gcr.io gcr.io
      asia.gcr.io asia.gcr.io
      eu.gcr.io eu.gcr.io
      us.gcr.io us.gcr.io
    4. Specifica Docker come formato del repository.

    5. In Tipo di località, specifica la località multiregionale del repository:

      Nome host Container Registry Posizione del repository Artifact Registry
      gcr.io us
      asia.gcr.io asia
      eu.gcr.io europe
      us.gcr.io us
    6. Aggiungi una descrizione per il repository. Non includere dati sensibili, poiché le descrizioni del repository non sono criptate.

    7. Nella sezione Crittografia, scegli il meccanismo di crittografia per nel repository.

      • Chiave gestita da Google: cripta i contenuti del repository con una Chiave di proprietà di Google e gestita da Google.
      • Chiave gestita dal cliente: cripta i contenuti del repository con una chiave che puoi controllare tramite Cloud Key Management Service. Per istruzioni sulla configurazione della chiave, consulta Configurazione di CMEK per i repository.
    8. Fai clic su Crea.

    gcloud

    Esegui questo comando per creare un nuovo repository.

    gcloud artifacts repositories create REPOSITORY \
        --repository-format=docker \
        --location=LOCATION \
        --description=DESCRIPTION \
        --kms-key=KMS-KEY
    

    Sostituisci i seguenti valori:

    • REPOSITORY è il nome del repository.

      Nome host Container Registry Nome repository Artifact Registry
      gcr.io gcr.io
      asia.gcr.io asia.gcr.io
      eu.gcr.io eu.gcr.io
      us.gcr.io us.gcr.io
    • LOCATION indica la località multiregionale del repository:

      Nome host Container Registry Posizione del repository Artifact Registry
      gcr.io us
      asia.gcr.io asia
      eu.gcr.io europe
      us.gcr.io us
    • DESCRIPTION è una descrizione del repository. Azioni sconsigliate includere dati sensibili, poiché le descrizioni dei repository non sono criptate.

    • KMS-KEY è il percorso completo della crittografia di Cloud KMS se utilizzi una chiave di crittografia gestita dal cliente per criptare i contenuti del repository. Il percorso ha il seguente formato:

      projects/KMS-PROJECT/locations/KMS-LOCATION/keyRings/KEY-RING/cryptoKeys/KEY
      

      Sostituisci i seguenti valori:

      • KMS-PROJECT è il progetto in cui è archiviata la chiave.
      • KMS-LOCATION è la posizione della chiave.
      • KEY-RING è il nome del keyring.
      • KEY è il nome della chiave.

    Puoi confermare che il repository è stato creato elencando i tuoi repository con il seguente comando:

    gcloud artifacts repositories list
    

Prima di reindirizzare il traffico ai nuovi repository, devi assicurarti che l'automazione esistente può accedere al repository. Il passaggio successivo è la configurazione autorizzazioni per concedere l'accesso ai repository.

Concedi autorizzazioni ai repository

Container Registry utilizza i ruoli di Cloud Storage per controllare l'accesso. Artifact Registry dispone del proprio IAM roles. Questi ruoli separano i ruoli di lettura, scrittura e amministrazione dei repository in modo più chiaro e Container Registry.

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

In alternativa, puoi visualizzare un elenco di entità con accesso allo spazio 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 per l'host del registro che vuoi visualizzare. Nei nomi dei bucket, PROJECT-ID è il tuo Google Cloud ID progetto.

    • 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 Cloud Storage ruoli ereditati dal progetto padre, devi verificare che l'entità che attualmente utilizza 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 IAM ha accesso limitato ai bucket di archiviazione. Non danno intrinsecamente tutto l'accesso a Cloud Storage che implicano il nome e 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 facilitare concedi i ruoli corretti se l'accesso ad Artifact Registry è appropriato.

La tabella seguente mappa i ruoli di Artifact Registry in base alle autorizzazioni concesse ruoli Cloud Storage predefiniti per l'accesso a Container Registry.

Accesso richiesto Ruolo attuale Ruolo Artifact Registry Dove concedere il ruolo
Esegui il pull delle immagini solo (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)
  • Elimina immagini
Writer bucket legacy Storage
(roles/storage.legacyBucketWriter)
Amministratore repository Artifact Registry
(roles/artifactregistry.repoAdmin)
Repository Artifact Registry o progetto Google Cloud
Crea un repository gcr.io in Artifact Registry la prima volta che viene un'immagine a un nome host gcr.io in un progetto. Amministratore Storage
(roles/storage.admin)
Amministratore repository Create-on-push Artifact Registry
(roles/artifactregistry.createOnPushRepoAdmin)
Progetto Google Cloud
Crea, gestisci ed elimina repository Amministratore Storage
(roles/storage.admin)
Amministratore 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 le proprie ruoli concessi a livello di progetto. Ad esempio, l'agente di servizio Cloud Run ha il ruolo di agente di servizio Cloud Run.

Nella maggior parte dei casi, questi ruoli dell'agente di servizio contengono valori predefiniti equivalenti per Container Registry e Artifact Registry e tu non deve apportare ulteriori modifiche se è in esecuzione Artifact Registry nello stesso progetto del tuo Container Registry esistente completamente gestito di Google Cloud.

Consulta le Riferimento del ruolo di agente di servizio per i dettagli sulle autorizzazioni nei ruoli degli agenti di servizio.

Ruoli personalizzati

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

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

Copia container da Container Registry

Ti consigliamo di utilizzare il nostro strumento di migrazione automatica per copiare le tue immagini da Container Registry ad Artifact Registry.

Se vuoi utilizzare altri strumenti per copiare le immagini, consulta Copiare immagini da Container Registry

Configurare altre funzionalità

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

Artifact Analysis

Artifact Analysis supporta sia Container Registry e Artifact Registry. Entrambi i prodotti utilizzano lo stesso API Artifact Analysis per metadati delle immagini e vulnerabilità scansione e gli stessi argomenti Pub/Sub per le notifiche di Artifact Analysis.

Tuttavia, le seguenti azioni si verificano solo quando il reindirizzamento è attivato:

  • Analisi automatica di gcr.io repository in Artifact Registry.
  • Include l'attività del repository gcr.io nelle notifiche Pub/Sub.

Puoi continuare a utilizzare gcloud container images per elencare note e occorrenze associate ai percorsi delle immagini gcr.io.

Container Registry Artifact Registry
Analizza le vulnerabilità del sistema operativo e dei pacchetti di linguaggio con la scansione on demand nelle immagini con un sistema operativo supportato. La scansione automatica restituisce solo il sistema operativo informazioni sulle vulnerabilità. Scopri di più sui tipi di scansione.
Scansione on demand
Scansione automatica
  • Il comando Google Cloud CLI gcloud container images include flag per la visualizzazione dei risultati della scansione, incluse le vulnerabilità e altri metadati.
  • Le analisi restituiscono informazioni sulle vulnerabilità del sistema operativo solo per le immagini in di Container Registry con e sistemi operativi supportati.
Scansioni delle vulnerabilità del sistema operativo e dei pacchetti in lingua sia on demand che scansione automatica. Scopri di più sui tipi di scansione.
Scansione on demand
Scansione automatica
  • Il comando Google Cloud CLI gcloud immagini Docker artefatti includono flag per la visualizzazione dei risultati della scansione, incluse le vulnerabilità e altri metadati.
  • La scansione restituisce informazioni sulla vulnerabilità del sistema operativo per le immagini in Artifact Registry con sistemi operativi supportati e pacchetto di lingue informazioni sulle vulnerabilità per i sistemi operativi supportati e non supportati sistemi diversi.

Notifiche Pub/Sub

Artifact Registry pubblica le modifiche nello stesso argomento gcr di e Container Registry. Non è necessaria alcuna configurazione aggiuntiva se utilizzi già Pub/Sub con Container Registry nello stesso progetto di Artifact Registry. Tuttavia, Artifact Registry non pubblica per i repository gcr.io finché non attivi il reindirizzamento.

Se configuri Artifact Registry in un progetto separato, l'argomento gcr potrebbero non esistere. Per istruzioni sulla configurazione, vedi Configurazione delle notifiche Pub/Sub.

Attiva il reindirizzamento del traffico di gcr.io

Dopo aver creato i repository gcr.io e configurato le autorizzazioni e l'autenticazione per client di terze parti, puoi attivare il reindirizzamento del traffico gcr.io.

Se si verifica un problema dopo aver attivato il reindirizzamento, puoi reindirizzare il traffico a Container Registry, per poi riattivare il reindirizzamento una volta risolvere il problema.

Verifica le autorizzazioni per attivare il reindirizzamento

Per abilitare il reindirizzamento, devi disporre delle seguenti autorizzazioni a livello di progetto:

  • artifactregistry.projectsettings.update: autorizzazioni da aggiornare Impostazioni progetto Artifact Registry. Questa autorizzazione è in Ruolo Amministratore Artifact Registry (roles/artifactregistry.admin).
  • storage.buckets.update - Autorizzazioni per aggiornare i bucket di archiviazione in l'intero progetto. Questa autorizzazione è nel ruolo Amministratore Storage (roles/storage.admin).

Se non disponi di queste autorizzazioni, chiedi a un amministratore di concedere a livello di progetto.

I comandi seguenti concedono all'amministratore di Artifact Registry e i ruoli Amministratore Storage su un progetto.

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='user:PRINCIPAL' \
    --role='roles/artifactregistry.admin'

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='user:PRINCIPAL' \
    --role='roles/storage.admin'

Sostituisci i seguenti valori:

  • PROJECT_ID è Google Cloud ID progetto.
  • PRINCIPAL è l'indirizzo email dell'account che stai aggiornando. Ad esempio user:my-user@example.com

Convalida la configurazione del progetto

Per convalidare la configurazione del progetto, esegui questo comando:

gcloud artifacts settings enable-upgrade-redirection \
    --project=PROJECT_ID --dry-run

Sostituisci PROJECT_ID con il tuo Google Cloud ID progetto.

Artifact Registry controlla la presenza di repository mappati a Container Registry e nomi host.

Sebbene Artifact Registry possa creare i repository gcr.io mancanti per quando attivi il reindirizzamento, ti consigliamo di crearli prima in modo da poter puoi eseguire queste azioni prima di attivare il reindirizzamento:

Attiva il reindirizzamento

Per attivare il reindirizzamento per il traffico di gcr.io:

Console

  1. Apri la pagina Impostazioni nella console Google Cloud.

    Apri la pagina Impostazioni

  2. Fai clic su Instrada ad Artifact Registry.

gcloud

Per abilitare il reindirizzamento, esegui questo comando:

gcloud artifacts settings enable-upgrade-redirection \
    --project=PROJECT_ID

Sostituisci PROJECT_ID con il tuo Google Cloud ID progetto.

Artifact Registry avvia l'attivazione del reindirizzamento.

Per verificare lo stato attuale del reindirizzamento, esegui questo comando:

gcloud artifacts settings describe

Se il reindirizzamento è attivato, il risultato è:

legacyRedirectionState: REDIRECTION_FROM_GCR_IO_ENABLED

Tutto il traffico verso gcr.io, asia.gcr.io, eu.gcr.io e us.gcr.io è reindirizzato, anche se non hai creato repository gcr.io per tutti i nomi host di Container Registry. Se esegui il push di un'immagine a un nome host che non un repository Artifact Registry corrispondente, Artifact Registry crea il repository se hai un ruolo presso artifactregistry.repositories.createOnPush autorizzazione. I ruoli predefiniti Writer Create-on-push (artifactregistry.createOnPushWriter) e repository Create-on-push Gli amministratori (artifactregistry.createOnPushRepoAdmin) hanno questa autorizzazione.

Se il reindirizzamento è attivato, puoi testare l'automazione e verificare di poter esegui il push e il pull delle immagini utilizzando i nuovi repository gcr.io.

Verifica reindirizzamento

Verifica che le richieste pull e push ai nomi host gcr.io funzionino.

  1. Esegui il push di un'immagine di test in uno dei tuoi repository gcr.io utilizzando gcr.io del tuo percorso di apprendimento.

    1. Tagga l'immagine utilizzando il percorso gcr.io. Ad esempio, questo comando contrassegna l'immagine local-image come us.gcr.io/my-project/test-image:

      docker tag local-image us.gcr.io/my-project/test-image
      
    2. Esegui il push dell'immagine che hai taggato. Ad esempio, questo comando esegue il push immagine us.gcr.io/my-project/test-image:

      docker push us.gcr.io/my-project/test-image
      
  2. Elenca le immagini nel repository per verificare che siano state caricate correttamente. Ad esempio, per elencare le immagini in us.gcr.io/my-project, esegui il comando:

    gcloud container images list --repository=us.gcr.io/my-project
    
  3. Esegui il pull dell'immagine dal repository utilizzando il percorso di Container Registry. Ad esempio, questo comando estrae l'immagine us.gcr.io/my-project/test-image.

    docker pull us.gcr.io/my-project/test-image
    

Dopo questo test iniziale, verifica che l'automazione esistente per creare e il deployment delle immagini funziona come previsto, tra cui:

  • Gli utenti e gli account di servizio che utilizzano Container Registry possono comunque eseguire il push, il pull ed eseguire il deployment delle immagini quando è abilitato il reindirizzamento.
  • L'automazione esegue il push delle immagini solo nei repository esistenti.
  • Se l'analisi delle vulnerabilità di Artifact Analysis è abilitata, l'analisi identifica le immagini con vulnerabilità nei repository gcr.io.
  • Se utilizzi Autorizzazione binaria, i criteri esistenti funzionano correttamente per le immagini con deployment da repository gcr.io.
  • Le sottoscrizioni Pub/Sub configurate includono notifiche per modifiche nei repository gcr.io.

Esegui la pulizia delle immagini di Container Registry

Se il reindirizzamento è attivato, i comandi per eliminare le immagini nei percorsi gcr.io eliminare le immagini nel repository gcr.io di Artifact Registry corrispondente. Elimina i comandi per eliminare le immagini in gcr.io percorsi non eliminano le immagini archiviate in di Container Registry.

Per rimuovere in modo sicuro tutte le immagini di Container Registry, elimina l'account Cloud Storage bucket per ciascun nome host di Container Registry.

Per eliminare ciascun 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 account Google Cloud ID progetto.

    • 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 collettivamente un centinaio di immagini o più in un bucket, evitare di utilizzare gsutil poiché il processo di eliminazione richiede molto tempo. Utilizza la console Google Cloud per eseguire l'operazione.

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

gsutil rm -r gs://BUCKET-NAME

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

  • 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 account lascia abilitata l'API Container Registry. Se provi a disabilitare l'API Container Registry. Container Registry mostra un avviso se altri servizi con un'infrastruttura le dipendenze siano abilitate nel progetto. Disabilitazione dell'API Container Registry disabilita automaticamente tutti i servizi nello stesso progetto con un della dipendenza, anche se attualmente non utilizzi Container Registry con i servizi di machine learning.

Passaggi successivi