Per semplificare i flussi di lavoro di compilazione e deployment, alcuni account di servizio e ambienti di runtime Google Cloud sono preconfigurati con le autorizzazioni per accedere ai container archiviati nello stesso progetto.
Questa pagina riassume le integrazioni comuni con i prodotti Google Cloud e i requisiti associati per accedere ai container.
Requisiti di accesso generale
Per impostazione predefinita, gli account di servizio per alcune integrazioni comuni sono configurati con le autorizzazioni di Cloud Storage per accedere a Container Registry nello stesso progetto.
Per l'account di servizio utilizzato dalle VM Compute Engine, incluse le VM nei cluster Google Kubernetes Engine, l'accesso si basa sia sulle autorizzazioni IAM sia sugli ambiti di accesso allo spazio di archiviazione.
Devi configurare o modificare le autorizzazioni autonomamente se:
- Stai utilizzando un account di servizio in un progetto per accedere a Container Registry in un altro progetto
- Utilizzi un account di servizio predefinito con accesso in sola lettura allo spazio di archiviazione, ma vuoi eseguire il pull e il push delle immagini
- Utilizzi un account di servizio personalizzato per interagire con Container Registry
Per ulteriori informazioni, consulta le sezioni specifiche del prodotto.
Cloud Build
Per impostazione predefinita, l'account di servizio Cloud Build dispone delle autorizzazioni per eseguire il push e il pull delle immagini quando Container Registry si trova nello stesso progetto.
Devi configurare le autorizzazioni appropriate nei seguenti casi:
- Cloud Build si trova in un progetto diverso rispetto ai repository a cui vuoi che le build accedano.
- Le build utilizzano un account di servizio diverso da quello predefinito di Cloud Build. In questo caso, devi concedere all'account di servizio le autorizzazioni per accedere a Container Registry.
Compute Engine
Puoi creare istanze VM utilizzando le immagini archiviate in Container Registry.
Autorizzazioni obbligatorie
Se l'istanza VM e Container Registry si trovano nello stesso progetto Google Cloud, il service account predefinito di Compute Engine è configurato con le autorizzazioni per il pull delle immagini.
Se l'istanza VM si trova in un progetto diverso o se utilizza un account di servizio diverso, devi concedere all'account di servizio le autorizzazioni appropriate per accedere al bucket di archiviazione utilizzato da Container Registry.
Per impostazione predefinita, una VM Compute Engine ha l'ambito di accesso read-only
configurato per i bucket di archiviazione. Per eseguire il push di immagini Docker private, l'istanza VM deve avere l'ambito di accesso allo spazio di archiviazione read-write
.
Per informazioni dettagliate sulle autorizzazioni e sugli ambiti di accesso, consulta Integrazione con i servizi Google Cloud.
Eseguire il deployment delle immagini
Quando crei una VM, puoi eseguire il deployment di un'immagine al suo interno. Per saperne di più, consulta la documentazione di Compute Engine per il deployment dei container e la creazione di modelli di istanze VM.
Istanze Compute Engine ottimizzate per i container
Per informazioni su come avviare un'istanza Compute Engine ottimizzata per i container utilizzando un'immagine nel tuo registry, consulta Avvio di un contenitore Docker tramite cloud-config.
Per ulteriori informazioni, consulta la sezione Creare e configurare istanze.
Google Kubernetes Engine
Google Kubernetes Engine utilizza il account di servizio configurato sulle istanze VM dei nodi del cluster per spingere e estrarre le immagini.
Autorizzazioni obbligatorie
Se il cluster Google Kubernetes Engine e il bucket di archiviazione di Container Registry si trovano nello stesso progetto Google Cloud, l'account di servizio predefinito di Compute Engine è configurato con le autorizzazioni appropriate per spingere o estrarre le immagini.
Se il cluster si trova in un progetto diverso o se le VM del cluster utilizzano un account di servizio diverso, devi concedere all'account di servizio le autorizzazioni appropriate per accedere al bucket di archiviazione utilizzato da Container Registry.
Per impostazione predefinita, una VM Compute Engine ha l'ambito di accesso read-only
configurato per i bucket di archiviazione. Per eseguire il push di immagini Docker private, l'istanza VM deve avere l'ambito di accesso allo spazio di archiviazione read-write
.
Per informazioni dettagliate sulle autorizzazioni e sugli ambiti di accesso, consulta Integrazione con i servizi Google Cloud.
Eseguire un'immagine
Puoi eseguire un'immagine Container Registry su un cluster Google Kubernetes Engine utilizzando il seguente comando:
kubectl run [NAME] --image=[HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]
dove:
[NAME]
è il nome della risorsa[HOSTNAME]
è elencato inLocation
nella console. Si tratta di una delle quattro opzioni:gcr.io
,us.gcr.io
,eu.gcr.io
oasia.gcr.io
.[PROJECT-ID]
è l'ID progetto della console Google Cloud. Se l'ID progetto contiene due punti (:
), consulta Progetti basati sul dominio.[IMAGE]
è il nome dell'immagine in Container Registry.[TAG]
è il tag che identifica la versione dell'immagine in Container Registry. Se non specifichi un tag, Container Registry cercherà il tag predefinitolatest
.
Per ulteriori informazioni sui comandi Kubernetes, consulta la Panoramica di kubectl.
Cloud Run
Puoi eseguire il deployment delle immagini archiviate in Container Registry in Cloud Run.
Autorizzazioni obbligatorie
Per eseguire il deployment in Cloud Run, devi disporre del ruolo Proprietario o Editor oppure dei ruoli Amministratore Cloud Run e Utente account di servizio oppure di qualsiasi ruolo personalizzato che includa questo elenco specifico di autorizzazioni.
Eseguire il deployment delle immagini
Per scoprire come eseguire il deployment di un'immagine in Cloud Run, consulta la documentazione di Cloud Run.
Ambiente flessibile di App Engine
Puoi utilizzare l'ambiente flessibile di App Engine per personalizzare un runtime esistente (ad esempio Java 8) o per fornire il tuo runtime fornendo un'immagine Docker o un Dockerfile personalizzati.
Con Cloud Build puoi automatizzare la creazione dei container, il push a Container Registry e il deployment in App Engine.
Autorizzazioni obbligatorie
Per impostazione predefinita, l'account di servizio predefinito di App Engine dispone delle autorizzazioni per eseguire pull da e push verso i repository nello stesso progetto.
Se App Engine si trova in un progetto diverso, devi concedere all'account di servizio App Engine le autorizzazioni per accedere al tuo repository Container Registry.
Deployment in App Engine
Puoi eseguire il deployment di un'immagine ospitata da Container Registry in App Engine utilizzando Google Cloud CLI.
- Crea il file di configurazione di App Engine per la tua app.
- Crea un'immagine Docker ed eseguine il push nel tuo repository. Puoi utilizzare Cloud Build per creare e eseguire il push del container nel repository.
Esegui il deployment dell'immagine in App Engine eseguendo il seguente comando:
gcloud app deploy --image-url=[HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]
dove:
[HOSTNAME]
è elencato inLocation
nella console. Si tratta di una delle quattro opzioni:gcr.io
,us.gcr.io
,eu.gcr.io
oasia.gcr.io
.[PROJECT-ID]
è l'ID progetto della console Google Cloud. Se l'ID progetto contiene due punti (:
), consulta Progetti basati sul dominio.[IMAGE]
è il nome dell'immagine in Container Registry.[TAG]
è il tag che identifica la versione dell'immagine in Container Registry. Se non specifichi un tag, Container Registry cercherà il tag predefinitolatest
.