Deployment in Cloud Run con Cloud Build

Questa pagina spiega come eseguire automaticamente il deployment dei servizi Cloud Run utilizzando in Cloud Build. Se non hai mai utilizzato Cloud Build, leggi le guide rapide e Panoramica della configurazione della build.

Cloud Run consente di eseguire container stateless in un completamente serverless. Con Cloud Build, puoi eseguire il deployment di immagini container Container Registry (deprecato) e Artifact Registry per in Cloud Run. Puoi eseguire il deployment di un'immagine esistente, creare ed eseguire il deployment di un'immagine, o automatizzare il deployment.

Prima di iniziare

  • Abilita le API Cloud Build, Cloud Run, Container Registry, and Resource Manager.

    Abilita le API

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

Autorizzazioni IAM richieste

Se l'immagine è archiviata nello stesso progetto Google Cloud che vuoi di cui eseguire il deployment o se la tua immagine è pubblica in Container Registry, sono necessarie le seguenti autorizzazioni IAM:

Per eseguire il deployment in Cloud Run, concedi all'amministratore di Cloud Run e I ruoli utente account di servizio per l'account di servizio che utilizzi per la build:

  1. Apri la pagina delle impostazioni di Cloud Build nella console Google Cloud:

    Vai alla pagina delle impostazioni di Cloud Build

  2. Dall'elenco a discesa, seleziona l'account di servizio di cui vuoi assegnare i ruoli modifica.

    Screenshot della pagina Autorizzazioni dell'account di servizio

  3. Nel riquadro Autorizzazioni account di servizio, imposta lo stato del Ruolo Amministratore Cloud Run su ATTIVATO:

  4. Nel popup potrebbero essere richiesti passaggi aggiuntivi, fai clic su CONCEDI L'ACCESSO A TUTTI GLI ACCOUNT DI SERVIZIO.

Creazione e deployment di un container

Cloud Build ti consente di creare l'immagine container e archiviare l'immagine creata in Container Registry, per poi eseguire il deployment dell'immagine in Cloud Run.

Per creare un'immagine container ed eseguirne il deployment:

  1. Nella directory root del progetto, crea un file di configurazione denominato cloudbuild.yaml.

  2. Nel file di configurazione di compilazione, aggiungi docker passaggi di build per creare l'immagine e esegui il push in Container Registry, quindi aggiungi un passaggio di build gcloud richiama il comando gcloud run deploy per eseguire il deployment dell'immagine su Cloud Run:

    steps:
    # Build the container image
    - name: 'gcr.io/cloud-builders/docker'
      args: ['build', '-t', 'gcr.io/PROJECT_ID/IMAGE', '.']
    # Push the container image to Container Registry
    - name: 'gcr.io/cloud-builders/docker'
      args: ['push', 'gcr.io/PROJECT_ID/IMAGE']
    # Deploy container image to Cloud Run
    - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
      entrypoint: gcloud
      args: ['run', 'deploy', 'SERVICE_NAME', '--image', 'gcr.io/PROJECT_ID/IMAGE', '--region', 'SERVICE_REGION']
    images:
    - gcr.io/PROJECT_ID/IMAGE
    

    Dove:

    • SERVICE_NAME è il nome di Cloud Run completamente gestito di Google Cloud.
    • SERVICE_REGION è la regione di Cloud Run del servizio di cui stai eseguendo il deployment.
    • PROJECT_ID è il tuo account Google Cloud in cui è archiviata l'immagine.
    • IMAGE è il nome della tua immagine in e Container Registry.
  3. Passa alla directory root del progetto ed esegui questo comando, BUILD_REGION è una delle regioni di build supportate per eseguire la build:

     gcloud builds submit --region=BUILD_REGION
    

Dopo il completamento, viene visualizzato un messaggio di operazione riuscita 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 Cloud Build. Puoi e configurare i trigger per creare ed eseguire il deployment delle immagini ogni volta che aggiorni codice sorgente.

