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:
-
Desenvolvedor de origem do Cloud Run (
roles/run.sourceDeveloper
) -
Usuário da conta de serviço (
roles/iam.serviceAccountUser
)
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:
- Crie seu pool de workers particulares. Consulte Como criar e gerenciar pools particulares.
Configure seu perímetro de VPC Service Controls. Consulte Como usar o VPC Service Controls.
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.
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.