Capítulo 10.1 - Introdução ao Helm
Objetivos de Aprendizagem
Ao final deste capítulo, você será capaz de:
- Entender o que é o Helm e por que utilizá-lo
- Instalar o Helm
- Compreender os conceitos básicos (Charts, Releases, Repositórios)
- Instalar e gerenciar Charts
- Entender as vantagens do Helm
- Utilizar os comandos básicos do Helm
Introdução
Helm é o gerenciador de pacotes para Kubernetes. Ele simplifica a instalação e o gerenciamento de aplicações complexas no Kubernetes.
O que é o Helm?
Helm é uma ferramenta que permite:
- Definir aplicações Kubernetes como pacotes reutilizáveis
- Instalar aplicações complexas com um único comando
- Atualizar e gerenciar versões de aplicações
- Compartilhar aplicações via repositórios
Analogia: Helm é como o apt para Ubuntu ou npm para Node.js, mas para Kubernetes.
Conceitos-Chave
Chart
Um Chart é um pacote de aplicação Kubernetes. Ele contém:
- Templates YAML para recursos do Kubernetes
- Arquivo de valores padrão (
values.yaml) - Metadados (
Chart.yaml)
Release
Uma Release é uma instância de um Chart implantado em um cluster. O mesmo Chart pode ser instalado várias vezes com releases diferentes.
Repository
Um Repository é uma coleção de Charts. Pode ser local ou remoto (HTTP).
Instalação
Linux/Mac
# Baixar o Helm
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
# Verificar
helm version
Windows
# Via Chocolatey
choco install kubernetes-helm
# Ou baixar do GitHub
# https://github.com/helm/helm/releases
Verificação
helm version
# version.BuildInfo{Version:"v3.12.0", ...}
Comandos Básicos
Adicionar um Repositório
# Repositório Bitnami (popular)
helm repo add bitnami https://charts.bitnami.com/bitnami
# Atualizar os repositórios
helm repo update
# Listar os repositórios
helm repo list
Buscar Charts
# Buscar nos repositórios
helm search repo nginx
# Buscar no Artifact Hub
helm search hub nginx
Instalar um Chart
# Instalação básica
helm install my-release bitnami/nginx
# Com um nome de release personalizado
helm install web-server bitnami/nginx
# Com valores personalizados
helm install my-release bitnami/nginx -f my-values.yaml
# Com valores inline
helm install my-release bitnami/nginx \
--set service.type=LoadBalancer \
--set replicaCount=3
Listar Releases
# Ver todas as releases
helm list
# Ver em um namespace específico
helm list -n production
# Ver todas as releases (incluindo removidas)
helm list --all
Atualizar uma Release
# Atualizar com novos valores
helm upgrade my-release bitnami/nginx -f new-values.yaml
# Atualizar para uma nova versão
helm upgrade my-release bitnami/nginx --version 15.0.0
# Rollback
helm rollback my-release 1
Remover uma Release
# Remover uma release
helm uninstall my-release
# Ver o histórico antes de remover
helm history my-release
Exemplo: Instalação do NGINX
Etapa 1: Adicionar o Repositório
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
Etapa 2: Buscar o Chart
helm search repo nginx
Etapa 3: Instalar
helm install my-nginx bitnami/nginx
Etapa 4: Verificar
# Ver a release
helm list
# Ver os recursos criados
kubectl get all -l app.kubernetes.io/instance=my-nginx
# Obter a URL
helm status my-nginx
Vantagens do Helm
1. Simplicidade
Sem Helm:
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
kubectl apply -f configmap.yaml
kubectl apply -f ingress.yaml
# ... 10+ arquivos
Com Helm:
helm install my-app ./my-chart
2. Controle de Versão
# Instalar uma versão específica
helm install my-app ./my-chart --version 1.2.3
# Atualizar
helm upgrade my-app ./my-chart --version 1.3.0
# Rollback
helm rollback my-app 1
3. Reutilização
Um Chart pode ser utilizado para vários ambientes:
helm install my-app-dev ./my-chart -f dev-values.yaml
helm install my-app-prod ./my-chart -f prod-values.yaml
4. Compartilhamento
Os Charts podem ser compartilhados via repositórios públicos ou privados.
Estrutura de um Chart
my-chart/
├── Chart.yaml # Metadados
├── values.yaml # Valores padrão
├── templates/ # Templates Kubernetes
│ ├── deployment.yaml
│ ├── service.yaml
│ └── configmap.yaml
└── charts/ # Dependências
Comandos Úteis
Informações
# Ver os valores de um Chart
helm show values bitnami/nginx
# Ver os valores de uma release
helm get values my-release
# Ver o manifest gerado
helm get manifest my-release
# Ver as notas
helm get notes my-release
Debug
# Template com dry-run
helm install my-release ./my-chart --dry-run --debug
# Ver os valores calculados
helm install my-release ./my-chart --debug --dry-run
Boas Práticas
1. Usar Repositórios
Prefira repositórios oficiais ao invés de Charts locais sempre que possível.
2. Versionamento
Utilize versões específicas em produção.
3. Arquivos de Valores
Separe os valores por ambiente (dev, staging, prod).
4. Testes
Teste os Charts com --dry-run antes da instalação.
5. Documentação
Documente os valores customizáveis no values.yaml.
Resumo
Neste capítulo, você aprendeu:
Helm: Gerenciador de pacotes para Kubernetes
Chart: Pacote de aplicação Kubernetes
Release: Instância de um Chart implantado
Repository: Coleção de Charts
Instalação: helm install com repositórios
Gerenciamento: helm upgrade, helm rollback, helm uninstall
Vantagens: Simplicidade, versionamento, reutilização, compartilhamento
Boas práticas: Repositórios, versionamento, arquivos de valores, testes
Próximos Passos
Capítulo 10.2: Helm Charts (Criação e Estrutura)
Capítulo 10.3: Templates e Valores
Lab 10.1: Instalação e Uso de Charts Helm
Capítulo criado em: Dezembro 2024