Este documento descreve como implantar seus aplicativos, incluindo serviços, jobs e pools de workers do Cloud Run. Os pools de workers do Cloud Run estão em pré-lançamento.
O Cloud Deploy permite implantar cargas de trabalho baseadas em contêineres em qualquer serviço do Cloud Run, job ou pool de workers. Todos os recursos do Cloud Deploy são compatíveis quando você implanta em destinos do Cloud Run para serviços ou pools de workers do Cloud Run, mas as implantações de canary não são compatíveis com jobs do Cloud Run.
Este documento descreve as três principais configurações que você precisa concluir para implantar no Cloud Run:
- Criar a configuração de destino
- Criar a configuração do Skaffold
- Criar as definições de serviço, job ou pool de workers do Cloud Run
Limitações
Só é possível implantar um serviço, job ou pool de workers do Cloud Run por destino.
Não é possível executar uma implantação canário em um job do Cloud Run.
No entanto, os serviços e pools de workers do Cloud Run podem usar uma implantação canário.
Para implantar uma função do Cloud Run usando o Cloud Deploy, é necessário modificar o fluxo de trabalho de CI para criar a função em um contêiner e implantá-la como um serviço do Cloud Run.
Os pools de workers do Cloud Run estão em pré-lançamento.
Antes de começar
Verifique se você está usando a CLI gcloud versão
541.0.0ou mais recente.
Criar a configuração de destino
O destino pode ser configurado no YAML do pipeline de entrega ou em um arquivo separado. Além disso, é possível configurar mais de um destino no mesmo arquivo.
Os destinos precisam ser definidos no mesmo projeto e região que o pipeline de entrega. No entanto, os serviços, jobs ou pools de workers em que os destinos são implantados podem estar em projetos e regiões diferentes, desde que a conta de serviço tenha acesso a esses projetos.
Na definição de destino, crie uma seção run para identificar o local em que o serviço do Cloud Run será criado.
A sintaxe para especificar o serviço, job ou pool de workers do Cloud Run na definição de destino é a seguinte:
run:
location: projects/[project_name]/locations/[region_name]
Esse identificador de recurso usa os seguintes elementos:
project_nameé o nome do Google Cloud projeto em que o serviço, job ou pool de workers do Cloud Run será criado.Faça isso para cada destino. Recomendamos um projeto diferente para cada serviço, job ou pool de workers do Cloud Run. Se você quiser mais de um serviço, job ou pool de workers no mesmo projeto, use perfis do Skaffold no arquivo de configuração
skaffold.yaml.region_nameé a região em que o serviço, job ou pool de workers será criado. O serviço, job ou pool de workers pode estar em qualquer região compatível com o Cloud Run.
Confira a seguir um exemplo de configuração de destino, definindo o serviço, job ou pool de workers do Cloud Run a ser criado:
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: dev
description: development service
run:
location: projects/my-app/locations/us-central1
É possível definir esse destino dentro de uma definição de pipeline de entrega do Cloud Deploy ou separadamente. De qualquer forma, é necessário registrar o destino antes de criar a versão para implantar o serviço, job ou pool de workers do Cloud Run.
Criar a configuração do Skaffold
Confira a seguir um exemplo skaffold.yaml de arquivo para uma
implantação do Cloud Run:
apiVersion: skaffold/v4beta7
kind: Config
metadata:
name: cloud-run-application
manifests:
rawYaml:
- service.yaml
deploy:
cloudrun: {}
Neste arquivo skaffold.yaml...
manifests.rawYamlfornece os nomes das definições de serviço do Cloud Run.Neste exemplo,
service.yamlé o arquivo que define um serviço do Cloud Run que o Skaffold vai implantar. Esse nome de arquivo pode ser qualquer coisa, mas, por convenção, éservice.yamlpara um serviço,job.yamlpara um job eworkerpool.yamlpara um pool de workers.A seção
deployespecifica como você quer que o manifesto seja implantado, especificamente, o projeto e o local.deployé obrigatório.Recomendamos que você deixe o
{}vazio. O Cloud Deploy preenche isso durante a renderização, com base no projeto e no local da definição de destino.No entanto, para o desenvolvimento local, é possível fornecer valores aqui. No entanto, o Cloud Deploy sempre usa o projeto e o local da definição de destino, independentemente de os valores serem fornecidos aqui.
Criar as definições de serviço do Cloud Run
Para criar uma definição de serviço do Cloud Run, é possível criar uma manualmente ou copiar uma de um serviço atual. Ambos são descritos nesta seção.
Opção 1: criar um novo service.yaml do Cloud Run
O service.yaml define o serviço do Cloud Run. Ao criar uma versão, o Skaffold usa essa definição para implantar o serviço.
Confira um exemplo simplificado:
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: [SERVICE_NAME]
spec:
template:
spec:
containers:
- image: [IMAGE_PATH]
Em que:
[SERVICE_NAME]é um nome para esse serviço do Cloud Run.[IMAGE_PATH]aponta para a imagem ou imagens do contêiner que você está implantando com esse serviço.
Opção 2: copiar um service.yaml de um serviço atual usando o Google Cloud console
É possível criar um serviço usando o Google Cloud console ou usar um já existente,
e copiar o service.yaml dele.
Para acessar o service.yaml usando a Google Cloud CLI:
gcloud run services describe [service_name] --format=export
Para acessar o service.yaml do Google Cloud console:
No Google Cloud console, acesse a página Serviços do Cloud Run.
Selecione o serviço atual cuja definição você quer usar.
Ou crie um novo e selecione-o. Quando você seleciona o serviço, a página de detalhes do serviço é mostrada:

