Quando implementa o código fonte no Cloud Run, esse código fonte é armazenado num contentor do Cloud Storage. Em seguida, o Cloud Build compila automaticamente o seu código numa imagem de contentor e envia essa imagem para um registo de imagens. Cada compilação é executada no seu próprio trabalhador. O Cloud Run importa a imagem criada durante a implementação.
Se quiser personalizar o conjunto de trabalhadores de compilação que o Cloud Build usa para um contexto de compilação seguro do VPC Service Controls, personaliza o conjunto de trabalhadores. Esta página é relevante para programadores de plataformas que estão a implementar serviços do Cloud Run ou funções a partir da origem através da CLI Google Cloud e a configurar pools privadas usadas pelo Cloud Build. As flags da CLI gcloud dos pools de trabalhadores de compilação são suportadas para implementações de origem (--source
) e não são suportadas para implementações de imagens de contentores (--image
).
Antes de começar
Ative a API Cloud Run Admin e a API Cloud Build:
gcloud services enable run.googleapis.com \ cloudbuild.googleapis.com
Depois de ativar a API Cloud Run Admin, a conta de serviço predefinida do Compute Engine é criada automaticamente.
Funções necessárias
O utilizador ou o administrador tem de conceder à conta de implementação e à conta de serviço do Cloud Build as seguintes funções do IAM.
Clique para ver as funções necessárias para a conta do implementador
Para receber as autorizações necessárias para criar e implementar a partir da origem, peça ao seu administrador para lhe conceder as seguintes funções de IAM:
- Programador de origem do Cloud Run (
roles/run.sourceDeveloper
) no seu projeto - Consumidor de utilização do serviço (
roles/serviceusage.serviceUsageConsumer
) no seu projeto - Utilizador da conta de serviço (
roles/iam.serviceAccountUser
) na identidade do serviço do Cloud Run
Clique para ver as funções necessárias para a conta de serviço do Cloud Build
O Cloud Build usa automaticamente a
conta de serviço predefinida do Compute Engine como a conta de serviço predefinida do Cloud Build para compilar o seu código-fonte e o
recurso do Cloud Run, a menos que substitua este comportamento. Para que o Cloud Build compile as suas origens, peça ao administrador para conceder a função
Cloud Run Builder
(roles/run.builder
) à conta de serviço predefinida 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 seu Google Cloud
número do projeto e PROJECT_ID
pelo seu Google Cloud
ID do projeto. Para ver instruções detalhadas sobre como encontrar o ID e o número do projeto,
consulte o artigo Criar
e gerir projetos.
A concessão da função de criador do Cloud Run à conta de serviço predefinida do Compute Engine demora alguns minutos a propagar.
Para ver uma lista de funções e autorizações de IAM associadas ao Cloud Run, consulte os artigos Funções de IAM do Cloud Run e Autorizações de IAM do Cloud Run. Se o seu serviço do Cloud Run interage com Google Cloud APIs, como as bibliotecas cliente da Google Cloud, consulte o guia de configuração da identidade do serviço. Para mais informações sobre a atribuição de funções, consulte as autorizações de implementação e faça a gestão do acesso.
Proteja a sua compilação com pools privados
Por predefinição, o Cloud Build tem acesso ilimitado à Internet durante o processo de compilação. Se configurou um perímetro do VPC Service Controls (VPC SC) e quer limitar o acesso da compilação apenas a dependências armazenadas no perímetro (por exemplo, pacotes npm), pode usar a funcionalidade Pools de trabalhadores privados do Cloud Build.
Em geral, siga estes passos para configurar o seu conjunto privado:
- Crie o seu pool de trabalhadores privado. Consulte o artigo Criar e gerir pools privados.
Configure o perímetro do VPC Service Controls. Consulte o artigo Usar os VPC Service Controls.
Se o seu conjunto de trabalhadores privado estiver num projeto diferente do seu serviço do Cloud Run, tem de conceder ao agente de serviço do Cloud Run (
service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com
) a função Utilizador do conjunto de trabalhadores do Cloud Build (cloudbuild.workerPoolUser
) para que o serviço do Cloud Build possa aceder ao conjunto de trabalhadores.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
Substituir:
- PROJECT_NUMBER com o número do projeto onde o serviço é executado.
- PRIVATE_POOL_PROJECT_ID com o ID do projeto no qual o worker pool está localizado. Consulte o artigo Executar compilações num conjunto privado para mais informações.
Implemente o seu serviço a partir da origem para compilar através de um conjunto privado:
gcloud
Para especificar um conjunto privado a criar quando implementar a partir do código fonte, use a flag
--build-worker-pool
:gcloud run deploy SERVICE \ --source . \ --build-worker-pool WORKER_POOL
Substituir:
- SERVICE com o nome do seu serviço.
- WORKER_POOL com o nome do conjunto privado.
Se estiver a implementar uma função, adicione a flag
--function
com o ponto de entrada da função do seu código-fonte.
Elimine grupos de trabalhadores de compilação
Pode eliminar grupos de trabalhadores de compilação para serviços existentes.
gcloud
Para limpar o worker pool do Cloud Build para implementações de origem, use a flag --clear-build-worker-pool
:
gcloud run deploy SERVICE \ --source . \ --clear-build-worker-pool WORKER_POOL
Substituir:
- SERVICE com o nome do seu serviço.
- WORKER_POOL com o nome do conjunto privado que quer eliminar.
Se estiver a implementar uma função, adicione a flag --function
com o ponto de entrada da função do seu código-fonte.