Dockerfile
na raiz.
Para automatizar a implantação pelo Git com o Cloud Build:
Crie uma configuração do Cloud Build que:
- Cria a imagem do contêiner
- Envia a imagem para o Container Registry (Obsoleto)
- Implanta uma nova revisão do serviço do Cloud Run
Para fazer isso, adicione um arquivo chamado
cloudbuild.yaml
na raiz do 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] pelo nome do serviço do Cloud Run.
- [REGION] pela região do serviço do Cloud Run que você está implantando.
O uso da variável de substituição
$COMMIT_SHA
é preenchido pelo Cloud Build quando acionado a partir de um repositório git.Conceda os papéis Administrador do Cloud Run e Usuário da conta de serviço à conta de serviço do Cloud Build:
Abra a página Configurações do Cloud Build no Console do Google Cloud.
No painel de permissões da conta de serviço, defina o status do papel Admin do Cloud Run para Ativar:
Selecione CONCEDER ACESSO A TODAS AS CONTAS DE SERVIÇO para conceder o papel de Usuário da conta de serviço a todas as contas de serviço no projeto, na sua página.
Clique em Gatilhos no painel de navegação à esquerda para abrir a página Gatilhos:
- Clique em Criar gatilho.
- No campo Nome, insira um nome para o gatilho.
- Em Evento, selecione o evento do repositório para iniciar o gatilho.
- Em Origem, selecione o repositório e o nome da ramificação ou da tag que iniciará o gatilho. Para mais informações sobre como especificar quais ramificações precisam ser criadas automaticamente, consulte Como criar um gatilho de compilação.
- Em Arquivo de configuração do Cloud Build (yaml ou json), selecione Arquivo de configuração do Cloud Build.
- No campo local do arquivo de configuração do Cloud Build, digite
cloudbuild.yaml
depois do/
. - Clique em Criar para salvar o gatilho de compilação.
O processo foi concluído. De agora em diante, sempre que você enviar para seu repositório, uma compilação e uma implantação do serviço do Cloud Run serão chamadas automaticamente.
Implantação contínua com permissões mínimas de IAM
Quando um contêiner é implantado em um serviço do Cloud Run, ele é executado com a identidade da conta de serviço do ambiente de execução deste serviço do Cloud Run. Como o Cloud Build pode implantar novos contêineres automaticamente, o Cloud Build precisa ser capaz de atuar como a conta de serviço do ambiente de execução do serviço do Cloud Run.
Para conceder acesso limitado ao Cloud Build para implantar em um serviço do Cloud Run, siga estas etapas:
IU do Console
Acesse a página Contas de serviço no Console do Google Cloud:
Clique no endereço de e-mail da conta de serviço do ambiente de execução do serviço do Cloud Run do Cloud Run (por padrão, é
PROJECT_NUMBER-compute@developer.gserviceaccount.com
).Clique na guia Permissões..
Clique em
CONCEDER ACESSO.Insira a conta de serviço do Cloud Build (
PROJECT_NUMBER@cloudbuild.gserviceaccount.com
)Na lista suspensa Selecionar um papel, selecione o papel Contas de serviço > Usuário da conta de serviço.
Clique em Salvar.
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 projeto.
Se estiver usando o Cloud Run com uma identidade de serviço personalizada,
substitua PROJECT_NUMBER-compute@developer.gserviceaccount.com
pelo endereço da
conta de serviço.
Consulte Permissões de implantação para mais informações.
A seguir
- Saiba como implantar ou publicar uma imagem de contêiner em um registro particular em outro projeto em Como definir permissões da conta de serviço