Selecione a guia YAML.
Clique em Editar e copie o conteúdo do YAML para um novo arquivo chamado
service.yamlno seu sistema de arquivos, para que o Skaffold possa usá-lo ao criar uma versão.
Criar as definições de job do Cloud Run
Para implantar uma definição de job do Cloud Run, é possível criar uma manualmente ou copiar uma de um job atual. Ambos são descritos nesta seção.
Os jobs não são necessariamente executados após serem implantados pelo Cloud Deploy. Isso é diferente dos serviços, que são aplicativos em execução depois de implantados. A forma como um job é invocado depende do próprio job.
Opção 1: criar um novo job.yaml do Cloud Run
O job.yaml define o job do Cloud Run. Ao criar uma versão, o Skaffold usa essa definição para implantar o job.
Confira um exemplo simplificado:
apiVersion: run.googleapis.com/v1
kind: Job
metadata:
name: [JOB_NAME]
spec:
template:
spec:
containers:
- image: [IMAGE_PATH]
Em que:
[JOB_NAME]é um nome para esse job do Cloud Run.[IMAGE_PATH]aponta para a imagem do contêiner que você está implantando para esse job.
Opção 2: copiar um job.yaml de um job atual usando o Google Cloud console
É possível criar um job usando o Google Cloud console ou usar um já existente,
e copiar o job.yaml dele.
Para acessar o job.yaml usando a Google Cloud CLI:
gcloud run jobs describe [job_name] --format=export
Para acessar o job.yaml do Google Cloud console:
No Google Cloud console, acesse a página Jobs do Cloud Run.
Selecione o job atual cuja definição você quer usar.
Ou crie um novo e selecione-o. Quando você seleciona o job, a página de detalhes do job é mostrada:

Selecione a guia YAML.
Clique em Editar e copie o conteúdo do YAML para um novo arquivo chamado
job.yamlno seu sistema de arquivos, para que o Skaffold possa usá-lo ao criar uma versão.
Criar as definições de pool de workers do Cloud Run (pré-lançamento)
Para implantar uma definição de pool de workers do Cloud Run, é possível criar uma manualmente ou copiar uma de um pool de workers atual. Ambos são descritos nesta seção.
Opção 1: criar um novo workerpool.yaml do Cloud Run
O workerpool.yaml define o pool de workers do Cloud Run. Ao criar uma versão, o Skaffold usa essa definição para implantar o pool de workers.
Confira um exemplo simplificado:
apiVersion: run.googleapis.com/v1
kind: WorkerPool
metadata:
name: [WORKERPOOL_NAME]
annotations:
run.googleapis.com/launch-stage: BETA
spec:
template:
spec:
containers:
- image: [IMAGE_PATH]
Em que:
[WORKERPOOL_NAME]é um nome para esse pool de workers do Cloud Run.[IMAGE_PATH]aponta para a imagem do contêiner que você está implantando para esse pool de workers.
Opção 2: copiar um workerpool.yaml de um pool de workers atual usando o Google Cloud console
É possível criar um pool de workers usando o Google Cloud console ou usar um já existente,
e copiar o workerpool.yaml dele.
Para acessar o workerpool.yaml usando a Google Cloud CLI:
gcloud beta run worker-pools describe [workerpool_name] --format=export
Para acessar o workerpool.yaml do Google Cloud console:
No Google Cloud console, acesse a página Pools de workers do Cloud Run.
Selecione o pool de workers atual cuja definição você quer usar.
Ou crie um novo e selecione-o. Quando você seleciona o pool de workers, a página de detalhes do pool de workers é mostrada:

