Defina grupos de trabalhadores de compilação (implementação de origem)

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:

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:

  1. Crie o seu pool de trabalhadores privado. Consulte o artigo Criar e gerir pools privados.
  2. Configure o perímetro do VPC Service Controls. Consulte o artigo Usar os VPC Service Controls.

  3. 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.
  4. 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.