Rune
Blog
HelmKubernetesDevOpsDeploy

Helm Charts em produção: como gerenciar deployments Kubernetes com consistência

Helm é o gerenciador de pacotes do Kubernetes — mas usado sem estrutura, cria complexidade operacional desnecessária. Com charts bem organizados, values files por ambiente e integração com GitOps, Helm vira uma alavanca real de consistência de deploy.

rune.dev·DevOps & Plataforma
12 de abril de 20269 min de leitura

O que Helm resolve em Kubernetes

Kubernetes manifests são poderosos mas verbosos. Um deployment típico com Service, ConfigMap, HPA, PodDisruptionBudget e ServiceAccount envolve centenas de linhas de YAML. Quando você precisa gerenciar múltiplos ambientes (development, staging, production), manter esses manifests manualmente cria inconsistência — pequenas diferenças que se acumulam e causam o clássico "funciona em staging, quebra em produção".

Helm resolve isso com o conceito de chart: um template parametrizável que descreve todos os recursos Kubernetes de uma aplicação. Os valores específicos de cada ambiente são separados em values.yaml por ambiente. O mesmo chart, com values diferentes, gera manifests corretos e consistentes para cada ambiente.

A estrutura de um chart bem organizado

Um chart Helm tem uma estrutura de diretório padrão:

  • Chart.yaml — metadados do chart: nome, versão, descrição, dependências.
  • values.yaml — valores padrão. Toda configuração específica de ambiente deve ter um padrão sensato aqui.
  • templates/ — os templates dos manifests Kubernetes, usando a sintaxe de templates Go com variáveis dos values.
  • charts/ — dependências (sub-charts). Evite dependências desnecessárias — cada dependência adiciona complexidade de gerenciamento.

Boas práticas de estrutura de templates: use _helpers.tpl para funções reutilizáveis, mantenha cada recurso em seu próprio arquivo, use labels e annotations padronizados em todos os recursos, e inclua resource requests e limits como campos de values com defaults razoáveis.

Values files por ambiente

A separação de configuração por ambiente é onde Helm entrega mais valor. A estrutura recomendada:

  • values.yaml — defaults que funcionam para todos os ambientes
  • values-staging.yaml — overrides específicos de staging (replicas menores, resources menores, URLs de sandbox)
  • values-production.yaml — overrides específicos de produção (replicas, resources, HPA, PodDisruptionBudget)

No deploy, os values são sobrepostos em ordem: helm upgrade --install app ./chart -f values.yaml -f values-production.yaml. Valores no arquivo mais específico têm precedência.

Helmfile: múltiplos releases com consistência

Helmfile é uma camada de abstração sobre Helm que gerencia múltiplos releases em um único arquivo declarativo. Para ambientes com dezenas de serviços, Helmfile evita scripts shell para orquestrar deploys e centraliza a configuração de todos os releases, suas dependências e a ordem de deploy.

Integração com ArgoCD e GitOps

Helm e ArgoCD se complementam naturalmente: ArgoCD monitora o repositório Git, detecta mudanças nos charts ou nos values files e reconcilia o estado do cluster. Para cada Application no ArgoCD, você configura o chart path e os values files correspondentes ao ambiente. O resultado: qualquer mudança de configuração que passa pelo Git é automaticamente aplicada ao cluster.

A decisão entre Helm e Kustomize depende do contexto: Helm é superior quando você precisa de templates dinâmicos, lógica condicional e reutilização via charts de bibliotecas. Kustomize é superior quando você quer patches simples sobre manifests existentes sem aprender a sintaxe de templates Go.

Próximo passo

Seus deploys Kubernetes são consistentes entre ambientes ou cada ambiente tem vida própria?

A rune.dev estrutura estratégias de gerenciamento de configuração Kubernetes com Helm, Helmfile e GitOps para ambientes de produção de alta criticidade.

Falar com um especialista →

Precisa de apoio técnico no seu ambiente?

Diagnóstico sem compromisso. Retorno em até 48h úteis.

Falar com um especialista