Per automatizzare il deployment:

  1. Nella root del repository, aggiungi un file di configurazione denominato cloudbuild.yaml con i passaggi per creare l'immagine, eseguirne il push in Container Registry richiama il comando gcloud run deploy:

      steps:
      # Build the container image
      - name: 'gcr.io/cloud-builders/docker'
        args: ['build', '-t', 'gcr.io/$PROJECT_ID/SERVICE_NAME:$COMMIT_SHA', '.']
      # Push the container image to Container Registry
      - name: 'gcr.io/cloud-builders/docker'
        args: ['push', 'gcr.io/$PROJECT_ID/SERVICE_NAME:$COMMIT_SHA']
      # Deploy container image to Cloud Run
      - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
        entrypoint: gcloud
        args:
        - 'run'
        - 'deploy'
        - 'SERVICE_NAME'
        - '--image'
        - 'gcr.io/$PROJECT_ID/SERVICE_NAME:$COMMIT_SHA'
        - '--region'
        - 'SERVICE_REGION'
      images:
      - 'gcr.io/$PROJECT_ID/SERVICE_NAME:$COMMIT_SHA'
    

    Dove:

    • SERVICE_NAME è il nome di Cloud Run completamente gestito di Google Cloud.
    • SERVICE_REGION è la regione di Cloud Run del servizio di cui stai eseguendo il deployment.

    Cloud Build utilizza la variabile di sostituzione $COMMIT_SHA quando viene attivata da un repository Git.

  2. Crea un trigger di build con il file di configurazione creato nella precedente passaggio:

    1. Apri la pagina Attivatori:

      Vai alla pagina Attivatori

    2. Fai clic su Crea trigger.

    3. Nel campo Nome, inserisci un nome per il trigger.

    4. In Regione, seleziona la regione per il trigger.

    5. In Evento, seleziona l'evento del repository per avviare il trigger.

    6. In Origine, seleziona il repository e il nome del ramo o tag che farà partire il trigger. Per ulteriori informazioni su come specificare quali rami creare automaticamente, vedi Creazione di un trigger di build.

    7. In Configurazione, seleziona Cloud Build. di configurazione del deployment (YAML o JSON).

    8. Nel campo Posizione file di configurazione Cloud Build, digita cloudbuild.yaml dopo /.

    9. Fai clic su Crea per salvare il trigger di build.

  3. Hai finito. D'ora in poi, ogni volta che esegui il push nel repository, e viene richiamato automaticamente un deployment nel tuo servizio.

Ogni volta che esegui il push di nuovo codice nel tuo repository, attiverai automaticamente creare ed eseguire il deployment nel tuo servizio Cloud Run.

Per saperne di più sulla creazione di trigger di Cloud Build, consulta Creazione e gestione dei trigger di build.

Utilizzo di autorizzazioni IAM minime

Quando viene eseguito il deployment di un container in un servizio Cloud Run, quest'ultimo viene eseguito con e l'identità dell'account di servizio di runtime di questo servizio Cloud Run. Poiché Cloud Build può eseguire automaticamente il deployment di nuovi container, deve poter agire come account di servizio di runtime servizio Cloud Run.

Per concedere l'accesso limitato a Cloud Build per il deployment in un servizio Cloud Run:

Console

  1. Vai alla pagina Account di servizio della console Google Cloud:

    Vai ad Account di servizio

  2. Fai clic sull'indirizzo email del servizio Runtime Service Account (per impostazione predefinita, PROJECT_NUMBER-compute@developer.gserviceaccount.com).

  3. Fai clic sulla scheda Autorizzazioni.

  4. Fai clic su Concedi l'accesso.

  5. Inserisci l'account di servizio Cloud Build (PROJECT_NUMBER@cloudbuild.gserviceaccount.com)

  6. Nel menu a discesa Seleziona un ruolo, seleziona Servizio Account > Utente account di servizio.

  7. Fai clic su Salva.

gcloud

Usa il comando gcloud iam service-accounts add-iam-policy-binding, dove PROJECT_NUMBER è l'ID numerico del tuo 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à di servizio personalizzata, sostituisci PROJECT_NUMBER-compute@developer.gserviceaccount.com con il tuo servizio all'indirizzo dell'account.

Consulta Autorizzazioni di deployment per ulteriori informazioni.

Esempi di codice

Ecco alcuni repository di esempio, ognuno dei quali contiene un esempio e un file di configurazione di compilazione per eseguire il deployment dell'applicazione in Cloud Run:

  • deployment predefinito: 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 un'immagine ed eseguirne il deployment in Cloud Run.

Passaggi successivi