Gerenciando o ciclo de vida de aplicações com Helm

O Helm é uma ferramenta open-source que permite gerenciar aplicações Kubernetes de forma simples e eficiente. Com o Helm, você pode instalar, atualizar e desinstalar aplicações em um cluster Kubernetes com facilidade.

As aplicações Helm são definidas em arquivos chamados charts. Um chart é um pacote que contém todos os recursos necessários para executar uma aplicação no Kubernetes, como deployments, services, configmaps, secrets, entre outros.

Instalação

Para instalar o Helm, execute o seguinte comando:

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh

Criando um chart

Para criar um chart, execute o seguinte comando:

helm create mychart

A partir disso você terá uma estrutura de diretórios e arquivos para gerenciar a aplicação. A estrutura de diretórios e arquivos de um chart é a seguinte:

mychart/
├── charts/
├── Chart.yaml
├── templates/
│   ├── deployment.yaml
│   ├── _helpers.tpl
│   ├── hpa.yaml
│   ├── ingress.yaml
│   ├── NOTES.txt
│   ├── serviceaccount.yaml
│   ├── service.yaml
│   └── tests/
│       └── test-connection.yaml
└── values.yaml

O arquivo Chart.yaml contém as informações sobre o chart, como nome, versão, descrição, entre outros. O arquivo values.yaml contém os valores padrão que serão utilizados para configurar a aplicação.

O Helm Charts do meu giropops-senhas está disponível em um repositório privado no GitHub no endereço: https://github.com/nataliagranato/senhas. Esse pacote é utilizado na pipeline de CI/CD disponível em .github/workflows/deploy-helm-chart.yml.

A pipeline contempla os seguintes passos:

  1. Checkout do código fonte

  2. Clone do repositório de Helm Charts

  3. Instalação do Kubectl

  4. Conexão com o cluster e validação

  5. Instalação do Helm

  6. Criação de namespaces

  7. Deploy do pacote Helm para cada ambiente

Com o helm você pode utilizar mais de um arquivo values.yaml para cada ambiente, como por exemplo values-dev.yaml, values-prod.yaml, values-stage.yaml e assim por diante. Assim, você pode configurar a aplicação de acordo com as necessidades de cada ambiente.

No meu caso, eu utilizo o arquivo values.yaml para configurar a aplicação e o arquivo values-dev.yaml para configurar o ambiente de desenvolvimento. Separando os ambientes por namespaces, normalmente em ambientes produtivos, você pode ter um cluster para cada ambiente, como dev, prod, stage, qa, entre outros.

Last updated