Utilizzo di Container Registry con Google Cloud

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 generali

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 di Compute Engine, incluse le VM in Google Kubernetes Engine cluster, l'accesso si basa sia sulle autorizzazioni IAM sia sullo spazio di archiviazione ambiti di accesso.

Devi configurare o modificare le autorizzazioni personalmente 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, fai riferimento alle 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 rispetto ai repository a cui vuoi che le build accedano.
  • 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 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 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 maggiori dettagli su autorizzazioni e ambiti di accesso, consulta Integrazione con i servizi Google Cloud

Deployment delle immagini in corso...

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 di Compute Engine ottimizzata per i container utilizzando un'immagine nel tuo registro, consulta Avvio di un container 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 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 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 maggiori dettagli su autorizzazioni e 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. Si tratta di 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 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 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

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

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 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, 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 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.

  1. Crea il file di configurazione di App Engine per la tua app.
  2. 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.
  3. 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 in Location nella console. Deve essere 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 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.