Suddivisioni delle istanze e rollback per i pool di worker Cloud Run

I pool di worker gestiscono i workload non basati su richieste. Per i casi d'uso che richiedono di dividere il lavoro tra più revisioni, ad esempio il deployment di una nuova revisione, i pool di worker utilizzano la suddivisione delle istanze.

Cloud Run ti consente di specificare quali revisioni ricevono istanze e specificare le percentuali di allocazione delle istanze per ogni revisione. Questa funzionalità ti consente di eseguire il rollback a una revisione precedente, dividere le istanze tra più revisioni e allocare le istanze all'ultima revisione. Questa pagina descrive come utilizzare questa funzionalità per gestire l'allocazione delle istanze alle revisioni di Cloud Run.

Gli aggiustamenti dell'allocazione delle istanze non sono istantanei. Quando modifichi l'allocazione delle istanze per le revisioni, tutte le richieste in fase di elaborazione vengono completate. Le richieste in corso non vengono eliminate e Cloud Run potrebbe indirizzare queste richieste a una nuova revisione o a una precedente durante il periodo di transizione.

Ciclo di vita delle suddivisioni dell'istanza

Se dividi le istanze tra più revisioni o le assegni a una revisione precedente, tutti i deployment successivi utilizzeranno 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.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per gestire i pool di worker Cloud Run e le relative revisioni, 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 le APIGoogle Cloud , 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.

Eseguire il rollback a una revisione precedente

Per eseguire il rollback a una revisione precedente, utilizza la console Google Cloud o Google Cloud CLI:

Console

  1. Nella console Google Cloud , vai ai pool di worker Cloud Run:

    Vai a Cloud Run

  2. Individua il pool di worker nell'elenco e fai clic.

  3. Fai clic sulla scheda Revisioni per visualizzare l'elenco delle revisioni correnti per il pool di worker.

  4. Fai clic su Gestisci suddivisioni dell'istanza per visualizzare il modulo di gestione delle istanze. Cloud Run elenca l'ultima revisione di pubblicazione. Nel modulo, configura i seguenti dettagli:

    1. Aggiungi revisione e utilizza l'elenco a discesa per selezionare una revisione precedente.
    2. Imposta la percentuale di istanze della revisione precedente su 100.
    3. Imposta la percentuale dell'ultima revisione pubblicata su 0.
    4. Fai clic su Salva.

gcloud

Specifica le revisioni a cui eseguire il rollback eseguendo questo comando.

   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

  1. Se stai creando un nuovo pool di worker, ignora 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
  2. 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: 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 esempio us-docker.pkg.dev/cloudrun/container/worker-pool:latest
    • REVISION: il nome della revisione a cui stai eseguendo il rollback.
  3. Crea o aggiorna il pool di worker utilizzando il seguente comando:

    gcloud run worker-pools replace worker-pool.yaml

    Il comando gcloud run worker-pools replace utilizza per impostazione predefinita il file worker-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 esempio us-docker.pkg.dev/cloudrun/container/worker-pool:latest
  • REVISION: il nome della revisione a cui stai eseguendo il rollback.

Dividere le istanze tra più revisioni

Per dividere le istanze tra due o più revisioni, utilizza la console Google Cloud o Google Cloud CLI:

Quando dividi le istanze tra più revisioni, assicurati che la percentuale totale in tutte le revisioni sia pari al 100% e che il numero di istanze manuali sia maggiore del numero di suddivisioni delle istanze che gestiscono il workload.

Console

  1. Nella console Google Cloud , vai ai pool di worker Cloud Run:

    Vai a Cloud Run

  2. Individua il pool di worker nell'elenco e fai clic.

  3. Fai clic sulla scheda Revisioni per visualizzare l'elenco delle revisioni correnti per il pool di worker.

  4. Fai clic su Gestisci suddivisioni dell'istanza per visualizzare il modulo di gestione delle istanze. Cloud Run elenca l'ultima revisione di pubblicazione. Nel modulo, configura i seguenti dettagli:

    1. Imposta la percentuale dell'ultima revisione pubblicata sulla suddivisione richiesta, ad esempio riducila dal 100%.

    2. Fai clic su Aggiungi revisione e utilizza l'elenco a discesa per selezionare una revisione precedente e impostare la relativa suddivisione percentuale.

    3. Per dividere le istanze con revisioni aggiuntive, fai clic su Aggiungi revisione, seleziona un'altra revisione e imposta la relativa percentuale.

    4. Fai clic su Salva.

gcloud

Specifica le revisioni e la percentuale di istanze eseguendo il seguente comando. Allocate instances for each revision (Alloca 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

  1. Se stai creando un nuovo pool di worker, ignora 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
  2. 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: PERCENTAGE2
    

    Sostituisci 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 esempio us-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. La somma deve essere pari a 100.
  3. Crea o aggiorna il pool di worker utilizzando il seguente comando:

    gcloud run worker-pools replace worker-pool.yaml

    Il comando gcloud run worker-pools replace utilizza per impostazione predefinita il file worker-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 esempio us-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. La somma deve essere pari a 100.

Assegnare 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, ignorando qualsiasi suddivisione delle istanze stabilita.

gcloud

Per allocare il 100% delle istanze all'ultima revisione, esegui i seguenti comandi:

  • Utilizza il flag --to-latest per indirizzare il 100% delle istanze all'ultima revisione e allocare automaticamente tutte le istanze a qualsiasi nuova revisione che implementi:

    gcloud run worker-pools update-instance-split WORKER_POOL --to-latest
    
  • (Facoltativo) Utilizza il flag --to-revisions con la parola chiave LATEST per allocare sempre una percentuale mobile di istanze alla revisione più recente quando ne esegui il deployment. Per impostare una percentuale di istanze che vengono sempre spostate nell'ultima revisione, esegui questo comando:

    gcloud run worker-pools update-instance-split WORKER_POOL --to-revisions=LATEST=PERCENTAGE
    

    Sostituisci quanto segue:

    • WORKER_POOL: il nome del pool di worker.
    • PERCENTAGE: la percentuale di istanze da allocare per le revisioni più recenti e future.

YAML

  1. Se stai creando un nuovo pool di worker, ignora 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
  2. 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: 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 esempio us-docker.pkg.dev/cloudrun/container/worker-pool:latest
  3. Crea o aggiorna il pool di worker utilizzando il seguente comando:

    gcloud run worker-pools replace worker-pool.yaml

    Il comando gcloud run worker-pools replace utilizza per impostazione predefinita il file worker-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 esempio us-docker.pkg.dev/cloudrun/container/worker-pool:latest

Passaggi successivi