Cómo escalar grupos de trabajadores de Cloud Run con Workflows

Después de crear un grupo de trabajadores de Cloud Run, puedes usar Workflows para automatizar su ajuste de escala. Esto te permite ajustar el recuento de instancias en función de eventos externos, lógica personalizada o programas.

Antes de comenzar

En la siguiente lista, se describen los requisitos para usar Workflows para implementar y ejecutar un flujo de trabajo de grupos de trabajadores de Cloud Run:

  1. Accede a tu Google Cloud cuenta de. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. Habilita la API de Cloud Run Admin y las APIs de Workflows.

    Roles necesarios para habilitar las APIs

    Para habilitar las APIs, necesitas el rol de IAM de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin), que contiene el permiso serviceusage.services.enable. Obtén más información para otorgar roles.

    Habilitar las API

Roles obligatorios

Para obtener los permisos que necesitas para implementar y ejecutar grupos de trabajadores de Cloud Run con Workflows, pídele a tu administrador que te otorgue los siguientes roles de IAM:

Para permitir que Workflows actualice el grupo de trabajadores de Cloud Run, la cuenta de servicio que se usa para implementar tu flujo de trabajo debe tener el siguiente rol:

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.

Crea un grupo de trabajadores de Cloud Run

Crea un grupo de trabajadores de Cloud Run si aún no lo hiciste. Harás referencia al nombre del grupo de trabajadores de Cloud Run cuando ejecutes tu flujo de trabajo más adelante.

Crea, implementa y ejecuta el flujo de trabajo

El siguiente flujo de trabajo actualiza el recuento de instancias de tu grupo de trabajadores de Cloud Run.

  1. En tu directorio principal, crea un archivo YAML nuevo para tu flujo de trabajo, como update-cr-worker-pool.yaml, y copia y pega el siguiente contenido en tu archivo:

    main:
      params: [args]
      steps:
        - init:
            assign:
              - project: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
              - region: ${args.region}
              - workerPoolName: ${args.workerPool}
              - instanceCount: ${args.instanceCount}
              - workerPoolUrl: ${"https://run.googleapis.com/v2/projects/" + project + "/locations/" + region + "/workerPools/" + workerPoolName}
        - updateWorkerPool:
            call: http.patch
            args:
              url: ${workerPoolUrl}
              query:
                updateMask: "scaling.manualInstanceCount"
              auth:
                type: OAuth2
              body:
                scaling:
                  manualInstanceCount: ${int(instanceCount)}
            result: updateResult
        - returnOutput:
            return: ${updateResult.body}
    
  2. Implementa el flujo de trabajo y asócialo con una cuenta de servicio especificada:

    gcloud workflows deploy WORKFLOW_NAME \
        --source=WORKFLOW_NAME.yaml \
        --location=REGION \
        --service-account=SERVICE_ACCOUNT

    Reemplaza lo siguiente:

    • WORKFLOW_NAME: El nombre de tu flujo de trabajo, como update-worker-pool. El nombre del flujo de trabajo debe coincidir con el nombre del archivo YAML que creaste antes.
    • REGION: La región en la que se implementa tu grupo de trabajadores de Cloud Run , por ejemplo, europe-west1.
    • SERVICE_ACCOUNT: El correo electrónico de la cuenta de servicio a la que se le han otorgado los roles necesarios, por ejemplo:
      • SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
      • PROJECT_NUMBER-compute@developer.gserviceaccount.com
  3. Ejecuta el flujo de trabajo con los detalles de tu grupo de trabajadores y el recuento de instancias:

    gcloud workflows execute WORKFLOW_NAME \
        --location=REGION \
        --data='{"region":"REGION", "workerPool":"WORKER_POOL_NAME", "instanceCount":INSTANCE_COUNT}'

    Reemplaza lo siguiente:

    • WORKFLOW_NAME: El nombre de tu flujo de trabajo.
    • REGION: La región en la que se implementa tu grupo de trabajadores de Cloud Run , por ejemplo, europe-west1.
    • WORKER_POOL_NAME: El nombre de tu grupo de trabajadores.
    • INSTANCE_COUNT: La cantidad modificada de instancias para el grupo de trabajadores , por ejemplo, 3.

Verifica las actualizaciones

Después de ejecutar el flujo de trabajo, puedes ver las actualizaciones en los siguientes lugares de la Google Cloud consola:

  • Para ver el estado y los resultados de la ejecución, ve a la página de detalles de Workflows y selecciona tu flujo de trabajo:

    Ir a Workflows

    Verifica que el campo manualInstanceCount haya cambiado en la ejecución más reciente del flujo de trabajo.

  • Para verificar que la actualización se realizó correctamente en Cloud Run, ve a la página de grupos de trabajadores:

    Ir a Cloud Run

    Verifica que haya cambiado el recuento de ajuste de escala manual para tu grupo de trabajadores.