Dockerfile
na raiz.
Para automatizar a implementação a partir do Git com o Cloud Build:
Construa uma configuração do Cloud Build que:
- Cria a imagem de contentor
- Envia a imagem para o Container Registry (descontinuado)
- Implementa uma nova revisão no serviço do Cloud Run
Para o fazer, adicione um ficheiro com o nome
cloudbuild.yamlna raiz do seu repositório com este conteúdo:steps: # build the container image - name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA', '.'] # push the container image to Container Registry - name: 'gcr.io/cloud-builders/docker' args: ['push', 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA'] # Deploy container image to Cloud Run - name: 'gcr.io/cloud-builders/gcloud' args: - 'run' - 'deploy' - '[SERVICE-NAME]' - '--image' - 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA' - '--region' - '[REGION]' images: - 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA'Substituir
- [SERVICE-NAME] com o nome do serviço do Cloud Run.
- [REGION] com a região do serviço do Cloud Run que está a implementar.
A utilização da variável de substituição
$COMMIT_SHAé preenchida pelo Cloud Build quando acionada a partir de um repositório Git.Conceda as funções Administrador do Cloud Run e Utilizador da conta de serviço à conta de serviço do Cloud Build:
Abra a página de definições do Cloud Build na Google Cloud consola:
No painel Autorizações da conta de serviço, defina o estado da função Administrador do Cloud Run como Ativar:
Selecione CONCEDER ACESSO A TODAS AS CONTAS DE SERVIÇO para conceder a função de utilizador da conta de serviço em todas as contas de serviço no projeto na sua página.
Clique em Acionadores no painel de navegação do lado esquerdo para abrir a página Acionadores:
- Clique em Criar acionador.
- No campo Nome, introduza um nome para o acionador.
- Em Evento, selecione o evento do repositório para iniciar o acionador.
- Em Origem, selecione o seu repositório e o nome da ramificação ou da etiqueta que vai iniciar o acionador. Para mais informações sobre como especificar que ramificações devem ser criadas automaticamente, consulte o artigo Criar um acionador de compilação.
- Em Ficheiro de configuração do Cloud Build (YAML ou JSON), selecione Ficheiro de configuração do Cloud Build.
- No campo Localização do ficheiro de configuração do Cloud Build,
escreva
cloudbuild.yamlapós/. - Clique em Criar para guardar o acionador de compilação.
Já está! A partir de agora, sempre que enviar para o seu repositório, é invocado automaticamente um processo de compilação e uma implementação no seu serviço do Cloud Run.
Implementação contínua com autorizações de IAM mínimas
Quando um contentor é implementado num serviço do Cloud Run, é executado com a identidade da conta de serviço de tempo de execução deste serviço do Cloud Run. Uma vez que o Cloud Build pode implementar novos contentores automaticamente, o Cloud Build tem de poder agir como a conta de serviço de tempo de execução do seu serviço do Cloud Run.
Para conceder acesso limitado ao Cloud Build para implementação num serviço do Cloud Run:
IU da Play Console
Aceda à página Contas de serviço da Google Cloud consola:
Clique no endereço de email da conta de serviço do tempo de execução do seu serviço do Cloud Run (por predefinição, é
PROJECT_NUMBER-compute@developer.gserviceaccount.com).Clique no separador Diretores com acesso.
Clique em Conceder acesso.
Introduza a conta de serviço do Cloud Build (
PROJECT_NUMBER@cloudbuild.gserviceaccount.com)No menu pendente Selecionar uma função, selecione a função Contas de serviço > Utilizador da conta de serviço.
Clique em Guardar.
gcloud
Use o comando gcloud iam service-accounts add-iam-policy-binding:
gcloud iam service-accounts add-iam-policy-binding \ PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --member="serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com" \ --role="roles/iam.serviceAccountUser"
Substitua PROJECT_NUMBER pelo ID numérico do seu projeto.
Se usar o Cloud Run com uma identidade de serviço personalizada,
substitua PROJECT_NUMBER-compute@developer.gserviceaccount.com pela morada da sua conta de serviço.
Consulte as autorizações de implementação para mais informações.
O que se segue
- Saiba como implementar ou publicar uma imagem de contentor num registo privado noutro projeto em Definir autorizações da conta de serviço