Ferramentas · Deploy

Helm Charts

O gerenciador de pacotes do Kubernetes. Empacota, versiona e distribui aplicações como charts reutilizáveis com configuração por ambiente.

📦 O que é um Chart

Um Helm Chart é um conjunto de arquivos YAML com templates parametrizados. Em vez de ter um deployment.yaml fixo por ambiente, você tem um template com {{ .Values.image.tag }} que é substituído pelos valores do ambiente no deploy.

🔄 Ciclo de vida de um Release

helm install
Release v1
helm upgrade
Release v2
helm rollback

Cada helm upgrade cria uma nova revisão. O Helm mantém o histórico completo — rollback é instantâneo para qualquer revisão anterior.

Estrutura de um Chart

meu-chart/Raiz do chart
Chart.yamlMetadados: nome, versão, descrição, dependências
values.yamlValores padrão que templates usam. Sobrescrito por ambiente
values-prod.yamlOverrides para produção (não obrigatório, convenção)
templates/YAML templates com placeholders {{ .Values.* }}
deployment.yamlTemplate do Deployment referenciando values
service.yamlTemplate do Service
ingress.yamlTemplate do Ingress (pode ser condicional)
_helpers.tplMacros reutilizáveis entre templates (nomes, labels)
charts/Sub-charts (dependências). Geralmente via Chart.yaml
values.yaml (base)
image:
  repository: 123.dkr.ecr.us-east-1.amazonaws.com/app
  tag: latest
  pullPolicy: IfNotPresent

replicas: 2

resources:
  requests:
    cpu: 100m
    memory: 128Mi
  limits:
    cpu: 500m
    memory: 256Mi

ingress:
  enabled: false
values-prod.yaml (overrides)
# Só o que muda em prod:
image:
  tag: v2.3.1  # versão fixada

replicas: 5   # mais réplicas

resources:
  requests:
    cpu: 500m
    memory: 512Mi
  limits:
    cpu: 2000m
    memory: 1Gi

ingress:
  enabled: true
  host: api.empresa.com
helm create meu-chartCria estrutura de um novo chart do zero
helm install meu-app ./meu-chart -n productionInstala o chart no cluster com nome 'meu-app'
helm install meu-app ./meu-chart -f values-prod.yamlInstala com override de valores de produção
helm upgrade --install meu-app ./meu-chart -n prodInstala se não existe, atualiza se já existe (padrão CI/CD)
🔑values por ambiente

Mantenha um values.yaml base e crie values-dev.yaml, values-staging.yaml, values-prod.yaml. No CI/CD, use: helm upgrade --install -f values.yaml -f values-prod.yaml

🏷️Versionamento semântico

Chart.yaml tem duas versões: version (do chart em si) e appVersion (da aplicação). Bumpe version sempre que mudar os templates, appVersion quando mudar a imagem.

🔒Secrets no Helm

Nunca coloque senhas em values.yaml. Use helm-secrets (plugin) com AWS KMS ou prefira External Secrets Operator para puxar segredos do Secrets Manager.

📦Dependências

Sub-charts são declarados em Chart.yaml como dependencies. Rode helm dependency update para baixá-los para charts/. Útil para incluir PostgreSQL ou Redis como parte do deploy.