Gerenciar manifestos no Google Cloud Deploy

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Nesta página, descrevemos como configurar o Google Cloud Deploy para renderizar a configuração de cada destino em um pipeline de entrega.

O Google Cloud Deploy usa o Skaffold para renderizar os manifestos do Kubernetes. O serviço é compatível com a renderização de manifestos brutos e ferramentas de gerenciamento de manifesto mais avançadas, como Helm, Kustomize e kpt (links em inglês). de dados.

O processo de renderização tem dois estágios:

  1. A ferramenta de gerenciamento de manifestos gera o manifesto.

  2. O Skaffold substitui as referências de imagens no manifesto pelas imagens que você quer implantar na versão.

Nesta página, incluímos exemplos de configuração que usam o Helm e o Kustomize.

Como usar o Skaffold para gerar sua configuração

Se você ainda não tiver um arquivo de configuração (skaffold.yaml) do Skaffold, use o Skaffold para gerar um para você, com base no que está no seu repositório.

  1. Instale o Skaffold usando a Google Cloud CLI:

    gcloud components install skaffold

  2. Execute skaffold init no repositório que contém seus manifestos:

    skaffold init --skip-build

Esse comando cria um arquivo skaffold.yaml no seu repositório. Esse arquivo faz referência aos manifestos nesse repositório. O conteúdo é semelhante a este:

apiVersion: skaffold/v2beta15
kind: Config
metadata:
 name: sample-app
deploy:
 kubectl:
   manifests:
   - k8s-manifests/deployment.yaml
   - k8s-manifests/rbac.yaml
   - k8s-manifests/redis.yaml
   - k8s-manifests/service.yaml

Renderizar manifestos brutos

Os manifestos brutos não são gerenciados por uma ferramenta, como o Helm ou o Kustomize, e, portanto, não precisam de pré-processamento antes de serem hidratados e implantados em um cluster.

Por padrão, o Google Cloud Deploy usa skaffold render para renderizar os manifestos do Kubernetes, substituindo nomes de imagens não marcadas pelos nomes das imagens de contêiner que você está implantando. Depois, quando você promover a versão, o Google Cloud Deploy usará skaffold apply para aplicar os manifestos e implantar as imagens no cluster do Google Kubernetes Engine.

Uma estrofe deploy de uma configuração básica é semelhante a esta:

deploy:
  kubectl:
    manifests:
      - PATH_TO_MANIFEST

Consulte a documentação do Skaffold para mais informações sobre quais valores podem ser transmitidos aqui.

Renderização usando Helm

É possível usar o Google Cloud Deploy para renderizar os gráficos do Helm. Para isso, inclua detalhes do gráfico Helm em uma estrofe deploy em um perfil do Skyffold.

Cada definição tem esta aparência:

apiVersion: skaffold/v2beta16
kind: Config
deploy:
 helm:
   releases:
     - name: RELEASE_NAME
       chartPath: PATH_TO_HELM_CHART
       artifactOverrides:
         image: IMAGE_NAME

Em que:

RELEASE_NAME é o nome da instância de gráfico do Helm para esta versão.

PATH_TO_HELM_CHART é o caminho local para um gráfico do Helm empacotado ou um diretório de gráfico do Helm descompactado.

IMAGE_NAME é o nome da imagem do contêiner que você está implantando.

Seu gráfico do Helm precisa ter um parâmetro de valor image que defina a imagem a ser implantada no gráfico.

É possível usar outras opções de configuração do Helm, conforme descrito na documentação do Skaffold

Renderização usando Kustomize

É possível usar o Kustomize com o Google Cloud Deploy. Para fazer isso, aponte para os arquivos do Kustomization de acordo com a estrofe deploy na configuração do perfil skaffold.yaml.

Inclua uma configuração separada do Kustomize para cada destino em que você está usando o Kustomize, em cada profile correspondente na sua skaffold.yaml.

Cada definição tem esta aparência:

apiVersion: skaffold/v2beta16
kind: Config
metadata:
 name: getting-started-kustomize
deploy:
 kustomize:
   paths:
     - PATH_TO_KUSTOMIZE

Em que:

PATH_TO_KUSTOMIZE aponta para os arquivos do Kustomization. O padrão é ["."].

É possível usar outras opções de configuração do Kustomize, conforme descrito na documentação do Skaffold

Como configurar diferentes manifestos por destino

Muitas vezes, cada destino precisa de uma configuração um pouco diferente. Por exemplo, talvez você tenha mais réplicas nas implantações de produção do que nas implantações de preparo.

É possível renderizar um conjunto diferente de manifestos para cada destino, fornecendo cada variação como um perfil do Skyffold diferente.

Perfis com manifestos brutos

Ao trabalhar com manifestos brutos, você pode apontar o Google Cloud Deploy em um arquivo diferente, dependendo do destino. Você pode configurar isso da seguinte maneira:

apiVersion: skaffold/v2beta16
kind: Config
metadata:
 name: getting-started
profiles:
 - name: prod
   deploy:
     kubectl:
       manifests:
         - prod.yaml
 - name: staging
   deploy:
     kubectl:
       manifests:
         - staging.yaml

Perfis com Kustomize

Veja um exemplo de skaffold.yaml que tem perfis diferentes para preparo e produção usando o Kustomize, em que cada perfil aponta para uma Kustomize diferente:

apiVersion: skaffold/v2beta16
kind: Config
profiles:
 - name: prod
   deploy:
     kustomize:
       paths:
         - environments/prod
 - name: staging
   deploy:
     kustomize:
       paths:
         - environments/staging

Perfis referenciados no pipeline de entrega

Esses perfis, definidos em skaffold.yaml, são referenciados na configuração do pipeline de entrega por destino:

serialPipeline:
 stages:
 - targetId: staging-target
   profiles:
   - staging
 - targetId: prod-target
   profiles:
   - prod

A seguir