Application Delivery

Visão geral

O Application Delivery gerencia configurações das cargas de trabalho do Google Kubernetes Engine (GKE) de maneira declarativa com o Git. Ele permite a você realizar as ações a seguir:

  • Gerenciar as configurações de vários ambientes usando um repositório Git como uma única fonte de informações.
  • Analisar as alterações antes da implantação por meio de solicitações de envio no GitHub ou no Gitlab.
  • Testar e promover alterações em diferentes ambientes.
  • Reverter as alterações rapidamente.
  • Ver a versão e o status dos aplicativos no Console do Google Cloud.

O Application Delivery consiste em:

  • um programa de linha de comando (appctl) que gerencia as configurações e repositórios do Application Delivery;
  • um complemento do GKE executado no cluster.

Ambientes

O Application Delivery permite que você crie vários ambientes (por exemplo, prod e staging) do mesmo aplicativo usando uma configuração básica e sobreposições. As sobreposições permitem modificar ou adicionar valores ao manifesto do ambiente.

Cada ambiente corresponde a um namespace no cluster.

Application Delivery e Git

O Application Delivery armazena a configuração em dois repositórios Git particulares. Atualmente, os repositórios GitHub.com, GitLab.com e GitLab Enterprise são compatíveis.

As alterações de configuração são feitas no repositório do aplicativo. As configurações no repositório de implantação são geradas automaticamente com base no repositório do aplicativo. Com esses dois repositórios, a entrega de aplicativo apresenta uma separação de preocupações entre a manutenção e a fonte analisada da verdade. O fluxo de trabalho incentivado pelo Application Delivery também impede que esses dois repositórios sejam diferentes.

Repositório do aplicativo

O repositório do aplicativo armazena arquivos de configuração do aplicativo no formato kustomize. Para encontrar a versão esperada da ferramenta kustomize, execute appctl version.

Quando um usuário faz uma alteração na configuração, ele cria um git tag e envia a tag ao repositório do aplicativo.

Saiba mais sobre o layout do repositório do aplicativo.

Repositório de implantação

O repositório de implantação armazena manifestos do Kubernetes gerados em ramificações do Git. Cada ramificação armazena uma configuração criada com o Application Delivery. É possível aplicar configurações a ambientes.

Um usuário renderiza a configuração e gera uma solicitação de envio no repositório de implantação com appctl prepare. Um administrador analisa a alteração. Depois que a solicitação de envio for mesclada, o usuário executará appctl apply. O Application Delivery atualiza a configuração do aplicativo no cluster.

O repositório de implantação é armazenado no diretório .deployment no repositório do aplicativo local.

Saiba mais sobre o layout do repositório de implantação.

Layout do repositório do aplicativo

A estrutura de diretórios a seguir é um repositório de aplicativos de exemplo de um aplicativo chamado myapp.

├── config
│   ├── base
│   │   ├── kustomization.yaml
│   │   └── myapp.yaml
│   └── envs
│       ├── prod
│       │   └── kustomization.yaml
│       └── staging
│           ├── kustomization.yaml
│           └── patch-replicas.yaml
└── delivery
    └── envs
        ├── prod.yaml
        └── staging.yaml

A seção a seguir descreve os diretórios neste repositório. Para mais informações sobre o conteúdo de arquivos específicos, consulte Como gerenciar aplicativos com o Application Delivery.

config/base
A configuração noconfig/base do diretório é aplicada a todos os ambientes. É possível que outra configuração em config/envs modifique essa configuração.
config/envs

O repositório contém informações sobre dois ambientes, definidos no config/envs do diretório: prod e staging.

O ambiente prod refere-se apenas à configuração em config/base/myapp.yaml.

O ambiente staging tem uma personalização extra em config/envs/staging/patch-replicas.yaml. Essa personalização é mencionada em config/envs/staging/kustomization.yaml.

delivery/envs

Os subdiretórios em delivery/envs contêm informações sobre os clusters do GKE que hospedam cada ambiente. Esses arquivos são gerados automaticamente e não precisam ser modificados diretamente.

Layout do repositório de implantação

Cada configuração com tag e enviada para um ambiente com o Application Delivery é salva em uma ramificação do repositório de implantação.

Cada ramificação contém:

  • um arquivo artifact.yaml que contém os manifestos do Kubernetes dessa configuração. O Application Delivery faz a renderização a partir do repositório de aplicativos com Kustomize. A versão compatível do Kustomize é exibida executando appctl version;
  • um arquivo README.md com metadados.

Application Delivery e o Console do Google Cloud

Os aplicativos que você implanta com o Application Delivery ficam visíveis na página "Aplicativos" do GKE. Nela, é possível ver metadados sobre os aplicativos implantados, como versão, histórico de revisões, status de integridade, configuração e ambientes diferentes.

A seguir

Gerenciar um aplicativo com o Application Delivery.