Pular para o conteúdo principal

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