Esegui il deployment dei worker pool in Cloud Run

Questa pagina mostra come eseguire il deployment di immagini container in un nuovo pool di worker Cloud Run o in una nuova revisione di un pool di worker Cloud Run esistente.

I pool di worker sono una risorsa Cloud Run progettata specificamente per i carichi di lavoro non di richiesta. A differenza dei servizi Cloud Run, i pool di worker non dispongono delle seguenti funzionalità:

  • Endpoint/URL pubblico
  • Requisito per esporre una porta in entrata
  • Scalabilità automatica basata sulle richieste

Per un esempio dettagliato del deployment di un nuovo pool di worker, consulta la Guida rapida per il deployment di un pool di worker di esempio.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per eseguire il deployment dei pool di worker Cloud Run, chiedi all'amministratore di concederti i seguenti ruoli IAM:

  • Cloud Run Developer (roles/run.developer) nel pool di worker Cloud Run
  • Utente service account (roles/iam.serviceAccountUser) sull'identità utilizzata dai pool di worker per interagire con altri servizi Google Cloud
  • Lettore Artifact Registry (roles/artifactregistry.reader) sul repository Artifact Registry dell'immagine container di cui è stato eseguito il deployment

Per un elenco di ruoli e autorizzazioni IAM associati a Cloud Run, consulta Ruoli IAM Cloud Run e Autorizzazioni IAM Cloud Run. Se il tuo pool di worker Cloud Run interagisce con le APIGoogle Cloud , come le librerie client Cloud, consulta la guida alla configurazione dell'identità del servizio. Per ulteriori informazioni sulla concessione dei ruoli, consulta Autorizzazioni di deployment e Gestire l'accesso.

Registri e immagini container supportati

Puoi utilizzare direttamente le immagini container archiviate in Artifact Registry o Docker Hub. Google consiglia l'utilizzo di Artifact Registry. Le immagini Docker Hub vengono memorizzate nella cache per un massimo di un'ora.

Puoi utilizzare immagini container da altri registri pubblici o privati (come JFrog Artifactory, Nexus o GitHub Container Registry) configurando un repository remoto di Artifact Registry.

Devi prendere in considerazione Docker Hub solo per il deployment di immagini container popolari come le immagini ufficiali di Docker o le immagini OSS sponsorizzate da Docker. Per una maggiore disponibilità, Google consiglia di eseguire il deployment di queste immagini Docker Hub utilizzando un repository remoto di Artifact Registry.

Cloud Run non supporta i livelli di immagini container più grandi di 9,9 GB quando esegui il deployment da Docker Hub o da un repository remoto Artifact Registry con un registro esterno.

Esegui il deployment dei worker pool

Puoi eseguire il deployment dei pool di worker nei seguenti modi:

Esegui il deployment di un nuovo worker pool

Puoi specificare un'immagine container con un tag (ad esempio us-docker.pkg.dev/my-project/container/my-image:latest) o con un digest esatto (ad esempio us-docker.pkg.dev/my-project/container/my-image@sha256:41f34ab970ee...).

Eseguendo il deployment di un pool di worker per la prima volta viene creata la prima revisione. Tieni presente che le revisioni sono immutabili. Se esegui il deployment dal tag di un'immagine container, verrà risolto in un digest e la revisione gestirà sempre questo particolare digest.

Segui le istruzioni utilizzando Google Cloud CLI o Terraform.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Per eseguire il deployment di un'immagine container del pool di worker:

    1. Esegui questo comando:

      gcloud beta run worker-pools deploy WORKER_POOL --image IMAGE_URL 

      Sostituisci quanto segue:

      • WORKER_POOL: il nome del pool di worker in cui vuoi eseguire il deployment. Se il worker pool non esiste ancora, questo comando lo crea durante il deployment. Puoi omettere completamente questo parametro, ma ti verrà chiesto il nome del pool di worker se lo ometti. I nomi dei pool di lavoratori devono avere un massimo di 49 caratteri, utilizzare un nome univoco per regione e progetto e non devono condividere lo stesso nome di un nome di servizio esistente del tuo progetto.
      • IMAGE_URL con un riferimento all'immagine container che contiene il pool di worker, ad esempio us-docker.pkg.dev/cloudrun/container/worker-pool:latest. Tieni presente che se non fornisci il flag --image, il comando di deployment tenta di eseguire il deployment dal codice sorgente.
    2. Attendi il completamento del deployment. Al termine dell'operazione, Cloud Run mostra un messaggio di operazione riuscita insieme alle informazioni sulla revisione del pool di worker di cui è stato eseguito il deployment.

      Per eseguire il deployment in una località diversa da quella impostata utilizzando le proprietà run/region gcloud, utilizza:

      gcloud beta run worker-pools deploy WORKER_POOL --region REGION

