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 theserviceusage.services.enablepermission. Learn how to grant roles.
Tenha o código-fonte da aplicação pronto. O código fonte tem de estar armazenado num repositório, como o GitHub ou o Bitbucket.
Para executar os comandos
gcloudnesta página, instale a CLI do Google Cloud.Se estiver a usar os VPC Service Controls, configure um pool privado no perímetro dos VPC Service Controls. Também tem de configurar o Cloud Run para o VPC Service Controls.
Autorizações de gestão de identidade e de acesso necessárias
-
Na Google Cloud consola, aceda à página settings Autorizações do Cloud Build:
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.- No painel Atribuir função de utilizador da conta de serviço, escolha uma conta de serviço para roubar a identidade e, de seguida, clique em Conceder autorização.
- 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.
- Administrador do Cloud Run (
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:
No diretório raiz do projeto, crie um ficheiro de configuração denominado
cloudbuild.yaml.No ficheiro de configuração de compilação, adicione
dockerpassos de compilação para compilar a imagem e enviá-la para o Artifact Registry e, em seguida, adicione um passo de compilaçãogcloudpara invocar o comandogcloud run deploypara 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, comous-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.
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:
Na raiz do repositório, adicione um ficheiro de configuração com o nome
cloudbuild.yamlcom passos para criar a imagem, enviar a imagem para o Artifact Registry e, em seguida, invocar o comandogcloud 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, comous-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.Crie um acionador de compilação com o ficheiro de configuração criado no passo anterior:
Abra a página Acionadores:
Clique em Criar acionador.
No campo Nome, introduza um nome para o acionador.
Em Região, selecione a região 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 Configuração, selecione Ficheiro de configuração do Cloud Build (YAML ou JSON).
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.
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?
- Saiba como usar o Cloud Deploy para implementar no Cloud Run.
- Saiba como implementar no GKE.
- Saiba como implementar funções no Cloud Run.
- Saiba como implementar no App Engine.
- Saiba como implementar no Firebase.
- Saiba como fazer implementações azul-verde no Compute Engine.
- Saiba como resolver problemas de erros de compilação.