Aprenda Helm na prática: instalar o Helm 4, usar charts e values.yaml, atualizar, ver histórico e fazer rollback de aplicações no Kubernetes.

Para que serve

O Helm é o gerenciador de pacotes do Kubernetes. Um chart reúne todos os manifestos de uma aplicação (Deployment, Service, Ingress, PVC, ConfigMap) com variáveis que você ajusta em um arquivo values.yaml. Com ele, instalar o cert-manager, o Longhorn ou o Grafana vira um comando, e atualizar ou voltar uma versão também. Este artigo cobre o uso diário do Helm 4, lançado em novembro de 2025.

Pré-requisitos

  • Cluster Kubernetes acessível pelo kubectl (veja Como instalar o k3s em servidor dedicado). O Helm usa o mesmo kubeconfig.
  • Um repositório Git para guardar seus arquivos de values (recomendado).

Etapa 1: instalar o Helm

Na máquina de onde você administra o cluster (pode ser um nó servidor do k3s):

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-4
less get_helm.sh      # leia o script antes de executar
chmod 700 get_helm.sh
./get_helm.sh
helm version

Também há repositório APT oficial para Debian/Ubuntu, que facilita atualizar junto com o sistema (instruções na documentação do Helm). No nó do k3s, aponte o kubeconfig: export KUBECONFIG=/etc/rancher/k3s/k3s.yaml.

Vindo do Helm 3? O Helm 4 lê as releases instaladas pelo Helm 3 sem conversão. Atualize scripts e pipelines: --atomic virou --rollback-on-failure e --force virou --force-replace. Novas instalações usam server-side apply. O Helm 3 recebe correções de segurança até fevereiro de 2027.

Etapa 2: encontrar e inspecionar um chart

Charts são distribuídos de duas formas: repositórios HTTP (helm repo add) e registries OCI (endereço oci://, sem precisar adicionar repositório). Como exemplo, usaremos o podinfo, uma aplicação de demonstração mantida pela comunidade Flux:

# ver os valores configuráveis do chart
helm show values oci://ghcr.io/stefanprodan/charts/podinfo > podinfo-defaults.yaml

# repositório HTTP: adicionar, atualizar índice e pesquisar
helm repo add jetstack https://charts.jetstack.io
helm repo update
helm search repo jetstack --versions | head

Sempre leia o arquivo de valores padrão antes de instalar: é ali que estão réplicas, recursos, Ingress, persistência e senhas iniciais.

Etapa 3: instalar com um values.yaml próprio

Crie podinfo-values.yaml só com o que você quer mudar:

replicaCount: 2
resources:
  requests:
    cpu: 50m
    memory: 64Mi
  limits:
    memory: 128Mi
ingress:
  enabled: true
  className: traefik
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-prod
  hosts:
    - host: demo.seudominio.com.br
      paths:
        - path: /
          pathType: Prefix
  tls:
    - secretName: podinfo-tls
      hosts:
        - demo.seudominio.com.br

Instale fixando a versão do chart, em um namespace próprio:

helm upgrade --install podinfo oci://ghcr.io/stefanprodan/charts/podinfo \
  --version 6.15.0 \
  --namespace demo --create-namespace \
  -f podinfo-values.yaml \
  --wait --rollback-on-failure

O upgrade --install instala se não existir e atualiza se já existir, o que torna o mesmo comando seguro para usar em scripts. O --wait --rollback-on-failure espera os pods ficarem prontos e desfaz tudo se falhar. Troque 6.15.0 pela versão listada em helm show chart.

Para ver exatamente o que será aplicado, sem tocar no cluster, gere os manifestos:

helm template podinfo oci://ghcr.io/stefanprodan/charts/podinfo --version 6.15.0 -f podinfo-values.yaml | less

Etapa 4: atualizar, ver histórico e fazer rollback

helm list -A                              # todas as releases
helm -n demo get values podinfo           # values aplicados
helm -n demo history podinfo              # revisões
# mudou o values.yaml ou a versão? rode o mesmo upgrade --install
helm -n demo rollback podinfo 1           # volta para a revisão 1
helm -n demo uninstall podinfo            # remove a release

Antes de atualizar a versão de um chart, leia as notas de versão: mudanças de versão maior (ex.: 2.x para 3.x) costumam renomear valores ou exigir passos manuais. Faça backup antes (veja Backup de Kubernetes com etcd snapshot e Velero).

Etapa 5: deixar o k3s instalar charts sozinho (opcional)

O k3s tem um controlador de Helm embutido: um arquivo YAML do tipo HelmChart colocado em /var/lib/rancher/k3s/server/manifests/ é instalado e mantido automaticamente. Útil para componentes de base, como o cert-manager, que você quer recriados junto com o cluster:

apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
  name: cert-manager
  namespace: kube-system
spec:
  repo: https://charts.jetstack.io
  chart: cert-manager
  version: v1.21.2
  targetNamespace: cert-manager
  createNamespace: true
  valuesContent: |-
    crds:
      enabled: true

Não misture os dois métodos para a mesma aplicação: ou ela é gerida pelo helm na linha de comando, ou pelo arquivo no diretório de manifests.

Como saber se funcionou

helm -n demo status podinfo
kubectl -n demo get pods,svc,ingress
curl -s https://demo.seudominio.com.br | head

O status deve ser deployed, os pods Running e o endereço deve responder com o JSON do podinfo.

Problemas comuns

"another operation (install/upgrade/rollback) is in progress"

Uma operação anterior foi interrompida. Veja helm -n demo history podinfo; se a última revisão estiver em pending-upgrade, faça helm rollback para a última revisão deployed.

Imagens da Bitnami não baixam mais

Desde agosto de 2025 o catálogo gratuito da Bitnami foi reduzido, e muitas tags antigas foram movidas para um repositório legado sem atualizações. Charts que dependem dessas imagens podem falhar ou ficar desatualizados. Prefira charts mantidos pelo próprio projeto (cert-manager, Grafana, CloudNativePG, Gitea etc.).

Mudei o recurso com kubectl e o Helm desfez

O Helm considera o chart e os values como fonte da verdade. Faça a mudança no values.yaml e rode o upgrade.

Erro de CRD ao instalar

Alguns charts exigem um valor para instalar CRDs (como crds.enabled=true no cert-manager). Leia a documentação do chart.

Perguntas frequentes

Helm guarda senhas em texto puro?

Os values ficam em um Secret da release, codificados, mas acessíveis a quem tem permissão no namespace. Não versione senhas no Git: use Secrets criados à parte ou ferramentas como SOPS e External Secrets.

Preciso escrever meus próprios charts?

Não para começar. Quando suas aplicações tiverem vários ambientes, helm create minha-app gera um esqueleto para você adaptar.

Helm ou Kustomize?

Helm empacota e versiona aplicações de terceiros; Kustomize ajusta manifestos próprios sem templates. Muitas equipes usam os dois, e o Argo CD entende ambos.

Leitura complementar

Precisa de ajuda?

Dúvidas sobre o servidor, a rede ou o acesso pelo IPMI/iLO podem ser enviadas por ticket. A configuração de charts e aplicações é feita por você, conforme este guia.

Esta resposta lhe foi útil? 0 Usuários acharam útil (0 Votos)

Leia também