Questo documento spiega come configurare manualmente i repository gcr.io
in Artifact Registry.
Ti consigliamo di utilizzare il nostro strumento di migrazione automatica per eseguire la transizione ai repository gcr.io
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
Installa Google Cloud CLI, se non è già installato. Per un'installazione esistente, esegui questo comando per aggiornare alle ultime versioni:
gcloud components update
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
Scopri di più sui prezzi di Artifact Registry prima del giorno inizi la transizione.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per configurare gcr.io
repository,
chiedi all'amministratore di concederti
seguenti ruoli IAM:
-
Per creare repository Artifact Registry e concedere l'accesso a singoli repository:
Amministratore Artifact Registry (
roles/artifactregistry.admin
) del progetto Google Cloud, -
Per visualizzare e gestire la configurazione esistente di Container Registry applicata ai bucket di archiviazione di Cloud Storage:
Storage Admin (
roles/storage.admin
) del progetto Google Cloud, -
Per creare un repository
gcr.io
la prima volta che esegui il push di un'immagine a un nome hostgcr.io
: Writer Create-on-push Artifact Registry (roles/artifactregistry.createOnPushWriter
) del progetto Google Cloud, -
Per concedere l'accesso al repository a livello di progetto:
Amministratore IAM del progetto (
roles/resourcemanager.projectIamAdmin
) nel progetto Google Cloud -
Per elencare i servizi abilitati in un'organizzazione:
Cloud Asset Viewer (
roles/cloudasset.viewer
) dell'organizzazione
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 la ruoli o altri ruoli predefiniti ruoli.
Limitazioni
Ai repository gcr.io
di Artifact Registry si applicano le seguenti limitazioni:
- Durante la transizione da Container Registry, non puoi mappare un host Container Registry a un repository Artifact Registry in un altro progetto.
- Ogni nome host di Container Registry viene mappato a un solo repository
gcr.io
Artifact Registry corrispondente nella stessa multiregione. - I nomi dei repository
gcr.io
sono predefiniti e non puoi modificarli.
Se hai bisogno di un maggiore controllo sulla posizione dei tuoi repository, puoi eseguire la transizione ai repository standard nel dominio Artifact Registrypkg.dev
. Poiché i repository standard non supportano il dominio gcr.io
, questo approccio di transizione richiede più modifiche all'automazione e ai flussi di lavoro esistenti. Per saperne di più, consulta [Scegliere un'opzione di transizione][opzioni]
sulle differenze di funzionalità.
Crea repository
Crea repository gcr.io
in modo da poter configurare l'accesso per i tuoi utenti e
copiare le immagini di Container Registry esistenti in Artifact Registry prima di attivare
la reindirizzamento.
Creazione rapida di repository
Se vuoi utilizzare le chiavi di crittografia gestite dal cliente (CMEK), devi creare i repository manualmente, altrimenti puoi seguire questi passaggi per creare gcr.io
repository criptati con chiavi di proprietà e gestite da Google.
Per creare gcr.io
repository:
Apri la pagina Repository nella console Google Cloud.
Nella pagina, un banner mostra il messaggio
You have gcr.io repositories in Container Registry
.Apri la pagina Impostazioni di Artifact Registry.
Nel banner, fai clic su Crea
gcr.io
repository.Viene visualizzato 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.Fai clic su Crea.
Artifact Registry crea gcr.io
repository per tutti i container di Container Registry
nomi host:
Nome host di 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 consiste nel configurare le autorizzazioni per concedere l'accesso ai repository.
Creazione manuale del repository
Crea manualmente i repository gcr.io
se vuoi utilizzare le chiavi di crittografia gestite dal cliente (CMEK) per criptare i contenuti dei repository o se nella tua organizzazione Google Cloud è presente un vincolo di località che blocca la creazione di nuove risorse in località specifiche.
Per creare manualmente un repository gcr.io
:
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
Aggiungi il repository.
Console
Apri la pagina Repositori nella console Google Cloud.
Fai clic su Crea repository.
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 Specifica Docker come formato del repository.
In Tipo di località, specifica la località multiregionale del repository:
Nome host Container Registry Posizione del repository Artifact Registry Nome del repository Artifact Registry gcr.io us gcr.io asia.gcr.io asia asia.gcr.io eu.gcr.io europe eu.gcr.io us.gcr.io us us.gcr.io Aggiungi una descrizione per il repository. Non includere dati sensibili, poiché le descrizioni dei repository non sono criptate.
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.
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 Nome del repository Artifact Registry gcr.io us gcr.io asia.gcr.io asia asia.gcr.io eu.gcr.io europe eu.gcr.io us.gcr.io us us.gcr.io 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 è nel 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 le autorizzazioni ai repository
Container Registry utilizza i ruoli di Cloud Storage per controllare l'accesso. Artifact Registry ha il 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.
- Nella console Google Cloud, vai alla pagina Bucket di Cloud Storage.
Fai clic sul bucket di archiviazione per l'host del registry 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
- gcr.io:
Fai clic sulla scheda Autorizzazioni.
Nella scheda Autorizzazioni, fai clic sulla scheda secondaria Visualizza per ruolo.
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 con accesso ai repository Artifact Registry. Per i ruoli Cloud Storage ereditati dal progetto principale, devi verificare che il principale 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 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 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) Storage Object Viewer
(roles/storage.objectViewer
)Lettore di 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
Storage Legacy Bucket Writer
(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 un'immagine viene pushata a un nome host gcr.io in un progetto. Storage Admin
(roles/storage.admin
)Artifact Registry Create-on-push Repository Administrator
(roles/artifactregistry.createOnPushRepoAdmin)
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 le proprie 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 documentazione di riferimento sui 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 ruoli e autorizzazioni.
Copiare i 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 di altre funzionalità che potresti aver impostato in Container Registry.
Artifact Analysis
Artifact Analysis supporta sia Container Registry che Artifact Registry. Entrambi i prodotti utilizzano le stesse API di Artifact Analysis per la scansione dei metadati delle immagini e delle vulnerabilità e gli stessi argomenti Pub/Sub per le notifiche di Artifact Analysis.
Tuttavia, le seguenti azioni si verificano solo quando il reindirizzamento è attivato:
- Scansione automatica dei repository
gcr.io
in Artifact Registry. - Inclusione dell'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.
|
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.
|
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 messaggi 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 le istruzioni di configurazione, consulta Configurazione delle notifiche Pub/Sub.
Attiva il reindirizzamento del traffico di gcr.io
Dopo aver creato i tuoi repository gcr.io
e aver configurato le autorizzazioni e l'autenticazione per i tuoi clienti 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
in Container Registry eseguendo
gcloud artifacts settings enable-upgrade-redirection
quindi riattiva il reindirizzamento una volta
risolvere il problema.
Verifica le autorizzazioni per attivare il reindirizzamento
Per abilitare il reindirizzamento, devi disporre di queste autorizzazioni a livello di progetto:
artifactregistry.projectsettings.update
- Autorizzazioni per aggiornare le impostazioni del progetto Artifact Registry. Questa autorizzazione è in Ruolo Amministratore Artifact Registry (roles/artifactregistry.admin
).storage.buckets.update
: autorizzazioni per aggiornare i bucket di archiviazione nell'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 assegnano i ruoli Amministratore Artifact Registry e Amministratore archiviazione a 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 è l'ID progetto Google Cloud.
- PRINCIPAL è l'indirizzo email dell'account che stai aggiornando.
Ad esempio
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 ai nomi host di Container Registry.
Anche se Artifact Registry può creare i repository gcr.io
mancanti per te quando attivi il reindirizzamento, ti consigliamo di crearli prima in modo da poter eseguire queste azioni prima di attivare il reindirizzamento:
- Configurare le autorizzazioni a livello di repository.
- Copia le immagini da Container Registry che vuoi continuare a utilizzare.
- Esegui qualsiasi configurazione aggiuntiva.
Attivare il reindirizzamento
Per attivare il reindirizzamento per il traffico di gcr.io
:
Console
Apri la pagina Impostazioni nella console Google Cloud.
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 ID progetto Google Cloud.
Artifact Registry inizia ad attivare il 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
viene 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 ha un repository Artifact Registry corrispondente, Artifact Registry crea il repository se disponi di un ruolo con l'autorizzazione artifactregistry.repositories.createOnPush
. 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.
Esegui il push di un'immagine di test in uno dei tuoi repository
gcr.io
utilizzando il relativo percorsogcr.io
.Tagga l'immagine utilizzando il percorso
gcr.io
. Ad esempio, questo comando tagga l'immaginelocal-image
comeus.gcr.io/my-project/test-image
:docker tag local-image us.gcr.io/my-project/test-image
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
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
Esegui il pull dell'immagine dal repository utilizzando il percorso di Container Registry. Ad esempio, questo comando esegue il pull dell'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 la creazione e il deployment delle immagini funzioni come previsto, ad esempio:
- Gli utenti e gli account di servizio che utilizzano Container Registry possono comunque eseguire push, pull e deployment delle immagini quando il reindirizzamento è attivo.
- 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 l'autorizzazione binaria, i criteri esistenti funzionano correttamente per le immagini messe in produzione dai repository
gcr.io
. - Gli abbonamenti Pub/Sub configurati includono notifiche per le 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.
I comandi di eliminazione delle immagini nei percorsi gcr.io
non eliminano le immagini archiviate sugli host di Container Registry.
Per rimuovere in sicurezza tutte le immagini di Container Registry, elimina i bucket Cloud Storage per ogni nome host di Container Registry.
Per eliminare ogni bucket di archiviazione di Container Registry:
Console
- Vai alla pagina Cloud Storage nella console Google Cloud.
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
- gcr.io:
Fai clic su Elimina. Viene visualizzata una finestra di dialogo di conferma.
Per confermare l'eliminazione, inserisci il nome del bucket e fai clic su Elimina.
gcloud
Se vuoi eliminare collettivamente un centinaio di immagini o più in un bucket, evitare di utilizzare gcloud CLI poiché il processo di eliminazione richiede per completare l'operazione. Utilizza la console Google Cloud per eseguire l'operazione. Per ulteriori informazioni, consulta la sezione relativa all'eliminazione collettiva di oggetti Cloud Storage.
Per eliminare un bucket, utilizza gcloud storage rm
con il flag --recursive
.
gcloud storage rm gs://BUCKET-NAME --recursive
Sostituisci BUCKET-NAME
con lo spazio di archiviazione di Container Registry
il nome del bucket. 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 altri servizi Google Cloud sono in esecuzione nello stesso account Google Cloud lascia abilitata l'API Container Registry. Se provi a disattivare l'API Container Registry. Container Registry mostra un avviso se altri servizi con un'infrastruttura le dipendenze siano abilitate nel progetto. 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
- Prova la guida rapida di Docker.
- Scopri di più sui repository
gcr.io
.