Este documento descreve como implantar seus aplicativos, incluindo serviços e jobs do Cloud Run.
O Cloud Deploy permite implantar cargas de trabalho baseadas em contêineres em qualquer serviço do Cloud Run ou job. Todos os recursos do Cloud Deploy são compatíveis quando você implanta em destinos do Cloud Run para serviços do Cloud Run, mas as implantações de canário 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
- Crie as definições de serviço ou de job do Cloud Run.
Limitações
Só é possível implantar um serviço ou job 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 do Cloud Run podem usar uma implantação canário.
Antes de começar
Verifique se você está usando a CLI gcloud na versão
401.0.0
ou mais recente.
Crie 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.
As metas precisam ser definidas no mesmo projeto e região que o pipeline de entrega. No entanto, os serviços ou jobs que as metas implantam 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 estrofe run
para identificar o local em que o serviço do Cloud Run será criado.
A sintaxe para especificar o serviço ou job 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 projeto do Google Cloud em que o serviço ou job do Cloud Run será criado.Faça isso para cada alvo. Recomendamos um projeto diferente para cada serviço ou job do Cloud Run. Se você quiser mais de um serviço ou job no mesmo projeto, use os perfis do Skaffold no arquivo de configuração
skaffold.yaml
.[
region_name
] é a região em que o serviço ou job será criado. Seu serviço ou job pode estar em qualquer região compatível com o Cloud Run.
Confira a seguir um exemplo de configuração de destino, que define o serviço ou job 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 em 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 seu serviço ou trabalho do Cloud Run.
Criar a configuração do Skaffold
Confira abaixo um exemplo de arquivo skaffold.yaml
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.rawYaml
fornece 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.yaml
para um serviço ejob.yaml
para um job.A estrofe
deploy
especifica como você quer que o manifesto seja implantado, especificamente, o projeto e a localização. O campodeploy
é obrigatório.Recomendamos deixar o
{}
vazio. O Cloud Deploy preenche essa informação durante a renderização com base no projeto e no local da definição alvo.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 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, você pode fazer isso manualmente ou copiar de um serviço existente. 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. Quando você cria uma versão, o Skaffold usa essa definição para implantar seu 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 este serviço do Cloud Run.[IMAGE_PATH]
aponta para a imagem ou as imagens de contêiner que você está implantando com esse serviço.
Opção 2: copiar um service.yaml
de um serviço usando o console do Google Cloud
É possível criar um serviço usando o console do Google Cloud ou usar um serviço existente
e copiar o service.yaml
dele.
Para receber o service.yaml
usando a Google Cloud CLI:
gcloud run services describe [service_name] --format=export
Para acessar o service.yaml
no console do Google Cloud:
No console do Google Cloud, acesse a página "Serviços do Cloud Run".
Selecione o serviço com a definição que você quer usar.
Você também pode criar uma nova e selecioná-la. Quando você seleciona o serviço, a página "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.yaml
no sistema de arquivos, para que o Skaffold possa usá-lo ao criar uma versão.
Criar as definições de jobs do Cloud Run
Para implantar uma definição de job do Cloud Run, você pode criar uma manualmente ou copiar uma de um job existente. Ambos são descritos nesta seção.
Os jobs não são necessariamente executados após a implantação pelo Cloud Deploy. Isso é diferente dos serviços, que executam aplicativos após a implantação. 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 seu job do Cloud Run. Quando você cria 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 este 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 usando o console do Google Cloud
É possível criar um job usando o console do Google Cloud ou usar um job atual
e copiar o job.yaml
dele.
Para receber o job.yaml
usando a Google Cloud CLI:
gcloud run jobs describe [job_name] --format=export
Para acessar o job.yaml
no console do Google Cloud:
No console do Google Cloud, acesse a página de jobs do Cloud Run.
Selecione o job com a definição que você quer usar.
Você também pode criar uma nova e selecioná-la. Quando você seleciona o job, a página "Job Details" é mostrada:
Selecione a guia YAML.
Clique em Editar e copie o conteúdo do YAML para um novo arquivo chamado
job.yaml
no 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 do serviço ou job do Cloud Run, a configuração de skaffold.yaml
e a definição do destino do Cloud Deploy, além de ter registrado o destino como um recurso do Cloud Deploy, é possível invocar o pipeline de entrega para criar uma versão e a fazer avançar pela progressão dos 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
Quando você reimplanta um serviço, a nova revisão é baseada no service.yaml
recém implantado. Nada da revisão anterior é mantido,
a menos que seja o mesmo no YAML recém-implantado. Por exemplo, se
houver configurações ou rótulos de configuração na revisão anterior que não estiverem
no novo YAML, essas configurações ou rótulos não estarão presentes na nova revisão.
Como acionar jobs do Cloud Run
Depois de implantar um job, é possível acionar conforme descrito na documentação do Cloud Run.
Como implantar serviços e jobs do Cloud Run em vários projetos
Se você precisar implantar serviços ou jobs em projetos diferentes, a conta de serviço de execução precisa ter permissão para acessar os projetos em que esses serviços ou jobs sã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.
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 os ambientes de execução do Cloud Deploy.
Saiba mais sobre o suporte do Skaffold para o Cloud Run
Saiba mais sobre o Cloud Run