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. Faça login na sua Google Cloud conta do. Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho dos 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 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.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 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.