Divisiones de instancias y reversiones para grupos de trabajadores de Cloud Run

Los grupos de trabajadores controlan las cargas de trabajo sin solicitudes. Para los casos de uso que necesitan dividir el trabajo entre varias revisiones, como la implementación de una revisión nueva, los grupos de trabajadores usan la división de instancias.

Cloud Run te permite especificar qué revisiones reciben instancias y especificar los porcentajes de asignación de instancias para cada revisión. Esta función te permite revertir a una revisión anterior, dividir instancias entre varias revisiones y asignar instancias a la revisión más reciente. En esta página, se describe cómo usar esta función para administrar la asignación de instancias a tus revisiones de Cloud Run.

Los ajustes de asignación de instancias no son instantáneos. Cuando cambias la asignación de instancias para las revisiones, se completan todas las solicitudes que están en proceso. Las solicitudes en tránsito no se descartan, y Cloud Run puede dirigirlas a una revisión nueva o a una revisión anterior durante el período de transición.

Ciclo de vida de las divisiones de instancias

Si divides las instancias entre varias versiones o las asignas a una versión anterior, todas las implementaciones posteriores usarán ese patrón de división de instancias en el futuro. Para volver a usar solo la versión más reciente sin dividir las instancias, envía todas las instancias a la versión más reciente.

Roles obligatorios

Para obtener los permisos que necesitas para administrar los grupos de trabajadores y las revisiones de grupos de trabajadores de Cloud Run, pídele a tu administrador que te otorgue el rol de IAM de desarrollador de Cloud Run (roles/run.developer) en tu grupo de trabajadores de Cloud Run.

Para obtener una lista de los roles y los permisos de IAM asociados con Cloud Run, consulta los roles de IAM de Cloud Run y los permisos de IAM de Cloud Run. Si tu grupo de trabajadores de Cloud Run interactúa con lasGoogle Cloud APIs, como las bibliotecas cliente de Cloud, consulta la guía de configuración de identidades del servicio. Para obtener más información sobre cómo otorgar roles, consulta los permisos de implementación y cómo administrar el acceso.

Revierte a una revisión anterior

Para revertir a una revisión anterior, usa la consola de Google Cloud o Google Cloud CLI:

Console

  1. En la consola de Google Cloud , ve a los grupos de trabajadores de Cloud Run:

    Ir a Cloud Run

  2. Ubica el grupo de trabajadores en la lista y haz clic en él.

  3. Haz clic en la pestaña Revisiones para ver la lista de revisiones actuales de ese grupo de trabajadores.

  4. Haz clic en Administrar divisiones de instancias para mostrar el formulario de administración de instancias. Cloud Run muestra la revisión de servicio más reciente. En el formulario, configura los siguientes detalles:

    1. Agregar revisión y usa la lista desplegable para seleccionar una revisión anterior.
    2. Establece el porcentaje de instancias de esa revisión anterior en 100.
    3. Establece el porcentaje de la revisión de publicación más reciente en 0.
    4. Haz clic en Guardar.

gcloud

Ejecuta el siguiente comando para especificar las revisiones a las que deseas revertir el cambio.

   gcloud run worker-pools update-instance-split WORKER_POOL --to-revisions=REVISION=100

Reemplaza lo siguiente:

  • WORKER_POOL: El nombre del grupo de trabajadores
  • REVISION: Es el nombre de la revisión a la que deseas revertir.

YAML

  1. Si creas un grupo de trabajadores nuevo, omite este paso. Si actualizas un grupo de trabajadores existente, descarga su configuración de YAML:

    gcloud run worker-pools describe WORKER_POOL --format export > workerpool.yaml
  2. El siguiente ejemplo contiene la configuración de 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
    

    Reemplaza lo siguiente:

    • WORKER_POOL: El nombre del grupo de trabajadores
    • REGION: la región, por ejemplo, Google Cloud us-central1
    • IMAGE_URL: Una referencia a la imagen del contenedor que contiene el grupo de trabajadores, como us-docker.pkg.dev/cloudrun/container/worker-pool:latest
    • REVISION: Es el nombre de la revisión a la que deseas revertir.
  3. Crea o actualiza el grupo de trabajadores con el siguiente comando:

    gcloud run worker-pools replace workerpool.yaml

Terraform

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

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
  }
}

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID de tu proyecto de Google Cloud .
  • REGION: la región, por ejemplo, Google Cloud us-central1
  • WORKER_POOL: El nombre del grupo de trabajadores
  • IMAGE_URL: Una referencia a la imagen del contenedor que contiene el grupo de trabajadores, como us-docker.pkg.dev/cloudrun/container/worker-pool:latest
  • REVISION: Es el nombre de la revisión a la que deseas revertir.

Divide las instancias entre varias revisiones

Para dividir instancias entre dos o más revisiones, usa la consola de Google Cloud o Google Cloud CLI:

Cuando dividas instancias entre varias revisiones, asegúrate de que el porcentaje total en todas las revisiones sea igual al 100% y de que la cantidad de instancias manuales sea mayor que la cantidad de divisiones de instancias que publican la carga de trabajo.

