O Cloud Run permite executar contêineres sem estado em uma sem servidor. Com o Cloud Build, é possível implantar imagens de contêiner Container Registry (descontinuado) e Artifact Registry para o Cloud Run. É possível implantar uma imagem atual, criar e implantar uma imagem, ou automatizar a implantação.
Antes de começar
-
Enable the Cloud Build, Cloud Run, Container Registry, and Resource Manager APIs.
Prepare o código-fonte do aplicativo. O código-fonte precisa ser armazenado em um repositório, como Cloud Source Repositories, GitHub ou Bitbucket.
Para executar os comandos
gcloud
nesta página, instale a Google Cloud CLI.Se você usa o VPC Service Controls, configure um pool particular na Perímetro do VPC Service Controls Você também precisa configurar Cloud Run para VPC Service Controls.
Permissões do IAM obrigatórias
Se a imagem estiver armazenada no mesmo projeto do Google Cloud que você quer para implantar ou se a imagem for pública no Container Registry, são necessárias as seguintes permissões do IAM:
Para implantar no Cloud Run, conceda aos administradores do Cloud Run Papéis de usuário da conta de serviço à conta de serviço que você está usando para o build:
Abra a página Configurações do Cloud Build no Console do Google Cloud.
Na lista suspensa, selecione a conta de serviço com os papéis que você quer atribuir mudar.
No painel de permissões da conta de serviço, defina o status do papel Administrador do Cloud Run como ATIVADO:
No pop-up "Etapas adicionais", clique em CONCEDER ACESSO A TODAS AS CONTAS DE SERVIÇO.
Como criar e implantar um contêiner
O Cloud Build permite que você crie a imagem de contêiner, armazene-a no Container Registry e implante a imagem no Cloud Run.
Para criar e implantar uma imagem de contêiner:
No diretório raiz do projeto, crie um arquivo de configuração chamado
cloudbuild.yaml
.No arquivo de configuração de build, adicione etapas de build do
docker
para criar a imagem e enviá-la ao Container Registry e adicione uma etapa de build dogcloud
para invocar o comandogcloud run deploy
a fim de implantar a imagem no Cloud Run:steps: # Build the container image - name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', 'gcr.io/PROJECT_ID/IMAGE', '.'] # Push the container image to Container Registry - name: 'gcr.io/cloud-builders/docker' args: ['push', 'gcr.io/PROJECT_ID/IMAGE'] # Deploy container image to Cloud Run - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' entrypoint: gcloud args: ['run', 'deploy', 'SERVICE_NAME', '--image', 'gcr.io/PROJECT_ID/IMAGE', '--region', 'SERVICE_REGION'] images: - gcr.io/PROJECT_ID/IMAGE
Em que:
SERVICE_NAME
é o nome do serviço do Cloud Run.SERVICE_REGION
é a região do serviço do Cloud Run em que você está implantando.PROJECT_ID
é o ID do projeto do Google Cloud em que a imagem está armazenada.IMAGE
é o nome da imagem no Container Registry.
Navegue até o diretório raiz do projeto e execute o seguinte comando, em que
BUILD_REGION
é uma das regiões de build com suporte para executar o build:gcloud builds submit --region=BUILD_REGION
Após a conclusão, uma mensagem de sucesso é exibida junto com o URL do serviço implantado.
Implantação contínua
Para automatizar a implantação do seu software no Cloud Run, criar gatilhos do Cloud Build. Configure os acionadores para criar e implantar imagens sempre que atualizar o código-fonte.
Para automatizar a implantação:
Na raiz do repositório, adicione um arquivo de configuração chamado
cloudbuild.yaml
com etapas. para criar a imagem, enviá-la para o Container Registry e invoque o comandogcloud run deploy
: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/google.com/cloudsdktool/cloud-sdk' entrypoint: gcloud args: - 'run' - 'deploy' - 'SERVICE_NAME' - '--image' - 'gcr.io/$PROJECT_ID/SERVICE_NAME:$COMMIT_SHA' - '--region' - 'SERVICE_REGION' images: - 'gcr.io/$PROJECT_ID/SERVICE_NAME:$COMMIT_SHA'
Em que:
SERVICE_NAME
é o nome do serviço do Cloud Run.SERVICE_REGION
é a 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.Crie um gatilho de compilação com o arquivo de configuração criado na etapa:
Acesse a página Gatilhos:
Clique em Criar gatilho.
No campo Nome, insira um nome para o gatilho.
Em Região, selecione a região do acionador.
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 Configuração, selecione Arquivo de configuração do Cloud Build (YAML ou JSON).
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, um build e uma implantação do serviço serão chamados automaticamente.
Sempre que enviar um novo código para seu repositório, você acionará automaticamente uma versão e implantará seu serviço do Cloud Run.
Para mais informações sobre como criar gatilhos do Cloud Build, consulte Como criar e gerenciar gatilhos de build.
Como usar permissões mínimas do 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:
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 (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
, em que
PROJECT_NUMBER
é o ID numérico do projeto:
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.
Exemplos de código
Veja alguns repositórios de amostra, cada um com um aplicativo de amostra e um arquivo de configuração de build para implantar o aplicativo no Cloud Run:
- deploy-prebuilt: um exemplo de código que mostra como implantar uma imagem pré-criada no Cloud Run.
- run-example-builddeploy: um exemplo de código que mostra como criar e implantar uma imagem no Cloud Run.
A seguir
- Saiba como usar o Cloud Deploy para implantar no Cloud Run.
- Saiba como implantar no GKE.
- Saiba como implantar nas funções do Cloud Run.
- Saiba como implantar no App Engine.
- Saiba como implantar no Firebase.
- Saiba como realizar implantações azul-verde no Compute Engine.
- Saiba como resolver erros de build.