Terraform

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

resource "google_cloud_run_v2_worker_pool" "default" {
  name     = "WORKER_POOL"
  location = "REGION"
  launch_stage = "BETA"

  template {
    containers {
      image = "IMAGE_URL"
    }
  }
}

Sostituisci quanto segue:

  • WORKER_POOL: il nome del pool di worker.
  • REGION: la Google Cloud regione, ad esempio europe-west1.
  • IMAGE_URL con un riferimento all'immagine container che contiene il pool di worker, ad esempio us-docker.pkg.dev/cloudrun/container/worker-pool:latest.

Esegui il deployment di una nuova revisione di un pool di worker esistente

Tieni presente che la modifica delle impostazioni di configurazione per un pool di worker comporta la creazione di una nuova revisione, anche se non viene apportata alcuna modifica all'immagine del container. Ogni revisione creata è immutabile.

L'immagine container viene importata da Cloud Run al momento del deployment. Cloud Run conserva questa copia dell'immagine container finché viene utilizzata da una revisione.

Segui queste istruzioni utilizzando Google Cloud CLI o Terraform:

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Per eseguire il deployment di un'immagine container:

    1. Esegui il comando:

      gcloud beta run worker-pools deploy WORKER_POOL --image IMAGE_URL 

      Sostituisci quanto segue:

      • WORKER_POOL: il nome del pool di worker in cui vuoi eseguire il deployment. Se il worker pool non esiste ancora, questo comando lo crea durante il deployment. Puoi omettere completamente questo parametro, ma ti verrà chiesto il nome del pool di worker se lo ometti. I nomi dei pool di lavoratori devono avere un massimo di 49 caratteri, utilizzare un nome univoco per regione e progetto e non devono condividere lo stesso nome di un nome di servizio esistente del tuo progetto.
      • IMAGE_URL con un riferimento all'immagine container che contiene il pool di worker, ad esempio us-docker.pkg.dev/cloudrun/container/worker-pool:latest. Tieni presente che se non fornisci il flag --image, il comando di deployment tenta di eseguire il deployment dal codice sorgente.

      Il suffisso di revisione viene assegnato automaticamente per le nuove revisioni. Se vuoi fornire il tuo suffisso di revisione, utilizza il parametro --revision-suffix di gcloud CLI.

    2. Attendi il completamento del deployment. Al termine dell'operazione, Cloud Run mostra un messaggio di operazione riuscita insieme alle informazioni sulla revisione del pool di worker di cui è stato eseguito il deployment.

Terraform

Assicurati di aver configurato Terraform come descritto nell'esempio Deployment di un nuovo pool di worker.

  1. Apporta una modifica al file di configurazione.

  2. Applica la configurazione Terraform:

    terraform apply

    Conferma di voler applicare le azioni descritte inserendo yes.

Esegui il deployment di immagini da altri Google Cloud progetti

Per eseguire il deployment di immagini da altri Google Cloud progetti, tu o il tuo amministratore dovete concedere i ruoli IAM richiesti all'account di deployment e all'agente di servizio Cloud Run.

Per i ruoli richiesti per l'account di deployment, consulta la sezione Ruoli richiesti.

Per concedere all'agente di servizio Cloud Run i ruoli richiesti, consulta le seguenti istruzioni:

  1. Nella console Google Cloud , apri il progetto per il tuo pool di worker Cloud Run.

    Vai alla pagina IAM

  2. Seleziona Includi concessioni di ruoli fornite da Google.

  3. Copia l'indirizzo email dell'agente di servizio Cloud Run. Ha il suffisso @serverless-robot-prod.iam.gserviceaccount.com

  4. Apri il progetto proprietario del registro dei container che vuoi utilizzare.

    Vai alla pagina IAM

  5. Fai clic su Aggiungi per aggiungere una nuova entità.

  6. Nel campo Nuove entità, incolla l'email dell'account di servizio che hai copiato in precedenza.

  7. Nel menu a discesa Seleziona un ruolo, se utilizzi Container Registry, seleziona il ruolo Storage -> Visualizzatore oggetti Storage. Se utilizzi Artifact Registry, seleziona il ruolo Artifact Registry -> Artifact Registry Reader.

  8. Esegui il deployment dell'immagine container nel progetto che contiene il pool di worker Cloud Run.

Deployment di immagini da altri registri

Per eseguire il deployment di immagini container pubbliche o private non archiviate in Artifact Registry o Docker Hub, configura un repository remoto di Artifact Registry.

I repository remoti di Artifact Registry ti consentono di:

  • Esegui il deployment di qualsiasi immagine container pubblica, ad esempio GitHub Container Registry (ghcr.io).
  • Esegui il deployment di immagini container da repository privati che richiedono l'autenticazione, ad esempio JFrog Artifactory o Nexus.

