I pool di worker Cloud Run consentono di dividere i carichi di lavoro non di richiesta tra più revisioni utilizzando la suddivisione delle istanze. Puoi assegnare percentuali di istanze specifiche a ogni revisione, eseguire il rollback a una revisione precedente o spostare tutte le istanze all'ultima revisione durante il deployment degli aggiornamenti.
Ciclo di vita delle suddivisioni delle istanze
Se dividi le istanze tra più revisioni o assegni le istanze a una revisione precedente, tutti i deployment successivi utilizzano questo pattern di suddivisione delle istanze. Per tornare a utilizzare solo l'ultima revisione senza la suddivisione delle istanze, invia tutte le istanze all'ultima revisione.
Le modifiche all'allocazione delle istanze non sono istantanee. Quando modifichi l'allocazione delle istanze per le revisioni, le attività in corso continuano fino al completamento e Cloud Run esegue la transizione dei carichi di lavoro tra le revisioni precedenti e quelle nuove in base alla suddivisione aggiornata.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per gestire i pool di worker Cloud Run e le revisioni dei pool di worker, chiedi all'amministratore di concederti il ruolo IAM Cloud Run Developer (roles/run.developer) nel pool di worker Cloud Run.
Per un elenco di ruoli e autorizzazioni IAM associati a Cloud Run, consulta Ruoli IAM di Cloud Run e Autorizzazioni IAM di Cloud Run. Se il tuo pool di worker Cloud Run interagisce con Google Cloud API, come le librerie client Cloud, consulta la guida alla configurazione dell'identità del servizio. Per saperne di più sulla concessione dei ruoli, consulta Autorizzazioni di deployment e Gestisci l'accesso.
Esegui il rollback a una revisione precedente
Per eseguire il rollback a una revisione precedente, utilizza la Google Cloud console, o Google Cloud CLI:
Console
Nella Google Cloud console, vai a Pool di worker Cloud Run:
Individua il pool di worker nell'elenco e fai clic su di esso.
Fai clic sulla scheda Revisioni per visualizzare l'elenco delle revisioni correnti per il pool di worker.
Fai clic su Gestisci suddivisioni delle istanze per visualizzare il modulo di gestione delle istanze. Cloud Run elenca l'ultima revisione di pubblicazione. Nel modulo, configura i seguenti dettagli:
- Aggiungi revisione e utilizza l'elenco a discesa per selezionare una revisione precedente.
- Imposta la percentuale di istanze della revisione precedente su 100.
- Imposta la percentuale dell'ultima revisione di pubblicazione su 0.
- Fai clic su Salva.
gcloud
Specifica le revisioni a cui eseguire il rollback eseguendo il comando seguente.
gcloud run worker-pools update-instance-split WORKER_POOL --to-revisions=REVISION=100
Sostituisci quanto segue:
- WORKER_POOL: il nome del pool di worker.
- REVISION: il nome della revisione a cui stai eseguendo il rollback.
YAML
Se stai creando un nuovo pool di worker, salta questo passaggio. Se stai aggiornando un pool di worker esistente, scarica la relativa configurazione YAML:
gcloud run worker-pools describe WORKER_POOL --format export > worker-pool.yaml
L'esempio seguente contiene la configurazione YAML:
apiVersion: run.googleapis.com/v1 kind: WorkerPool metadata: name: WORKER_POOL labels: cloud.googleapis.com/location: REGION spec: template: spec: containers: - image: IMAGE_URL instanceSplits: - revisionName: REVISION percent: 100Sostituisci quanto segue:
- WORKER_POOL: il nome del pool di worker.
- REGION: la Google Cloud regione, ad esempio
us-central1. IMAGE_URL: un riferimento all'immagine container che contiene il pool di worker, ad esempious-docker.pkg.dev/cloudrun/container/worker-pool:latest- REVISION: il nome della revisione a cui stai eseguendo il rollback.
Crea o aggiorna il pool di worker utilizzando il comando seguente:
gcloud run worker-pools replace worker-pool.yaml
Per impostazione predefinita, il comando
gcloud run worker-pools replaceutilizza il fileworker-pool.yaml, se presente.
Terraform
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.
import {
id = "projects/PROJECT_ID/locations/REGION/workerPools/WORKER_POOL"
to = google_cloud_run_v2_worker_pool.default
}
resource "google_cloud_run_v2_worker_pool" "default" {
name = "WORKER_POOL"
location = "REGION"
template {
containers {
image = "IMAGE_URL"
}
}
instance_splits {
type = "INSTANCE_SPLIT_ALLOCATION_TYPE_REVISION"
revision = "REVISION"
percent = 100
}
}
Sostituisci quanto segue:
- PROJECT_ID: l'ID del tuo Google Cloud progetto.
- REGION: la Google Cloud regione, ad esempio
us-central1. - WORKER_POOL: il nome del pool di worker.
IMAGE_URL: un riferimento all'immagine container che contiene il pool di worker, ad esempious-docker.pkg.dev/cloudrun/container/worker-pool:latest- REVISION: il nome della revisione a cui stai eseguendo il rollback.
Dividi le istanze tra più revisioni
Per dividere le istanze tra due o più revisioni, utilizza la Google Cloud console, o Google Cloud CLI:
Quando dividi le istanze tra più revisioni, assicurati che la percentuale totale di tutte le revisioni sia pari al 100% e che il numero di istanze manuali sia maggiore del numero di suddivisioni delle istanze che pubblicano il carico di lavoro.
Console
Nella Google Cloud console, vai a Pool di worker Cloud Run:
Individua il pool di worker nell'elenco e fai clic su di esso.
Fai clic sulla scheda Revisioni per visualizzare l'elenco delle revisioni correnti per il pool di worker.
Fai clic su Gestisci suddivisioni delle istanze per visualizzare il modulo di gestione delle istanze. Cloud Run elenca l'ultima revisione di pubblicazione. Nel modulo, configura i seguenti dettagli:
Imposta la percentuale dell'ultima revisione di pubblicazione sulla suddivisione richiesta, ad esempio riducila dal 100%.
Fai clic su Aggiungi revisione e utilizza l'elenco a discesa per selezionare una revisione precedente e impostare la percentuale di suddivisione corrispondente.
Per dividere le istanze con revisioni aggiuntive, fai clic su Aggiungi revisione, e seleziona un'altra revisione e imposta la relativa percentuale.
Fai clic su Salva.
gcloud
Specifica le revisioni e la percentuale di istanze eseguendo il comando seguente comando. Alloca le istanze per ogni revisione in un elenco delimitato da virgole:
gcloud run worker-pools update-instance-split WORKER_POOL --to-revisions=LIST
Sostituisci quanto segue:
WORKER_POOL: il nome del pool di worker.
LIST: elenco delimitato da virgole di revisioni e percentuali:
REVISION1=PERCENTAGE1,REVISION2=PERCENTAGE2,REVISIONn=PERCENTAGEx.
Ad esempio,
my-worker-pool-s5sxn=10,my-worker-pool-cp9kw=90.
YAML
Se stai creando un nuovo pool di worker, salta questo passaggio. Se stai aggiornando un pool di worker esistente, scarica la relativa configurazione YAML:
gcloud run worker-pools describe WORKER_POOL --format export > worker-pool.yaml
L'esempio seguente contiene la configurazione YAML:
apiVersion: run.googleapis.com/v1 kind: WorkerPool metadata: name: WORKER_POOL labels: cloud.googleapis.com/location: REGION annotations: run.googleapis.com/scalingMode: manual spec: template: spec: containers: - image: IMAGE_URL instanceSplits: - revisionName: REVISION1 percent: PERCENTAGE1 - revisionName: REVISION2 percent: PERCENTAGE2Sostituisci quanto segue:
- WORKER_POOL: il nome del pool di worker.
- REGION: la Google Cloud regione, ad esempio
us-central1. - INSTANCE_COUNT: il numero di istanze.
IMAGE_URL: un riferimento all'immagine container che contiene il pool di worker, ad esempious-docker.pkg.dev/cloudrun/container/worker-pool:latest- REVISION1 e REVISION2: il nome delle revisioni.
- PERCENTAGE1 e PERCENTAGE2: la percentuale di istanze da allocare a ciascuna di queste revisioni. Questi valori devono sommare 100.
Crea o aggiorna il pool di worker utilizzando il comando seguente:
gcloud run worker-pools replace worker-pool.yaml
Per impostazione predefinita, il comando
gcloud run worker-pools replaceutilizza il fileworker-pool.yaml, se presente.
Terraform
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.
import {
id = "projects/PROJECT_ID/locations/REGION/workerPools/WORKER_POOL"
to = google_cloud_run_v2_worker_pool.default
}
resource "google_cloud_run_v2_worker_pool" "default" {
name = "WORKER_POOL"
location = "REGION"
template {
containers {
image = "IMAGE_URL"
}
}
instance_splits {
type = "INSTANCE_SPLIT_ALLOCATION_TYPE_REVISION"
revision = "REVISION1"
percent = PERCENTAGE1
}
instance_splits {
type = "INSTANCE_SPLIT_ALLOCATION_TYPE_REVISION"
revision = "REVISION2"
percent = PERCENTAGE2
}
}
Sostituisci quanto segue:
- PROJECT_ID: l'ID del tuo Google Cloud progetto.
- REGION: la Google Cloud regione, ad esempio
us-central1. - WORKER_POOL: il nome del pool di worker.
IMAGE_URL: un riferimento all'immagine container che contiene il pool di worker, ad esempious-docker.pkg.dev/cloudrun/container/worker-pool:latest- REVISION1 e REVISION2: il nome delle revisioni.
- PERCENTAGE1 e PERCENTAGE2: la percentuale di istanze da allocare a ciascuna di queste revisioni. Questi valori devono sommare 100.
Alloca le istanze all'ultima revisione
Quando esegui il deployment di una nuova revisione, puoi allocare il 100% delle istanze a questa revisione e a tutte quelle future, sostituendo qualsiasi suddivisione delle istanze stabilita.
gcloud
Per allocare il 100% delle istanze alla latest revision, esegui i seguenti comandi:
Utilizza il flag
--to-latestper indirizzare il 100% delle istanze all'ultima revisione e allocare automaticamente tutte le istanze a qualsiasi nuova revisione di cui esegui il deployment:gcloud run worker-pools update-instance-split WORKER_POOL --to-latest(Facoltativo) Utilizza il flag
--to-revisionscon la parola chiaveLATESTper allocare sempre una percentuale mobile di istanze alla revisione più recente quando ne esegui il deployment. Per impostare una percentuale di istanze che fluttua sempre all'ultima revisione, esegui il comando seguente:gcloud run worker-pools update-instance-split WORKER_POOL --to-revisions=LATEST=PERCENTAGESostituisci quanto segue:
- WORKER_POOL: il nome del pool di worker.
- PERCENTAGE: la percentuale di istanze da allocare per l'ultima revisione e le revisioni future.
YAML
Se stai creando un nuovo pool di worker, salta questo passaggio. Se stai aggiornando un pool di worker esistente, scarica la relativa configurazione YAML:
gcloud run worker-pools describe WORKER_POOL --format export > worker-pool.yaml
L'esempio seguente contiene la configurazione YAML:
apiVersion: run.googleapis.com/v1 kind: WorkerPool metadata: name: WORKER_POOL labels: cloud.googleapis.com/location: REGION spec: template: spec: containers: - image: IMAGE_URL instanceSplits: - latestRevision: true percent: 100Sostituisci quanto segue:
- WORKER_POOL: il nome del pool di worker.
- REGION: la Google Cloud regione, ad esempio
us-central1. IMAGE_URL: un riferimento all'immagine container che contiene il pool di worker, ad esempious-docker.pkg.dev/cloudrun/container/worker-pool:latest
Crea o aggiorna il pool di worker utilizzando il comando seguente:
gcloud run worker-pools replace worker-pool.yaml
Per impostazione predefinita, il comando
gcloud run worker-pools replaceutilizza il fileworker-pool.yaml, se presente.
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"
template {
containers {
image = "IMAGE_URL"
}
}
instance_splits {
type = "INSTANCE_SPLIT_ALLOCATION_TYPE_LATEST"
percent = 100
}
}
Sostituisci quanto segue:
- WORKER_POOL: il nome del pool di worker.
- REGION: la Google Cloud regione, ad esempio
us-central1. IMAGE_URL: un riferimento all'immagine container che contiene il pool di worker, ad esempious-docker.pkg.dev/cloudrun/container/worker-pool:latest
Passaggi successivi
- Scopri come utilizzare Cloud Deploy per configurare una pipeline di continuous delivery per il deployment in Cloud Run.