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 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 configurate con le autorizzazioni di Cloud Storage per accedere a Container Registry all'interno dello 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:

  • Per accedere stai utilizzando un account di servizio in un progetto 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 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 necessarie per eseguire il push e il pull delle immagini quando Container Registry si trova nello stesso progetto.

Devi configurare personalmente le autorizzazioni appropriate nei seguenti casi:

  • Cloud Build si trova in un progetto diverso dai repository che a cui vuoi accedere le build.
  • Le build utilizzano un account di servizio diverso da quello predefinito Account di servizio Cloud Build. In questo caso, devi concedi all'account di servizio le autorizzazioni per accedere e 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 estrarre le immagini.

Se l'istanza VM si trova in un progetto diverso o se l'istanza VM utilizza un altro account di servizio, devi concedere all'account di servizio le autorizzazioni appropriate per accedere al bucket di archiviazione utilizzato da Container Registry.

Per impostazione predefinita, una VM di Compute Engine ha l'ambito di accesso read-only 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ù, vedi la documentazione di Compute Engine per eseguire il deployment dei container e creazione di modelli di istanza 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, vedi Creazione e configurazione delle istanze.

Google Kubernetes Engine

Google Kubernetes Engine utilizza il service account 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 Nello stesso progetto Google Cloud, l'account di servizio predefinito di Compute Engine sia configurato con le autorizzazioni appropriate per eseguire il push o il pull delle immagini.

Se il cluster si trova in un progetto diverso o se le VM nel cluster utilizzano un altro account di servizio, devi concedere all'account di servizio le autorizzazioni appropriate per accedere al bucket di archiviazione utilizzato da Container Registry.

Per impostazione predefinita, una VM di Compute Engine ha l'ambito di accesso read-only 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 di 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 in Location nella console. È uno di 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 dominio.
  • [IMAGE] è il nome dell'immagine in Container Registry.
  • [TAG] è il tag che identifica la versione dell'immagine in e Container Registry. Se non specifichi un tag, Container Registry cercherà il tag predefinito latest.

Per ulteriori informazioni sui comandi Kubernetes, vedi Panoramica di kubectl.

Cloud Run

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

Autorizzazioni obbligatorie

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

Deployment delle immagini in corso...

Per saperne di più sul deployment di un'immagine in Cloud Run, consulta la documentazione documentazione.

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 un fornendo un'immagine Docker o 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 pull da e push verso i repository nello stesso progetto.

Se App Engine si trova in un progetto diverso, devi concedere la classe Account di servizio App Engine con autorizzazioni di accesso nel repository di Container Registry.

Deployment in App Engine

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

  1. Crea il file di configurazione di App Engine per la tua app.
  2. Crea un'immagine Docker ed esegui il push del file repository Git. Puoi utilizzare Cloud Build per creare e 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. È uno di 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 dominio.
  • [IMAGE] è il nome dell'immagine in Container Registry.
  • [TAG] è il tag che identifica la versione dell'immagine in e Container Registry. Se non specifichi un tag, Container Registry cercherà il tag predefinito latest.