Escalonar pools de workers do Cloud Run com o Workflows

Depois de criar um pool de trabalhadores do Cloud Run, use os Workflows para automatizar o escalonamento dele. Isso permite ajustar a contagem de instâncias com base em eventos externos, lógica personalizada ou programações.

Antes de começar

A lista a seguir descreve os requisitos ao usar o Workflows para implantar e executar um fluxo de trabalho de pools de workers do Cloud Run:

  1. Faça login na sua conta do Google Cloud . Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
  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. Ative as APIs Cloud Run Admin e Workflows.

    Funções necessárias para ativar APIs

    Para ativar as APIs, é necessário ter o papel do IAM de administrador de uso do serviço (roles/serviceusage.serviceUsageAdmin), que contém a permissão serviceusage.services.enable. Saiba como conceder papéis.

    Ativar as APIs

Funções exigidas

Para receber as permissões necessárias para implantar e executar pools de workers do Cloud Run com o Workflows, peça ao administrador para conceder a você os seguintes papéis do IAM:

Para permitir que Workflows atualizem o pool de workers do Cloud Run, a conta de serviço usada para implantar seu fluxo de trabalho precisa ter a seguinte função:

Para uma lista de papéis e permissões do IAM associados ao Cloud Run, consulte Papéis do IAM do Cloud Run e Permissões do IAM do Cloud Run. Se o pool de trabalhadores do Cloud Run interagir com APIsGoogle Cloud , como as bibliotecas de cliente do Cloud, consulte o guia de configuração de identidade de serviço. Para mais informações sobre como conceder papéis, consulte permissões de implantação e gerenciar acesso.

Criar um pool de workers do Cloud Run

Crie um pool de trabalhadores do Cloud Run se ainda não tiver feito isso. Você vai referenciar o nome do pool de worker do Cloud Run ao executar o fluxo de trabalho mais tarde.

Criar, implantar e executar o fluxo de trabalho

O fluxo de trabalho a seguir atualiza a contagem de instâncias do seu pool de workers do Cloud Run.

  1. No diretório inicial, crie um arquivo YAML para seu fluxo de trabalho, como update-cr-worker-pool.yaml, e copie e cole o conteúdo a seguir no arquivo:

    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. Implante o fluxo de trabalho e associe-o a uma conta de serviço especificada:

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

    Substitua:

    • WORKFLOW_NAME: o nome do fluxo de trabalho, como update-worker-pool. O nome do fluxo de trabalho precisa corresponder ao nome do arquivo YAML que você criou anteriormente.
    • REGION: a região em que o pool de workers do Cloud Run está implantado. Por exemplo, europe-west1.
    • SERVICE_ACCOUNT: o e-mail da conta de serviço que recebeu os papéis necessários, por exemplo:
      • SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
      • PROJECT_NUMBER-compute@developer.gserviceaccount.com
  3. Execute o fluxo de trabalho com os detalhes do pool de workers e a contagem de instâncias:

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

    Substitua:

    • WORKFLOW_NAME: o nome do fluxo de trabalho.
    • REGION: a região em que o pool de workers do Cloud Run está implantado. Por exemplo, europe-west1.
    • WORKER_POOL_NAME: o nome do pool de workers.
    • INSTANCE_COUNT: o número modificado de instâncias para o pool de workers, por exemplo, 3.

Verificar as atualizações

Depois de executar o fluxo de trabalho, você pode conferir as atualizações nos seguintes locais no console do Google Cloud :

  • Para conferir o status e os resultados da execução, acesse a página de detalhes do Workflows e selecione seu fluxo de trabalho:

    Acessar fluxos de trabalho

    Verifique se o campo manualInstanceCount mudou na execução mais recente do fluxo de trabalho.

  • Para verificar se a atualização foi concluída no Cloud Run, acesse a página pools de trabalhadores:

    Acessar o Cloud Run

    Verifique se a contagem de escalonamento manual do pool de workers mudou.