Se l'utilizzo di un repository remoto Artifact Registry non è un'opzione, puoi eseguire temporaneamente il pull e il push delle immagini container in Artifact Registry eseguendo il deployment in Cloud Run utilizzando docker push. Cloud Run importa l'immagine container durante il deployment e, successivamente, puoi eliminarla da Artifact Registry.

Esegui il deployment di più container (sidecar) in un pool di worker

In un deployment Cloud Run con sidecar, è presente un container del pool di worker principale e uno o più container sidecar. I sidecar possono comunicare tra loro e con il container del pool di worker utilizzando una porta localhost. La porta localhost varia a seconda dei container che utilizzi.

Puoi eseguire il deployment di un massimo di 10 container per istanza, incluso il container del pool di worker. Tutti i container all'interno di un'istanza condividono lo stesso spazio dei nomi di rete e possono anche condividere file utilizzando un volume condiviso in memoria.

Puoi richiedere che tutti i deployment utilizzino un sidecar specifico creando norme dell'organizzazione personalizzate.

Esegui il deployment di un servizio con container sidecar

Segui queste istruzioni, utilizzando Google Cloud CLI o Terraform per eseguire il deployment di più container in un pool di worker Cloud Run:

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Per eseguire il deployment di più container in un pool di worker, esegui questo comando:

    gcloud beta run worker-pools deploy WORKER_POOL \
     --container WORKER_POOL_CONTAINER_NAME \
     --image='WORKER_POOL_IMAGE' \
     --container SIDECAR_CONTAINER_NAME \
     --image='SIDECAR_IMAGE'

    Sostituisci quanto segue:

    • WORKER_POOL: il nome del worker pool in cui esegui il deployment. Se ometti questo parametro, ti verrà chiesto il nome del worker pool.
    • WORKER_POOL_CONTAINER_NAME: un nome per il container del pool di worker.
    • IMAGE_URL con un riferimento all'immagine container che contiene il pool di worker, ad esempio us-docker.pkg.dev/cloudrun/container/worker-pool:latest.
    • SIDECAR_CONTAINER_NAME: un nome per il container sidecar, ad esempio sidecar.
    • SIDECAR_IMAGE con un riferimento all'immagine container sidecar.

    Per configurare ogni contenitore nel comando di deployment, fornisci la configurazione di ogni contenitore dopo i parametri container, ad esempio:

    gcloud beta run worker-pools deploy WORKER_POOL \
      --container CONTAINER_1_NAME \
      --image='WORKER_POOL_IMAGE' \
      --set-env-vars=KEY=VALUE \
      --container SIDECAR_CONTAINER_NAME \
      --image='SIDECAR_IMAGE' \
      --set-env-vars=KEY_N=VALUE_N
  3. Attendi il completamento del deployment. Al termine dell'operazione, Cloud Run mostra un messaggio di operazione riuscita.

Terraform

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

resource "google_cloud_run_v2_worker_pool" "default" {
  name     = "WORKER_POOL"
  location = "REGION"
  launch_stage = "BETA"

  template {
    containers {
      name = "CONTAINER_NAME"
      image = "IMAGE_URL"
    }
    containers {
      name = "SIDECAR_CONTAINER_NAME"
      image = "SIDECAR_IMAGE_URL"
    }
  }
}

Sostituisci quanto segue:

  • WORKER_POOL: il nome del pool di worker.
  • REGION: la Google Cloud regione, ad esempio europe-west1.
  • CONTAINER_NAME: il nome del container.
  • IMAGE_URL con un riferimento all'immagine container che contiene il pool di worker, ad esempio us-docker.pkg.dev/cloudrun/container/worker-pool:latest.
  • SIDECAR_CONTAINER_NAME: il nome del container sidecar.
  • SIDECAR_IMAGE_URL: un riferimento all'immagine del container sidecar.

Funzionalità importanti disponibili per i deployment con i sidecar

Puoi specificare l'ordine di avvio dei container all'interno di un deployment con più container, se hai dipendenze che richiedono l'avvio di alcuni container prima di altri container nel deployment.

Se hai container che dipendono da altri container, devi utilizzare i controlli di integrità nel deployment. Quando utilizzi i controlli di integrità, Cloud Run segue l'ordine di avvio dei container, verificando l'integrità di ciascun container prima di avviare il successivo. Senza controlli di integrità, Cloud Run tenta di avviare tutti i container, anche se i container da cui dipendono non sono ancora in esecuzione o non sono stati avviati.

Più container all'interno di una singola istanza possono accedere a un volume in memoria condiviso, accessibile a ogni container utilizzando i punti di montaggio che crei.

Passaggi successivi

Dopo aver eseguito il deployment di un nuovo pool di worker, puoi: