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
- Aggiornare un pool di worker esistente
- Esegui il deployment di immagini da altri progetti Google Cloud
- Esegui il deployment di più container (sidecar) in un pool di worker
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
-
In the Google Cloud console, 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.
Per eseguire il deployment di un'immagine container del pool di worker:
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.
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
-
In the Google Cloud console, 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.
Per eseguire il deployment di un'immagine container:
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.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.
Apporta una modifica al file di configurazione.
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:
Nella console Google Cloud , apri il progetto per il tuo pool di worker Cloud Run.
Seleziona Includi concessioni di ruoli fornite da Google.
Copia l'indirizzo email dell'agente di servizio Cloud Run. Ha il suffisso @serverless-robot-prod.iam.gserviceaccount.com
Apri il progetto proprietario del registro dei container che vuoi utilizzare.
Fai clic su Aggiungi per aggiungere una nuova entità.
Nel campo Nuove entità, incolla l'email dell'account di servizio che hai copiato in precedenza.
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.
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
-
In the Google Cloud console, 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.
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
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:
- Visualizzare i log del pool di worker
- Monitorare il rendimento del pool di worker
- Impostare limiti di memoria
- Imposta le variabili di ambiente
- Gestisci il worker pool
- Gestisci le revisioni del pool di worker