Implementar no Cloud Run através do Cloud Build

Esta página explica como implementar automaticamente serviços do Cloud Run através do Cloud Build. Se for um utilizador recente do Cloud Build, leia os inícios rápidos e a vista geral da configuração de compilação primeiro.

O Cloud Run permite-lhe executar imagens sem estado num ambiente sem servidor. Com o Cloud Build, pode implementar imagens do Artifact Registry no Cloud Run. Pode implementar uma imagem existente, criar e implementar uma imagem ou automatizar a implementação.

Antes de começar

  • Enable the Cloud Build, Cloud Run, Artifact Registry, and Resource Manager APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

Autorizações de gestão de identidade e de acesso necessárias

  1. Na Google Cloud consola, aceda à página Autorizações do Cloud Build:

    Aceda a Autorizações

  2. Para a conta de serviço do Cloud Build especificada ou a conta de serviço do Cloud Build predefinida, defina o estado das seguintes funções como Ativado:

    • Administrador do Cloud Run (roles/run.admin) | Permite que o Cloud Build implemente novos serviços no Cloud Run.
    • Administrador de armazenamento (roles/storage.admin) | Permite a leitura e a escrita a partir do Cloud Storage.
    • Escritor do Artifact Registry (roles/artifactregistry.writer) | Permite extrair imagens do Artifact Registry e escrever no mesmo.
    • Escritor de registos (roles/logging.logWriter) | Permite que as entradas de registo sejam escritas no Cloud Logging.
    • Editor do Cloud Build (roles/cloudbuild.builds.editor) | Permite que a sua conta de serviço execute compilações.

Criar e implementar uma imagem

O Cloud Build permite-lhe criar uma imagem, armazená-la no Artifact Registry e, em seguida, implementá-la no Cloud Run.

Para criar e implementar uma imagem:

  1. No diretório raiz do projeto, crie um ficheiro de configuração denominado cloudbuild.yaml.

  2. No ficheiro de configuração de compilação, adicione docker passos de compilação para compilar a imagem e enviá-la para o Artifact Registry e, em seguida, adicione um passo de compilação gcloud para invocar o comando gcloud run deploy para implementar a imagem no Cloud Run:

    steps:
    # Build the image
    - name: 'gcr.io/cloud-builders/docker'
      args: ['build', '-t', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE', '.']
    # Push the image to Artifact Registry
    - name: 'gcr.io/cloud-builders/docker'
      args: ['push', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE']
    # Deploy image to Cloud Run
    - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
      entrypoint: gcloud
      args: ['run', 'deploy', 'SERVICE_NAME', '--image', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE', '--region', 'SERVICE_REGION']
    images:
    - 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE'
    

    Onde:

    • REPOSITORY é o nome do repositório do Artifact Registry a partir do qual implementa a sua imagem.
    • LOCATION é a localização do seu repositório do Artifact Registry, como us-east1.
    • PROJECT_ID é o ID do Google Cloud projeto onde a sua imagem está armazenada.
    • SERVICE_NAME é o nome do serviço do Cloud Run.
    • SERVICE_REGION é a região do serviço do Cloud Run que está a implementar.
    • IMAGE é o nome da sua imagem no Artifact Registry.
  3. Navegue para o diretório raiz do projeto e execute o seguinte comando, em que LOCATION é uma das regiões de compilação suportadas para executar a compilação:

     gcloud builds submit --region=LOCATION
    

Após a conclusão com êxito, é apresentada uma mensagem de êxito juntamente com o URL do serviço implementado.

Implementação contínua

Pode automatizar a implementação do seu software no Cloud Run através da criação de acionadores do Cloud Build. Pode configurar os acionadores para criar e implementar imagens sempre que atualizar o código fonte.

Para automatizar a sua implementação:

  1. Na raiz do repositório, adicione um ficheiro de configuração com o nome cloudbuild.yaml com passos para criar a imagem, enviar a imagem para o Artifact Registry e, em seguida, invocar o comando gcloud run deploy:

    steps:
    # Build the image
    - name: 'gcr.io/cloud-builders/docker'
      args: ['build', '-t', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA', '.']
    # Push the image to Artifact Registry
    - name: 'gcr.io/cloud-builders/docker'
      args: ['push', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA']
    # Deploy image to Cloud Run
    - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
      entrypoint: gcloud
      args: 
        - 'run'
        - 'deploy'
        - 'SERVICE_NAME'
        - '--image'
        - 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA'
        - '--region'
        - 'SERVICE_REGION'
    images:
    - 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA'
    

    Onde:

    • REPOSITORY é o nome do repositório do Artifact Registry a partir do qual implementa a sua imagem.
    • LOCATION é a localização do seu repositório do Artifact Registry, como us-east1.
    • PROJECT_ID é o ID do Google Cloud projeto onde a sua imagem está armazenada.
    • SERVICE_NAME é o nome do serviço do Cloud Run.
    • SERVICE_REGION é a região do serviço do Cloud Run que está a implementar.
    • IMAGE é o nome da sua imagem no Artifact Registry.

    A variável de substituição $COMMIT_SHA é preenchida pelo Cloud Build quando acionada a partir de um repositório Git.

  2. Crie um acionador de compilação com o ficheiro de configuração criado no passo anterior:

    1. Abra a página Acionadores:

      Aceda à página Acionadores

    2. Clique em Criar acionador.

    3. No campo Nome, introduza um nome para o acionador.

    4. Em Região, selecione a região para o acionador.

    5. Em Evento, selecione o evento do repositório para iniciar o acionador.

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

    7. Em Configuração, selecione Ficheiro de configuração do Cloud Build (YAML ou JSON).

    8. No campo Localização do ficheiro de configuração do Cloud Build, escreva cloudbuild.yaml após /.

    9. Clique em Criar para guardar o acionador de compilação.

    Agora, quando envia novo código para o seu repositório, o Cloud Build invoca uma compilação e implementa o serviço no Cloud Run.

Para mais informações sobre como criar acionadores do Cloud Build, consulte o artigo Criar e gerir acionadores de compilação.

Exemplos de código

Seguem-se alguns repositórios de exemplo, cada um dos quais contém uma aplicação de exemplo e um ficheiro de configuração de compilação para implementar a aplicação no Cloud Run:

  • deploy-prebuilt: Um exemplo de código que mostra como implementar uma imagem pré-criada no Cloud Run.
  • run-example-builddeploy: um exemplo de código que mostra como compilar e implementar uma imagem no Cloud Run.

O que se segue?