Implantar um serviço ou job do Cloud Run

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:

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

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 e job.yaml para um job.

  • A estrofe deploy especifica como você quer que o manifesto seja implantado, especificamente, o projeto e a localização. O campo deploy é 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:

  1. No console do Google Cloud, acesse a página "Serviços do Cloud Run".

  2. 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:

página de detalhes do serviço no console do Google Cloud, mostrando a guia YAML

  1. Selecione a guia YAML.

  2. 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:

  1. No console do Google Cloud, acesse a página de jobs do Cloud Run.

  2. 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:

Página de detalhes do job no console do Google Cloud, mostrando a guia YAML

  1. Selecione a guia YAML.

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