Utilizzo di Container Registry con Google Cloud

Per semplificare i flussi di lavoro di creazione e deployment, alcuni account di servizio e ambienti di runtime Google Cloud sono preconfigurati con autorizzazioni per accedere ai container archiviati nello stesso progetto.

Questa pagina riepiloga le integrazioni comuni con i prodotti Google Cloud e i requisiti associati per accedere ai container.

Requisiti di accesso generali

Per impostazione predefinita, gli account di servizio per alcune integrazioni comuni sono configurati con le autorizzazioni di Cloud Storage per accedere a Container Registry all'interno dello stesso progetto.

Per l'account di servizio utilizzato dalle VM di Compute Engine, incluse le VM nei cluster di Google Kubernetes Engine, l'accesso si basa sia sulle autorizzazioni IAM sia sugli ambiti di accesso 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
  • Stai utilizzando un account di servizio predefinito con accesso di sola lettura allo spazio di archiviazione, ma vuoi eseguire sia il pull che il push delle immagini
  • Stai utilizzando un account di servizio personalizzato per interagire con Container Registry

Per ulteriori informazioni, consulta le sezioni specifiche dei prodotti.

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 configure autonomamente le autorizzazioni appropriate nei seguenti casi:

  • Cloud Build si trova in un progetto diverso dai repository a cui vuoi accedere per le build.
  • Le build utilizzano un account di servizio diverso dall'account di servizio Cloud Build predefinito. In questo caso, devi concedere all'account di servizio le autorizzazioni per accedere a Container Registry.

Compute Engine

Puoi creare istanze VM utilizzando immagini archiviate in Container Registry.

Autorizzazioni obbligatorie

Se l'istanza VM e Container Registry si trovano nello stesso progetto Google Cloud, l'account di servizio 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, l'ambito di accesso read-only di una VM di Compute Engine è configurato per i bucket di archiviazione. Per eseguire il push di immagini Docker private, l'istanza VM deve avere l'ambito di accesso all'archiviazione read-write.

Per maggiori dettagli sulle autorizzazioni e sugli ambiti di accesso, consulta la pagina relativa all'integrazione con i servizi Google Cloud.

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 eseguire 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 registro, consulta Avvio di un container Docker tramite cloud-config.

Per ulteriori informazioni, consulta Creazione e configurazione delle istanze.

Google Kubernetes Engine

Google Kubernetes Engine utilizza l'account di servizio configurato sulle istanze VM dei nodi cluster per eseguire il push e il pull delle 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 eseguire il push o il pull delle immagini.

Se il cluster si trova in un altro progetto o se le VM nel 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, l'ambito di accesso read-only di una VM di Compute Engine è configurato per i bucket di archiviazione. Per eseguire il push di immagini Docker private, l'istanza VM deve avere l'ambito di accesso all'archiviazione read-write.

Per maggiori dettagli sulle autorizzazioni e sugli ambiti di accesso, consulta la pagina relativa all'integrazione con i servizi Google Cloud.

Esecuzione di un'immagine

Puoi eseguire un'immagine di Container Registry su un cluster Google Kubernetes Engine utilizzando questo comando:

kubectl run [NAME] --image=[HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]

dove:

  • [NAME] è il nome della risorsa
  • [HOSTNAME] è elencato in Location nella console. È una delle quattro opzioni: gcr.io, us.gcr.io, eu.gcr.io o asia.gcr.io.
  • [PROJECT-ID] è l'ID progetto della console Google Cloud. Se l'ID progetto contiene i due punti (:), consulta Progetti con ambito di 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 predefinito latest.

Per ulteriori informazioni sui comandi Kubernetes, consulta la Panoramica di kubectl.

Cloud Run

Puoi eseguire il deployment in Cloud Run delle immagini archiviate in Container Registry.

Autorizzazioni obbligatorie

Per eseguire il deployment in Cloud Run, devi avere il ruolo Proprietario o Editor, oppure entrambi i ruoli Amministratore di Cloud Run e Utente account di servizio oppure qualsiasi ruolo personalizzato che includa questo elenco specifico di autorizzazioni.

Deployment delle immagini

Per ulteriori informazioni sul 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, eseguirne il push in 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 il pull dai repository nello stesso progetto ed eseguirne il push.

Se App Engine si trova in un altro progetto, devi concedere all'account di servizio App Engine le autorizzazioni per accedere al repository di Container Registry.

Deployment in App Engine

Puoi eseguire il deployment in App Engine di un'immagine ospitata da Container Registry utilizzando Google Cloud CLI.

  1. Crea il file di configurazione di App Engine per l'app.
  2. Crea un'immagine Docker ed push del file nel tuo repository. Puoi utilizzare Cloud Build per creare ed eseguire il push del container nel repository.
  3. Esegui il deployment dell'immagine in App Engine eseguendo questo comando:

    gcloud app deploy --image-url=[HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]
    

dove:

  • [HOSTNAME] è elencato in Location nella console. È una delle quattro opzioni: gcr.io, us.gcr.io, eu.gcr.io o asia.gcr.io.
  • [PROJECT-ID] è l'ID progetto della console Google Cloud. Se l'ID progetto contiene i due punti (:), consulta Progetti con ambito di 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 predefinito latest.