Console

  1. En la consola de Google Cloud , ve a los grupos de trabajadores de Cloud Run:

    Ir a Cloud Run

  2. Ubica el grupo de trabajadores en la lista y haz clic en él.

  3. Haz clic en la pestaña Revisiones para ver la lista de revisiones actuales de ese grupo de trabajadores.

  4. Haz clic en Administrar divisiones de instancias para mostrar el formulario de administración de instancias. Cloud Run muestra la revisión de servicio más reciente. En el formulario, configura los siguientes detalles:

    1. Establece el porcentaje de la revisión más reciente en la división requerida; por ejemplo, redúcelo del 100%.

    2. Haz clic en Agregar revisión y usa la lista desplegable para seleccionar una revisión anterior y establecer su correspondiente división de porcentajes.

    3. Para dividir instancias con revisiones adicionales, haz clic en Agregar revisión, selecciona otra revisión y establece su porcentaje.

    4. Haz clic en Guardar.

gcloud

Especifica las revisiones y el porcentaje de instancias ejecutando el siguiente comando. Asigna instancias para cada revisión en una lista delimitada por comas:

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

Reemplaza lo siguiente:

  • WORKER_POOL: El nombre del grupo de trabajadores

  • LIST: Lista de revisiones y porcentajes delimitados por comas:

    REVISION1=PERCENTAGE1,REVISION2=PERCENTAGE2,REVISIONn=PERCENTAGEx.

    Por ejemplo, my-worker-pool-s5sxn=10,my-worker-pool-cp9kw=90.

YAML

  1. Si creas un grupo de trabajadores nuevo, omite este paso. Si actualizas un grupo de trabajadores existente, descarga su configuración de YAML:

    gcloud run worker-pools describe WORKER_POOL --format export > workerpool.yaml
  2. El siguiente ejemplo contiene la configuración de 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
    

    Reemplaza lo siguiente:

    • WORKER_POOL: El nombre del grupo de trabajadores
    • REGION: la región, por ejemplo, Google Cloud us-central1
    • INSTANCE_COUNT: Es la cantidad de instancias.
    • IMAGE_URL: Una referencia a la imagen del contenedor que contiene el grupo de trabajadores, como us-docker.pkg.dev/cloudrun/container/worker-pool:latest
    • REVISION1 y REVISION2: Son los nombres de las revisiones.
    • PERCENTAGE1 y PERCENTAGE2: Porcentaje de instancias que se asignarán a cada una de estas revisiones. Estos deben sumar 100.
  3. Crea o actualiza el grupo de trabajadores con el siguiente comando:

    gcloud run worker-pools replace workerpool.yaml

Terraform

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

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
  }
}

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID de tu proyecto de Google Cloud .
  • REGION: la región, por ejemplo, Google Cloud us-central1
  • WORKER_POOL: El nombre del grupo de trabajadores
  • IMAGE_URL: Una referencia a la imagen del contenedor que contiene el grupo de trabajadores, como us-docker.pkg.dev/cloudrun/container/worker-pool:latest
  • REVISION1 y REVISION2: Son los nombres de las revisiones.
  • PERCENTAGE1 y PERCENTAGE2: Porcentaje de instancias que se asignarán a cada una de estas revisiones. Estos deben sumar 100.

Asigna instancias a la revisión más reciente

Cuando implementas una revisión nueva, puedes asignar el 100% de las instancias a esta revisión y a todas las futuras, lo que anula cualquier división de instancias establecida.

gcloud

Para asignar el 100% de las instancias a la revisión más reciente, ejecuta los siguientes comandos:

  • Usa la marca --to-latest para dirigir el 100% de las instancias a la revisión más reciente y asignar automáticamente todas las instancias a cualquier revisión nueva que implementes:

    gcloud run worker-pools update-instance-split WORKER_POOL --to-latest
    
  • De manera opcional, usa la marca --to-revisions con la palabra clave LATEST para asignar siempre un porcentaje flotante de instancias a la revisión más reciente cuando implementes una. Para establecer un porcentaje de instancias que siempre se transfieren a la revisión más reciente, ejecuta el siguiente comando:

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

    Reemplaza lo siguiente:

    • WORKER_POOL: El nombre del grupo de trabajadores
    • PERCENTAGE: Es el porcentaje de instancias que se asignarán a las revisiones más recientes y futuras.

YAML

  1. Si creas un grupo de trabajadores nuevo, omite este paso. Si actualizas un grupo de trabajadores existente, descarga su configuración de YAML:

    gcloud run worker-pools describe WORKER_POOL --format export > workerpool.yaml
  2. El siguiente ejemplo contiene la configuración de 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
    

    Reemplaza lo siguiente:

    • WORKER_POOL: El nombre del grupo de trabajadores
    • REGION: la región, por ejemplo, Google Cloud us-central1
    • IMAGE_URL: Una referencia a la imagen del contenedor que contiene el grupo de trabajadores, como us-docker.pkg.dev/cloudrun/container/worker-pool:latest
  3. Crea o actualiza el grupo de trabajadores con el siguiente comando:

    gcloud run worker-pools replace workerpool.yaml

Terraform

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

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
  }
}

Reemplaza lo siguiente:

  • WORKER_POOL: El nombre del grupo de trabajadores
  • REGION: la región, por ejemplo, Google Cloud us-central1
  • IMAGE_URL: Una referencia a la imagen del contenedor que contiene el grupo de trabajadores, como us-docker.pkg.dev/cloudrun/container/worker-pool:latest

¿Qué sigue?