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 l'esecuzione di operazioni continue in background. A differenza dei servizi Cloud Run, i pool di worker non hanno un endpoint/URL bilanciato e non supportano la scalabilità automatica.

Per un esempio dettagliato del deployment di un nuovo worker pool, consulta Guida rapida al deployment di un worker pool 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 di 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 di dimensioni superiori a 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 la console Google Cloud , Google Cloud CLI o Terraform.

Console

  1. Nella console Google Cloud , vai a Cloud Run:

    Vai a Cloud Run

  2. Seleziona Worker pool dal menu e fai clic su Esegui il deployment del container per visualizzare il modulo Crea worker pool.

    1. Nel modulo, specifica l'immagine container.

    2. Inserisci il nome del pool di worker. I nomi dei pool di lavoratori devono contenere al massimo 49 caratteri e devono essere univoci per regione e progetto. Non puoi condividere lo stesso nome di un nome di servizio esistente del tuo progetto. Il nome di un pool di worker non può essere modificato in un secondo momento ed è visibile pubblicamente.

    3. Seleziona la regione in cui vuoi che si trovi il worker. Il selettore di regioni indica la fascia di prezzo ed evidenzia le regioni con l'impatto delle emissioni di carbonio più basso.

    4. In Scalabilità, specifica il numero di istanze per il pool di worker.

  3. Fai clic su Container, volumi, networking, sicurezza per impostare altre impostazioni facoltative nelle schede appropriate:

  4. Al termine della configurazione del pool di worker, fai clic su Crea per eseguire il deployment dell'immagine su Cloud Run e attendi il completamento del deployment.

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: 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
  3. 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 regione Google Cloud , ad esempio europe-west1.
    • IMAGE_URL: un riferimento all'immagine container che contiene il pool di worker, ad esempio us-docker.pkg.dev/cloudrun/container/worker-pool:latest.

Località Cloud Run

Cloud Run è regionale, il che significa che l'infrastruttura che esegue i tuoi servizi Cloud Run si trova in una regione specifica ed è gestita da Google per essere disponibile in modo ridondante in tutte le zone all'interno di quella regione.

Il rispetto dei requisiti di latenza, disponibilità o durabilità sono fattori primari per la selezione della regione in cui vengono eseguiti i servizi Cloud Run. In genere puoi selezionare la regione più vicina ai tuoi utenti, ma devi considerare la posizione degli altri Google Cloud prodotti utilizzati dal tuo servizio Cloud Run. L'utilizzo combinato dei prodotti Google Cloud in più località può influire sulla latenza e sui costi del servizio.

Cloud Run è disponibile nelle seguenti regioni:

Soggetto ai prezzi di Livello 1

Soggetto ai prezzi di Livello 2

  • africa-south1 (Johannesburg)
  • asia-east2 (Hong Kong)
  • asia-northeast3 (Seul, Corea del Sud)
  • asia-southeast1 (Singapore)
  • asia-southeast2 (Giacarta)
  • asia-south2 (Delhi, India)
  • australia-southeast1 (Sydney)
  • australia-southeast2 (Melbourne)
  • europe-central2 (Varsavia, Polonia)
  • europe-west10 (Berlino) icona foglia Bassi livelli di CO2
  • europe-west12 (Torino)
  • europe-west2 (Londra, Regno Unito) icona foglia Bassi livelli di CO2
  • europe-west3 (Francoforte, Germania)
  • europe-west6 (Zurigo, Svizzera) icona foglia Bassi livelli di CO2
  • me-central1 (Doha)
  • me-central2 (Dammam)
  • northamerica-northeast1 (Montreal) icona foglia Bassi livelli di CO2
  • northamerica-northeast2 (Toronto) icona foglia Bassi livelli di CO2
  • southamerica-east1 (San Paolo, Brasile) icona foglia Bassi livelli di CO2
  • southamerica-west1 (Santiago, Cile) icona foglia Bassi livelli di CO2
  • us-west2 (Los Angeles)
  • us-west3 (Salt Lake City)
  • us-west4 (Las Vegas)

Se hai già creato un servizio Cloud Run, puoi visualizzare la regione nella dashboard di Cloud Run nella consoleGoogle Cloud .

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 la console Google Cloud , Google Cloud CLI o Terraform:

Console

  1. Nella console Google Cloud , vai a Cloud Run:

    Vai a Cloud Run

  2. Seleziona Pool di worker dal menu, seleziona il pool di worker da aggiornare, quindi fai clic su Modifica ed esegui il deployment della nuova revisione per visualizzare il modulo Esegui il deployment della revisione del pool di worker.

    1. Se necessario, specifica l'URL della nuova immagine container di cui eseguire il deployment.

    2. Configura il contenitore in base alle esigenze.

    3. Se necessario, aggiorna il numero di istanze per il pool di worker.

  3. Se necessario, fai clic su Container, volumi, networking, sicurezza per impostare altre impostazioni facoltative nelle schede appropriate:

  4. Al termine dell'aggiornamento del pool di worker, fai clic su Esegui il deployment.

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

  3. Terraform

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

    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 delle immagini di 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'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 del 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 -> Lettore Artifact Registry.

  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 policy 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 pool di worker in cui stai eseguendo 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: 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: un riferimento all'immagine del 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.

  4. 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 regione Google Cloud , ad esempio europe-west1.
    • CONTAINER_NAME: il nome del contenitore.
    • IMAGE_URL: 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: