🟡 Intermediate

Helm — Kubernetes Package Manager

Helm je package manager pre Kubernetes, ktorý zjednodušuje inštaláciu a správu aplikácií v klastri. Namiesto desiatkov YAML súborov spravujete aplikáciu ako jeden balík — chart — s konfigurovateľnými hodnotami.


Čo je Helm?

Kubernetes aplikácie sa skladajú z mnohých objektov — Deployments, Services, ConfigMaps, Ingress. Helm tieto objekty zabalí do jedného chartu, ktorý sa dá inštalovať, aktualizovať a rollbackovať jedným príkazom.

  • Templatovanie — dynamické YAML s premennými
  • Verzionovanie — každá inštalácia je release s históriou
  • Zdieľanie — charty sa publikujú do repozitárov
  • Dependency management — chart môže závisieť na iných chartoch

Ako Helm funguje

  1. Chart — balík obsahujúci šablóny Kubernetes manifestov
  2. Values — konfiguračné hodnoty, ktoré sa dosadzujú do šablón
  3. Release — konkrétna inštalácia chartu v klastri
  4. Repository — kolekcia chartov (Artifact Hub, vlastné repo)

Helm renderuje šablóny s hodnotami a aplikuje výsledné manifesty na klaster.

Štruktúra chartu

my-app/
├── Chart.yaml          # metadata (meno, verzia)
├── values.yaml         # predvolené hodnoty
├── templates/
│   ├── deployment.yaml
│   ├── service.yaml
│   ├── ingress.yaml
│   └── _helpers.tpl    # šablónové funkcie
└── charts/             # závislosti

Príklad šablóny

# templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Release.Name }}-app
spec:
  replicas: {{ .Values.replicaCount }}
  template:
    spec:
      containers:
        - name: app
          image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
          ports:
            - containerPort: {{ .Values.service.port }}
# values.yaml
replicaCount: 3
image:
  repository: nginx
  tag: "1.25"
service:
  port: 80

Základné príkazy

  • helm install my-release ./my-chart — nainštaluje chart
  • helm upgrade my-release ./my-chart — aktualizuje release
  • helm rollback my-release 1 — vráti sa na predchádzajúcu verziu
  • helm list — zobrazí nainštalované releasy
  • helm repo add bitnami https://charts.bitnami.com — pridá repozitár

Praktické použitie

  • Nasadenie komplexných aplikácií (PostgreSQL, Redis, Kafka) jedným príkazom
  • Rôzne konfigurácie pre dev/staging/production cez values súbory
  • Zdieľanie interných aplikácií ako chartov v tímovom repozitári
  • Integrácia s CI/CD pre automatizované nasadenia

Best Practices

  • Používajte helm diff plugin na náhľad zmien pred upgrade
  • Udržiavajte values súbory pre každé prostredie zvlášť
  • Verzionujte charty sémantickým verzionovaním
  • Využívajte Helm hooks pre migrácie a inicializačné úlohy
  • Testujte charty s helm template a helm lint
  • Zvážte Helmfile pre správu viacerých releasov naraz

Helm je neoddeliteľnou súčasťou Kubernetes ekosystému a výrazne zjednodušuje správu aplikácií v klastri.