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

Quando você implanta o código-fonte no Cloud Run, essa fonte é 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 importa a imagem criada durante a implantaçã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 plataformas que estão implantando serviços ou funções do Cloud Run da origem usando a CLI do Google Cloud e configurando pools particulares usados pelo Cloud Build. As flags da CLI gcloud dos pools de trabalhadores de build são compatíveis com implantações de origem (--source), mas não com implantações de imagens de contêiner (--image).

Antes de começar

  • Enable the Cloud Run Admin API and Cloud Build APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

    Depois que a API Cloud Run Admin for ativada, a conta de serviço padrão do Compute Engine será criadas automaticamente.

Funções exigidas

Você ou seu administrador precisa conceder à conta do implantador e à conta de serviço do Cloud Build os seguintes papéis do IAM.

Clique para conferir os papéis necessários para a conta do implantador

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

Clique para conferir os papéis necessários para a conta de serviço do Cloud Build

O Cloud Build usa automaticamente a conta de serviço padrão do Compute Engine como a conta de serviço padrão do Cloud Build para criar seu código-fonte e recurso do Cloud Run, a menos que você substitua esse comportamento. Para que o Cloud Build crie suas origens, peça ao administrador para conceder o papel Criador do Cloud Run (roles/run.builder) à conta de serviço padrão do Compute Engine no seu projeto:

  gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
      --role=roles/run.builder
  

Substitua PROJECT_NUMBER pelo número do projeto Google Cloude PROJECT_ID pelo ID do projeto Google Cloud. Para instruções detalhadas sobre como encontrar o ID e o número do projeto, consulte Criar e gerenciar projetos.

A concessão do papel de builder do Cloud Run à conta de serviço padrão do Compute Engine leva alguns minutos para se propagar.

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 APIs doGoogle 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 do serviço do Cloud Run, você precisará conceder ao Agente de serviço do Cloud Run (service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com) a função de Usuário do WorkerPool do Cloud Build (cloudbuild.workerPoolUser) para que o serviço doCloud 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 o serviço é executado.
    • 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 o serviço da fonte para criar usando um pool particular:

    gcloud

    Para especificar um pool particular para criar ao implantar do código-fonte, use a flag --build-worker-pool:

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

    Substitua:

    • SERVICE pelo nome do serviço.
    • WORKER_POOL pelo nome do pool particular.

    Se você estiver implantando uma função, adicione a flag --function com o ponto de entrada da função no código-fonte.

Excluir pools de workers de build

É possível excluir pools de workers de build para serviços existentes.

gcloud

Para limpar o pool de workers do Cloud Build para implantações de origem, use a flag --clear-build-worker-pool:

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

Substitua:

  • SERVICE pelo nome do serviço.
  • WORKER_POOL pelo nome do pool particular que você quer excluir.

Se você estiver implantando uma função, adicione a flag --function com o ponto de entrada da função no código-fonte.