Escalonar pools de workers do Cloud Run com o Workflows

Depois de criar um pool de workers do Cloud Run, você pode usar os fluxos de trabalho 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 Workflows para implantar e executar um fluxo de trabalho de pools de workers do Cloud Run:

  1. 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

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

  3. Ative a API Cloud Run Admin e as APIs Workflows.

    Funções necessárias para ativar APIs

    Para ativar APIs, você precisa da permissão serviceusage.services.enable. Se você criou o projeto, provavelmente já tem essa permissão pela função Proprietário (roles/owner). Caso contrário, você pode receber essa permissão pela função Administrador de uso do serviço (roles/serviceusage.serviceUsageAdmin). Saiba como conceder funções.

    Ativar as APIs

Funções exigidas

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

Para permitir que Workflows atualizem o pool de workers do Cloud Run, a conta de serviço usada para implantar o 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 workers do Cloud Run interage com Google Cloud APIs, 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 workers do Cloud Run se ainda não tiver feito isso. Você vai referenciar o nome do pool de workers 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 pool de workers do Cloud Run.

  1. No diretório inicial, crie um arquivo YAML para o 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 criado 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 as funções necessárias, por exemplo:
      • SERVICE_ACCOUNT_NAME@PROJECT_ID.
      • PROJECT_NUMBER-compute@
  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 do Google Cloud console:

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

    Acessar fluxos de trabalho

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

  • Para verificar se a atualização foi bem-sucedida no Cloud Run, acesse a página de pools de workers:

    Acesse o Cloud Run

    Verifique se a contagem de escalonamento manual do pool de workers foi alterada.