# Helm — Paketmanager für Kubernetes

> Praxis-Guide zu Helm — Charts installieren, Releases verwalten, Rollbacks fahren, Repositories pflegen und Templates rendern, mit Beispielen für jeden Schritt.

Source: https://www.jpkc.com/db/cheatsheets/containers/helm/

<!-- PROSE:intro -->
Helm ist der Paketmanager für Kubernetes: Statt Dutzende einzelner YAML-Manifeste von Hand zu pflegen, bündelst du eine komplette Anwendung in einem Chart und installierst sie mit einem einzigen Befehl. Jede Installation eines Charts erzeugt ein Release, das Helm versioniert verwaltet – du kannst es aktualisieren, bei Problemen per Rollback auf eine frühere Revision zurücksetzen und über Values pro Umgebung anpassen. Seit Helm 3 läuft alles clientseitig ohne den früheren Tiller-Dienst im Cluster, was Setup und Sicherheit deutlich vereinfacht. Charts beziehst du aus Repositories oder vom Artifact Hub. Dieser Guide zeigt dir die wichtigsten Kommandos für den Alltag, vom ersten Install bis zum eigenen Chart.
<!-- PROSE:intro:end -->

## Installieren & Aktualisieren

`helm install <name> <chart>` — Installiert ein Chart unter einem Release-Namen.

```bash
helm install my-nginx bitnami/nginx
```

`helm install <name> <chart> -f <values>` — Installiert mit einer eigenen Values-Datei.

```bash
helm install my-app ./mychart -f values-prod.yaml
```

`helm install <name> <chart> --set <key>=<value>` — Installiert mit Inline-Überschreibungen einzelner Werte.

```bash
helm install my-app bitnami/nginx --set replicaCount=3
```

`helm install <name> <chart> -n <namespace>` — Installiert in einen bestimmten Namespace.

```bash
helm install my-app ./mychart -n production
```

`helm install <name> <chart> --dry-run` — Simuliert die Installation, ohne tatsächlich zu deployen.

```bash
helm install my-app ./mychart --dry-run
```

`helm upgrade <name> <chart>` — Aktualisiert ein Release auf eine neue Chart-Version.

```bash
helm upgrade my-app bitnami/nginx
```

`helm upgrade --install <name> <chart>` — Aktualisiert das Release oder installiert es, falls es noch nicht existiert (idempotent).

```bash
helm upgrade --install my-app ./mychart -f values.yaml
```

## Releases auflisten & Status

`helm list` — Listet alle Releases im aktuellen Namespace auf.

```bash
helm list
```

`helm list -A` — Listet Releases über alle Namespaces hinweg auf.

```bash
helm list -A
```

`helm status <name>` — Zeigt den Status eines Releases.

```bash
helm status my-app
```

`helm history <name>` — Zeigt die Revisions-Historie eines Releases.

```bash
helm history my-app
```

`helm get values <name>` — Zeigt die für ein Release verwendeten Values.

```bash
helm get values my-app
```

`helm get manifest <name>` — Zeigt die gerenderten Kubernetes-Manifeste.

```bash
helm get manifest my-app
```

## Rollback & Deinstallation

`helm rollback <name> <revision>` — Setzt ein Release auf eine frühere Revision zurück.

```bash
helm rollback my-app 2
```

`helm uninstall <name>` — Deinstalliert ein Release.

```bash
helm uninstall my-app
```

`helm uninstall <name> --keep-history` — Deinstalliert, behält aber die Release-Historie.

```bash
helm uninstall my-app --keep-history
```

## Repositories

`helm repo add <name> <url>` — Fügt ein Chart-Repository hinzu.

```bash
helm repo add bitnami https://charts.bitnami.com/bitnami
```

`helm repo update` — Aktualisiert den lokalen Index der Chart-Repositories.

```bash
helm repo update
```

`helm repo list` — Listet alle konfigurierten Repositories auf.

```bash
helm repo list
```

`helm repo remove <name>` — Entfernt ein Repository.

```bash
helm repo remove bitnami
```

`helm search repo <keyword>` — Sucht Charts in den hinzugefügten Repositories.

```bash
helm search repo nginx
```

`helm search hub <keyword>` — Sucht Charts auf dem Artifact Hub.

```bash
helm search hub postgresql
```

## Charts erstellen & rendern

`helm create <name>` — Erstellt das Grundgerüst für ein neues Chart.

```bash
helm create my-chart
```

`helm template <name> <chart>` — Rendert die Chart-Templates lokal, ohne zu deployen.

```bash
helm template my-app ./mychart -f values.yaml
```

`helm lint <chart>` — Prüft ein Chart auf Fehler.

```bash
helm lint ./mychart
```

`helm package <chart>` — Verpackt ein Chart in ein .tgz-Archiv.

```bash
helm package ./mychart
```

`helm show values <chart>` — Zeigt die Standard-Values eines Charts.

```bash
helm show values bitnami/nginx
```

`helm dependency update <chart>` — Lädt die Abhängigkeiten eines Charts herunter.

```bash
helm dependency update ./mychart
```

<!-- PROSE:outro -->
## Fazit

Helm nimmt dir die Routine ab, ganze Anwendungen reproduzierbar in Kubernetes auszurollen: Aus losen Manifesten wird ein versioniertes Release, das du gezielt aktualisierst oder zurückrollst. Wenn du eigene Charts pflegst, lohnt es sich, früh auf saubere `values.yaml`-Strukturen und `helm lint` zu setzen – so bleiben deine Deployments auch über viele Umgebungen hinweg nachvollziehbar und wartbar.

## Weiterführende Links

- [Helm – offizielle Dokumentation](https://helm.sh/docs/) – Referenz, Konzepte und Best Practices (englisch)
- [Artifact Hub](https://artifacthub.io/) – zentrale Suche nach fertigen Charts (englisch)
- [Helm – Wikipedia](https://en.wikipedia.org/wiki/Helm_(software)) – Hintergrund und Geschichte (englisch)
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [ddev](https://www.jpkc.com/db/cheatsheets/containers/ddev/) – lokale Entwicklungsumgebungen für Container starten
- [docker](https://www.jpkc.com/db/cheatsheets/containers/docker/) – Container-Images bauen und ausführen
- [docker-compose](https://www.jpkc.com/db/cheatsheets/containers/docker-compose/) – Multi-Container-Setups deklarativ definieren