Selecione a guia YAML.
Copie o conteúdo do YAML para um novo arquivo chamado
workerpool.yamlno seu sistema de arquivos, para que o Skaffold possa usá-lo ao criar uma versão.
Como tudo funciona em conjunto
Agora que você tem a definição de serviço, job ou pool de workers do Cloud Run, a configuração
skaffold.yaml e a definição de destino do Cloud Deploy
, e registrou o destino
como um recurso do Cloud Deploy, é possível
invocar o pipeline de entrega
para criar uma versão e avançá-la na progressão de destinos definidos
no pipeline.
O guia de início rápido Implantar um app no Cloud Run usando o Cloud Deploy mostra tudo isso em ação.
Comportamento dos serviços em revisões
Ao reimplantar um serviço, a nova revisão é baseada no service.yaml recém-implantado. Nada sobre a revisão anterior é mantido, a menos que seja o mesmo no YAML recém-implantado. Por exemplo, se houver configurações ou rótulos na revisão anterior que não estão no novo YAML, essas configurações ou rótulos estarão ausentes da nova revisão.
Como acionar jobs do Cloud Run
Depois de implantar um job, é possível acioná-lo conforme descrito na documentação do Cloud Run.
Como implantar serviços, jobs e pools de workers do Cloud Run em vários projetos
Se você precisar implantar serviços, jobs ou pools de workers que estão em projetos diferentes, sua conta de serviço de execução precisará de permissão para acessar os projetos em que esses serviços, jobs ou pools de workers estão definidos.
Consulte Conta de serviço de execução do Cloud Deploy e Papéis e permissões do Identity and Access Management para mais informações.
Como implantar o Cloud Run functions
O Cloud Run functions cria o código-fonte sempre que uma função é implantada. Por isso, cada ambiente de execução de destino no pipeline pode receber um artefato ligeiramente diferente. Isso é contrário às práticas recomendadas no Cloud Deploy. Em vez disso, sugerimos que você use um serviço do Cloud Run diretamente. Isso permite criar um único artefato e promovê-lo em todos os ambientes.
Faça o check-in do
service.yamlpara a função do Cloud Run.Para fazer isso, execute o comando a seguir:
gcloud run services describe FUNCTION_NAME \ --format=export \ --region=REGION \ --project=PROJECTRemova as seguintes anotações, se presentes:
run.googleapis.com/build-base-imagerun.googleapis.com/build-namerun.googleapis.com/build-source-locationrun.googleapis.com/build-enable-automatic-updates
Substitua o valor em
spec.spec.containers.imageporIMAGE_TAG.Crie o pipeline de entrega e os destinos, com o serviço do Cloud Run como destino.
Separe a etapa de build da etapa de implantação no processo de CI. Em vez de usar a Google Cloud CLI para implantar a função, substitua-a pelas seguintes etapas:
Crie a função em um contêiner usando o Cloud Build:
gcloud builds submit --pack image=REGION-docker.pkg.dev/PROJECT/cloud-run-source-deploy/IMAGE_NAME \ --project=PROJECT \ --region=REGIONCrie uma versão usando o Cloud Deploy:
gcloud deploy releases create RELEASE_NAME \ --project=DEPLOY_PROJECT \ --region=REGION \ --delivery-pipeline=DELIVERY_PIPELINE \ --images=IMAGE_TAG=REGION-docker.pkg.dev/PROJECT/cloud-run-source-deploy/IMAGE_NAMENeste comando...
RELEASE_NAMEé um nome que será atribuído à versão. O nome precisa ser exclusivo entre todas as versões desse pipeline de entrega.DEPLOY_PROJECTé o ID do projeto em que você criou o pipeline de implantação.DELIVERY_PIPELINEé o nome do pipeline de entrega que gerenciará a implantação dessa versão por meio da progressão de destinos. Esse nome precisa corresponder aonamecampo na definição do pipeline.REGIONé o nome da região em que você está criando a versão, por exemplo,us-central1. Obrigatório.IMAGE_NAMEé o nome que você deu à imagem na etapa anterior, quando criou a função.
A seguir
Confira o guia de início rápido: implantar um aplicativo no Cloud Run
Saiba mais sobre como configurar destinos do Cloud Deploy
Saiba mais sobre o suporte do Skaffold para o Cloud Run
Saiba mais sobre o Cloud Run