Pular para conteúdo

Helm — Conceitos e Comandos

Você está quase lá, mas tem um detalhe importante pra ajustar na analogia 👇


🧠 Helm ≠ Docker image (mas é parecido)

A comparação ajuda, mas não é 100% correta:

Docker Helm
📦 Image 📦 Chart
🚀 Container rodando 🚀 Release no cluster
🧱 Contém binário/app 🧱 Contém YAMLs (Kubernetes)

👉 Ou seja:

Docker image = aplicação
Helm chart = infraestrutura + configuração da aplicação no Kubernetes


📦 Então o que o Helm faz?

Sim, você está certo nessa parte:

✅ Você baixa aplicações prontas e instala no Kubernetes

Exemplo:

helm install loki grafana/loki

Isso instala o Grafana Loki completo com:

  • StatefulSet

  • ConfigMaps

  • Services

  • etc.


❗ Sobre modificar templates

Aqui está o ponto mais importante 👇

🔴 Você NÃO edita os templates diretamente no cluster

O que você vê no cluster já é:

👉 resultado FINAL renderizado


✅ Formas corretas de modificar

🥇 1. Via values.yaml (principal forma)

Você não mexe no template, você altera os inputs dele.

Exemplo:

loki:
  config: |
    auth_enabled: false

👉 Isso muda o ConfigMap gerado


🥈 2. Baixar e editar o chart (customização avançada)

Se você quiser realmente mudar o template:

helm pull grafana/loki --untar
cd loki/templates

Agora você pode editar:

```id="g8r7mz" configmap.yaml statefulset.yaml

E instalar localmente:

```bash
helm install loki ./loki


🥉 3. Usar --set (rápido, mas limitado)

helm upgrade loki grafana/loki \
  --set loki.auth_enabled=false

⚠️ O que NÃO funciona

  • ❌ editar ConfigMap com kubectl

  • ❌ editar StatefulSet direto

  • ❌ tentar “persistir” mudança manual

👉 Tudo isso será sobrescrito pelo Helm


🔥 Regra mental importante

Helm = infra declarativa com template

Você não altera o resultado, você altera a receita.


🎯 Resumo

  • ✔️ Helm baixa apps prontos pro Kubernetes (tipo “pacotes”)

  • ✔️ Eles vêm como charts

  • ❌ Você não altera o YAML gerado diretamente

  • ✅ Você altera via values.yaml

  • ✅ Ou customiza o chart inteiro


Se quiser, posso te mostrar exatamente como transformar aquela alteração que você fez no ConfigMap em values.yaml — que é o pulo do gato aqui 👍

Boa — agora você chegou exatamente no ponto certo 👍

Esse YAML que você mostrou é o resultado renderizado do Helm.
Ou seja:

❗ Esse arquivo não existe “pronto” no cluster nem no chart exatamente assim

Ele é gerado a partir de templates + values.


🧠 Onde o ConfigMap é realmente definido

Você viu isso no StatefulSet:

configMap:
  name: loki

👉 Então precisamos achar no chart onde existe algo como:

kind: ConfigMap
metadata:
  name: loki

📦 Onde isso fica no Helm chart

No chart do Loki (loki-6.6.2), normalmente está em algo como:

loki/templates/configmap.yaml

ou às vezes:

loki/templates/config.yaml

🔍 Como encontrar no seu ambiente

✅ Opção 1 — ver direto pelo Helm (mais rápido)

Roda:

helm get manifest loki -n observability | grep -n "kind: ConfigMap"

Depois pega o trecho completo.

Ou direto:

helm get manifest loki -n observability

👉 Procure por:

kind: ConfigMap
metadata:
  name: loki

✅ Opção 2 — baixar o chart

helm pull grafana/loki --version 6.6.2 --untar
cd loki

Agora:

ls templates/

Você deve ver algo como:

  • configmap.yaml

  • runtime-configmap.yaml

  • single-binary/statefulset.yaml


🧩 Como o ConfigMap é montado

Dentro do template, você vai ver algo assim:

data:
  config.yaml: |
    {{- tpl .Values.loki.config . | nindent 4 }}

👉 Ou seja:

🔥 O conteúdo do ConfigMap vem de .Values


🎯 Onde está a “fonte da verdade”

O que realmente define o conteúdo é:

values.yaml

ou o seu override (-f values.yaml)


⚠️ Tradução prática do que aconteceu com você

  • Você editou o ConfigMap manualmente ✅

  • Mas o Helm gera ele a partir de:

    .Values.loki.config
    
  • Quando rolou um upgrade/redeploy:

    👉 Helm recriou o ConfigMap
    👉 usando os values originais
    👉 apagando sua mudança


💡 Como corrigir (o jeito certo)

1. Ver os values atuais:

helm get values loki -n observability -o yaml

2. Procure algo assim:

loki:
  config: |
    auth_enabled: false
    ...

3. Edite isso no seu values.yaml


4. Aplique:

helm upgrade loki grafana/loki -n observability -f values.yaml

🧠 Resumo simples

  • O arquivo não existe fixo

  • Ele vem de:

templates/configmap.yaml  +  values.yaml
  • O Helm renderiza tudo e aplica no cluster

Se quiser, cola aqui o helm get values que eu te mostro exatamente onde mexer no config.yaml 👍

Ver também