Definir pools de workers de build (implantação de origem)

Quando você implanta o código-fonte da função no Cloud Run, essa origem é armazenada em um bucket do Cloud Storage. Em seguida, o Cloud Build cria automaticamente seu código em uma imagem de contêiner e a envia para um registro de imagens. Cada build é executado em seu próprio worker. O Cloud Run acessa essa imagem quando precisa gerar o contêiner para executar sua função.

Se você quiser personalizar o pool de workers do build que o Cloud Build usa para um contexto de build protegido pelo VPC Service Controls, deve personalizar o pool de workers. Esta página é relevante para desenvolvedores de plataforma que estão implantando funções no Cloud Run e configurando pools particulares usados pelo Cloud Build.

Antes de começar

Ativar a API Cloud Build

gcloud services enable cloudbuild.googleapis.com

Funções exigidas

Para receber as permissões necessárias para implantar a partir da origem, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:

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 serviço do Cloud Run interage com as APIs do Google 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.

Proteger o build com pools particulares

Por padrão, o Cloud Build tem acesso ilimitado à Internet durante o processo de build. Se você configurou um perímetro do VPC Service Controls (VPC SC) e quer limitar o acesso do build apenas às dependências armazenadas dentro do perímetro (por exemplo, pacotes npm), é possível usar o recurso Pools de workers particulares do Cloud Build.

Em geral, siga estas etapas para configurar seu pool particular:

  1. Crie seu pool de workers particulares. Consulte Como criar e gerenciar pools particulares.
  2. Configure seu perímetro de VPC Service Controls. Consulte Como usar o VPC Service Controls.

  3. Se seu pool de workers particulares estiver em um projeto diferente da sua função Cloud Run, você precisará conceder ao Cloud Run Service Agent (service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com) a função Cloud Build WorkerPool User (cloudbuild.workerPoolUser) para que o serviço Cloud Build possa acessar o pool de workers.

    gcloud projects add-iam-policy-binding PRIVATE_POOL_PROJECT_ID \
        --member serviceAccount:service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com \
        --role roles/cloudbuild.workerPoolUser

    Substitua:

    • PROJECT_NUMBER pelo número do projeto em que a função é executada.
    • PRIVATE_POOL_PROJECT_ID pelo ID do projeto em que o pool de workers está localizado. Consulte Como executar buids em um pool particular para mais informações.
  4. Implante a função para criar usando um pool particular:

gcloud

Para especificar um pool particular para criar ao implantar uma função do código-fonte:

gcloud beta run deploy SERVICE \
  --source . \
  --function FUNCTION_ENTRY_POINT \
  --build-worker-pool WORKER_POOL

Substitua:

  • SERVICE pelo nome da função.
  • FUNCTION_ENTRY_POINT: pelo ponto de entrada para sua função no código-fonte.
  • WORKER_POOL pelo nome do pool particular.

Excluir pools de workers de build

É possível excluir pools de workers de build para funções existentes

gcloud

Para limpar o pool de workers do Cloud Build para uma função:

gcloud beta run deploy SERVICE \
  --source . \
  --function FUNCTION_ENTRY_POINT \
  --clear-build-worker-pool WORKER_POOL

Substitua:

  • SERVICE pelo nome da função.
  • FUNCTION_ENTRY_POINT: pelo ponto de entrada para sua função no código-fonte.
  • WORKER_POOL pelo nome do pool particular que você quer excluir.