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 theserviceusage.services.enable
permission. Learn how to grant roles.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:
- Desenvolvedor de origem do Cloud Run (
roles/run.sourceDeveloper
) no seu projeto - Consumidor do Service Usage (
roles/serviceusage.serviceUsageConsumer
) no seu projeto - Usuário da conta de serviço (
roles/iam.serviceAccountUser
) na identidade de serviço do Cloud Run
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:
- 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 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.
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.