Configuração contínua de implantação manual usando o Cloud Build

As instruções a seguir pressupõem que você tenha um repositório git com um Dockerfile na raiz.

Para automatizar a implantação pelo Git com o Cloud Build:

  1. 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.

  2. Conceda os papéis Administrador do Cloud Run e Usuário da conta de serviço à conta de serviço do Cloud Build:

    1. Abra a página Configurações do Cloud Build no Console do Google Cloud.

      Visite a página de configurações do Cloud Build

    2. No painel de permissões da conta de serviço, defina o status do papel Admin do Cloud Run para Ativar:

      Captura de tela da página de permissões da conta de serviço

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

  3. Clique em Gatilhos no painel de navegação à esquerda para abrir a página Gatilhos:

    Acessar a página "Gatilhos"

    1. Clique em Criar gatilho.
    2. No campo Nome, insira um nome para o gatilho.
    3. Em Evento, selecione o evento do repositório para iniciar o gatilho.
    4. 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.
    5. Em Arquivo de configuração do Cloud Build (yaml ou json), selecione Arquivo de configuração do Cloud Build.
    6. No campo local do arquivo de configuração do Cloud Build, digite cloudbuild.yaml depois do /.
    7. Clique em Criar para salvar o gatilho de compilação.
  4. 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

  1. Acesse a página Contas de serviço no Console do Google Cloud:

    Acessar Contas de serviço

  2. 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).

  3. Clique na guia Permissões..

  4. Clique em CONCEDER ACESSO.

  5. Insira a conta de serviço do Cloud Build (PROJECT_NUMBER@cloudbuild.gserviceaccount.com)

  6. Na lista suspensa Selecionar um papel, selecione o papel Contas de serviço > Usuário da conta de serviço.

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