Cloud Run ti consente di eseguire immagini stateless in un ambiente serverless. Con Cloud Build puoi eseguire il deployment di immagini da Container Registry (Ritirato) e Artifact Registry in Cloud Run. Puoi eseguire il deployment di un'immagine esistente, creare e implementare un'immagine o automatizzare il deployment.
Prima di iniziare
-
Enable the Cloud Build, Cloud Run, Container Registry, and Resource Manager APIs.
Prepara il codice sorgente dell'applicazione. Il codice sorgente deve essere archiviato in un repository, ad esempio Cloud Source Repositories, GitHub o Bitbucket.
Per eseguire i comandi
gcloud
in questa pagina, installa Google Cloud CLI.Se utilizzi i Controlli di servizio VPC, configura un pool privato nel perimetro dei Controlli di servizio VPC. Devi anche configurare Cloud Run per i Controlli di servizio VPC.
Autorizzazioni Identity and Access Management richieste
Per ottenere le autorizzazioni necessarie per eseguire il deployment in Cloud Run utilizzando Cloud Build, chiedi all'amministratore di concederti i seguenti ruoli IAM nell'account di servizio Cloud Build predefinito:
-
Sviluppatore Cloud Run (
roles/run.developer
) -
Logs Writer (
roles/logging.logWriter
) -
Artifact Registry Writer (
roles/artifactregistry.writer
) -
Utente account di servizio (
roles/iam.serviceAccountUser
) -
Amministratore archiviazione (
roles/storage.admin
)
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 i ruoli personalizzati o altri ruoli predefiniti.
Creazione e deployment di un'immagine
Cloud Build ti consente di creare un'immagine, archiviarla in Artifact Registry e poi eseguirne il deployment in Cloud Run.
Per creare ed eseguire il deployment di un'immagine:
Nella directory principale del progetto, crea un file di configurazione denominato
cloudbuild.yaml
.Nel file di configurazione della build, aggiungi
docker
passaggi di compilazione per creare l'immagine e spingerla ad Artifact Registry, quindi aggiungi un passaggio di compilazionegcloud
per invocare il comandogcloud run deploy
per eseguire il deployment dell'immagine su Cloud Run:steps: # Build the image - name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE', '.'] # Push the image to Artifact Registry - name: 'gcr.io/cloud-builders/docker' args: ['push', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE'] # Deploy image to Cloud Run - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' entrypoint: gcloud args: ['run', 'deploy', 'SERVICE_NAME', '--image', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE', '--region', 'SERVICE_REGION'] images: - 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE'
Dove:
REPOSITORY
è il nome del repository Artifact Registry da cui esegui il deployment dell'immagine.LOCATION
è la posizione del repository Artifact Registry, ad esempious-east1
.PROJECT_ID
è l'ID Google Cloud del progetto in cui è archiviata l'immagine.SERVICE_NAME
è il nome del servizio Cloud Run.SERVICE_REGION
è la regione del servizio Cloud Run di cui stai eseguendo il deployment.IMAGE
è il nome dell'immagine in Artifact Registry.
Vai alla directory principale del progetto ed esegui il seguente comando, dove
LOCATION
è una delle regioni di compilazione supportate per eseguire la compilazione:gcloud builds submit --region=LOCATION
Al termine dell'operazione, viene visualizzato un messaggio di conferma insieme all'URL del servizio di cui è stato eseguito il deployment.
Deployment continuo
Puoi automatizzare il deployment del tuo software in Cloud Run creando trigger di Cloud Build. Puoi configurare i trigger per creare ed eseguire il deployment delle immagini ogni volta che aggiorni il codice sorgente.
Per automatizzare il deployment:
Nella directory principale del repository, aggiungi un file di configurazione denominato
cloudbuild.yaml
con i passaggi per compilare l'immagine, eseguirne il push in Container Registry e invocare il comandogcloud run deploy
:steps: # Build the image - name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA', '.'] # Push the image to Artifact Registry - name: 'gcr.io/cloud-builders/docker' args: ['push', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA'] # Deploy image to Cloud Run - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' entrypoint: gcloud args: - 'run' - 'deploy' - 'SERVICE_NAME' - '--image' - 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA' - 'region' - 'SERVICE_REGION' images: - 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA'
Dove:
REPOSITORY
è il nome del repository Artifact Registry da cui esegui il deployment dell'immagine.LOCATION
è la posizione del repository Artifact Registry, ad esempious-east1
.PROJECT_ID
è l'ID Google Cloud del progetto in cui è archiviata l'immagine.SERVICE_NAME
è il nome del servizio Cloud Run.SERVICE_REGION
è la regione del servizio Cloud Run di cui stai eseguendo il deployment.IMAGE
è il nome dell'immagine in Artifact Registry.
La variabile di sostituzione
$COMMIT_SHA
viene compilata da Cloud Build quando viene attivata da un repository Git.Crea un attivatore di compilazione con il file di configurazione creato nel passaggio precedente:
Apri la pagina Trigger:
Fai clic su Crea trigger.
Nel campo Nome, inserisci un nome per l'attivatore.
In Regione, seleziona la regione per l'attivatore.
In Evento, seleziona l'evento del repository per avviare l'attivatore.
In Origine, seleziona il repository e il nome del ramo o del tag che attiverà l'attivatore. Per ulteriori informazioni su come specificare i branch da compilare automaticamente, consulta Creare un attivatore di compilazione.
In Configurazione, seleziona File di configurazione di Cloud Build (YAML o JSON).
Nel campo Posizione file di configurazione Cloud Build, digita
cloudbuild.yaml
dopo/
.Fai clic su Crea per salvare il trigger di build.
Ora, quando esegui il push di nuovo codice nel repository, Cloud Build invoca una compilazione ed esegue il deployment del servizio in Cloud Run.
Per ulteriori informazioni sulla creazione di trigger Cloud Build, consulta Creare e gestire gli trigger di build.
Utilizzo di autorizzazioni IAM minime
Quando un'immagine viene dispiata in un servizio Cloud Run, viene eseguita utilizzando l'identità dell'account di servizio di runtime del servizio Cloud Run. Poiché Cloud Build può eseguire il deployment di nuove immagini automaticamente, deve essere in grado di agire come account di servizio di runtime del tuo servizio Cloud Run.
Per concedere a Cloud Build l'accesso limitato per eseguire il deployment in un servizio Cloud Run, segui questi passaggi:
Console
Vai alla pagina Account di servizio della console Google Cloud:
Fai clic sull'indirizzo email dell'account di servizio di runtime del tuo servizio Cloud Run (per impostazione predefinita è
PROJECT_NUMBER-compute@developer.gserviceaccount.com
).Fai clic sulla scheda Autorizzazioni.
Fai clic su
Concedi accesso.Inserisci il service account Cloud Build (
PROJECT_NUMBER@cloudbuild.gserviceaccount.com
)Nel menu a discesa Seleziona un ruolo, seleziona il ruolo Account di servizio > Utente account di servizio.
Fai clic su Salva.
gcloud
Utilizza il comando gcloud iam service-accounts add-iam-policy-binding
, dove
PROJECT_NUMBER
è l'ID numerico del progetto:
gcloud iam service-accounts add-iam-policy-binding \ PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --member="serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com" \ --role="roles/iam.serviceAccountUser"
Sostituisci PROJECT_NUMBER con l'ID numerico del progetto.
Se utilizzi Cloud Run con un'identità servizio personalizzata, sostituitePROJECT_NUMBER-compute@developer.gserviceaccount.com
con l'indirizzo del tuo account di servizio.
Per ulteriori informazioni, consulta la sezione Autorizzazioni di deployment.
Esempi di codice
Ecco alcuni repository di esempio, ognuno dei quali contiene un'applicazione di esempio e un file di configurazione di compilazione per eseguire il deployment dell'applicazione in Cloud Run:
- deploy-prebuilt: un esempio di codice che mostra come eseguire il deployment di un'immagine predefinita in Cloud Run.
- run-example-builddeploy: un esempio di codice che mostra come creare ed eseguire il deployment di un'immagine in Cloud Run.
Passaggi successivi
- Scopri come utilizzare Cloud Deploy per eseguire il deployment in Cloud Run.
- Scopri come eseguire il deployment su GKE.
- Scopri come eseguire il deployment in Cloud Run Functions.
- Scopri come eseguire il deployment su App Engine.
- Scopri come eseguire il deployment su Firebase.
- Scopri come eseguire deployment blu/verdi su Compute Engine.
- Scopri come risolvere gli errori di compilazione.