Configuração manual da implementação contínua com o Cloud Build

As instruções seguintes pressupõem que tem um repositório git com um ficheiro Dockerfile na respetiva raiz.

Para automatizar a implementação a partir do Git com o Cloud Build:

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

  2. Conceda as funções Administrador do Cloud Run e Utilizador da conta de serviço à conta de serviço do Cloud Build:

    1. Abra a página de definições do Cloud Build na Google Cloud consola:

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

    2. No painel Autorizações da conta de serviço, defina o estado da função Administrador do Cloud Run como Ativar:

      Captura de ecrã da página de autorizações da conta de serviço

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

  3. Clique em Acionadores no painel de navegação do lado esquerdo para abrir a página Acionadores:

    Visite a página Acionadores

    1. Clique em Criar acionador.
    2. No campo Nome, introduza um nome para o acionador.
    3. Em Evento, selecione o evento do repositório para iniciar o acionador.
    4. 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.
    5. Em Ficheiro de configuração do Cloud Build (YAML ou JSON), selecione Ficheiro de configuração do Cloud Build.
    6. No campo Localização do ficheiro de configuração do Cloud Build, escreva cloudbuild.yaml após /.
    7. Clique em Criar para guardar o acionador de compilação.
  4. 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

  1. Aceda à página Contas de serviço da Google Cloud consola:

    Aceda a Contas de serviço

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

  3. Clique no separador Autorizações.

  4. Clique em Conceder acesso.

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

  6. No menu pendente Selecionar uma função, selecione a função Contas de serviço > Utilizador da conta de serviço.

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