
Docker Compose auf dem VPS: Webserver, Datenbank & Reverse Proxy richtig betreiben
Praxisnaher Guide für Docker Compose auf dem VPS: Webserver, Datenbank, Reverse Proxy, TLS, Backups, Updates und Sicherheit richtig planen und betreiben.
Ein Helm Chart ist im Kern ein strukturiertes Verzeichnis mit Dateien, die ein zusammengehöriges Set an Kubernetes-Ressourcen beschreiben. Vergleichbar mit einem Paket in Betriebssystemen wie Debian (apt) oder Red Hat (yum/dnf) kapselt ein Chart alle für eine Anwendung notwendigen Manifeste, Standardkonfigurationen und Abhängigkeiten. Helm nutzt diese Pakete, um sogenannte Releases in einem Kubernetes-Cluster zu installieren, zu aktualisieren oder zu entfernen.
Die Idee ist bestechend einfach: Anstatt 15 einzelne YAML-Dateien für eine typische Web-Anwendung (Deployment, Service, Ingress, ConfigMap, Secret, HPA, ServiceAccount, NetworkPolicy, PodDisruptionBudget, etc.) separat mit kubectl apply auszurollen, definieren Sie diese einmal in einem Chart und installieren sie mit einem einzigen Befehl: helm install my-release ./my-chart. Änderungen an der Konfiguration werden versioniert, Releases können jederzeit auf eine frühere Version zurückgerollt werden.
Helm wurde ursprünglich von Deis entwickelt und 2015 erstmals vorgestellt. Heute ist das Projekt offiziell CNCF Graduated und wird von einer breiten Community getragen. Die aktuelle Generation – oft als Helm 3.x bezeichnet, mit stabilen Releases bis 2026 – hat viele Kinderkrankheiten der Vorgängerversion abgelegt: Tiller als serverseitige Komponente wurde komplett entfernt, die Sicherheit deutlich erhöht und die Architektur vereinfacht. Helm 3 speichert Release-Informationen nun direkt als Kubernetes Secrets im Cluster, was die Bedienung transparenter macht.
Für Einsteiger ist wichtig zu verstehen, dass Helm drei zentrale Begriffe definiert: Chart (das Paket selbst), Repository (ein Ort, an dem Charts gespeichert und verteilt werden, klassisch als HTTP-Index oder modern als OCI-Registry) und Release (eine konkrete Instanziierung eines Charts in einem Cluster). Ein einzelnes Chart kann beliebig oft als verschiedene Releases installiert werden – etwa eine produktive und eine staging-Variante parallel mit unterschiedlichen Konfigurationen.
Die Architektur von Helm 3 ist bewusst schlank gehalten und folgt dem Client-only-Prinzip. Im Gegensatz zu Helm 2 gibt es keine serverseitige Komponente (Tiller) mehr, was die Sicherheitslage grundlegend verbessert. Der helm-CLI-Client kommuniziert direkt mit dem Kubernetes-API-Server und nutzt dabei die kubeconfig-Datei des Nutzers – exakt so, wie Sie es von kubectl kennen.
Die wichtigsten Bestandteile im Überblick:
Wenn Sie helm install ausführen, passiert im Hintergrund Folgendes: Das CLI lädt das Chart (lokal oder aus einem Repo), parst die values.yaml, kombiniert diese mit benutzerdefinierten Werten, rendert die Go-Templates, validiert die resultierenden Kubernetes-Manifeste und schickt sie an den API-Server. Anschließend wird ein Secret mit dem Namen sh.helm.release.v1.<release-name> im Ziel-Namespace angelegt, das den Release-Status enthält.
Für die Template-Verarbeitung nutzt Helm die Go-Template-Engine in Kombination mit sprig-Funktionen (über 70 hilfreiche Helper) und der extra-Bibliothek für erweiterte Funktionen. Diese Kombination ist extrem mächtig, erfordert aber auch eine gewisse Einarbeitung – wir gehen darauf in einem späteren Abschnitt detailliert ein.
Die Installation von Helm ist auf allen gängigen Plattformen unkompliziert. Auf Linux/macOS empfiehlt sich die Verwendung des offiziellen Installationsskripts oder eines Paketmanagers. Für Windows-Nutzer stehen Chocolatey, Scoop oder winget zur Verfügung. Achten Sie bei der Installation darauf, eine aktuelle 3.x-Version zu verwenden – idealerweise >= 3.14, da hier viele Sicherheits- und Performance-Verbesserungen einfließen, die 2026 relevant sind.
# Offizielles Installationsskript (empfohlen)
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
# Alternativ via Homebrew (macOS)
brew install helm
# Verifizierung
helm version --short
# Ausgabe: v3.16.0+g58d6e7f
# Via winget
winget install Helm.Helm
# Via Chocolatey
choco install kubernetes-helm
# Via Scoop
scoop install helm
Nach der Installation sollten Sie die Verbindung zu Ihrem Cluster testen. Helm nutzt die gleiche KUBECONFIG-Umgebungsvariable wie kubectl:
# Cluster-Konnektivität prüfen
kubectl cluster-info
helm list --all-namespaces
# Helm-spezifische Umgebungsvariablen
export HELM_NAMESPACE=production
export HELM_KUBECONTEXT=my-cluster-context
Die wichtigsten CLI-Befehle für den Alltag fasst die folgende Tabelle zusammen. Sie bildet das Fundament für die weitere Arbeit mit Helm und sollte auswendig oder zumindest griffbereit sein:
| Befehl | Beschreibung | Typischer Use-Case |
|---|---|---|
helm create <name> |
Erstellt ein neues Chart-Skelett | Eigenes Chart entwickeln |
helm install <name> <chart> |
Installiert ein Chart als Release | Neue Anwendung ausrollen |
helm upgrade <name> <chart> |
Aktualisiert ein bestehendes Release | Neue Version deployen |
helm rollback <name> <rev> |
Rollt ein Release auf eine frühere Revision zurück | Nach fehlgeschlagenem Deployment |
helm uninstall <name> |
Entfernt ein Release komplett | Anwendung stilllegen |
helm list |
Listet alle Releases im Namespace | Statusübersicht |
helm repo add <name> <url> |
Fügt ein Chart-Repository hinzu | Public Charts einbinden |
helm search repo <keyword> |
Sucht in konfigurierten Repos | Passendes Chart finden |
helm template <name> <chart> |
Rendert Templates lokal (kein Deployment) | Dry-Run / Validierung |
helm lint <chart> |
Prüft Chart auf Syntax- und Best-Practice-Fehler | CI/CD-Pipeline |
helm package <chart> |
Packt ein Chart in ein .tgz-Archiv | Veröffentlichung vorbereiten |
helm show values <chart> |
Zeigt konfigurierbare Werte an | Konfiguration erkunden |
Ein Helm Chart folgt einer klar definierten Verzeichnisstruktur. Wenn Sie mit helm create my-app ein neues Chart anlegen, generiert Helm ein vollständiges Skelett, das Sie als Vorlage nutzen können. Das Verständnis dieser Struktur ist essenziell, denn jedes Element erfüllt einen bestimmten Zweck im Template- und Packaging-Prozess.
my-app/
├── Chart.yaml # Metadaten des Charts (Name, Version, Maintainer)
├── Chart.lock # Lock-Datei für Abhängigkeiten (automatisch generiert)
├── values.yaml # Standard-Konfigurationswerte
├── values.schema.json # Optionale JSON-Schema-Validierung für values
├── LICENSE # Lizenzdatei (optional, aber empfohlen)
├── README.md # Dokumentation für Nutzer des Charts
├── .helmignore # Ausschluss-Liste für helm package
├── templates/ # Verzeichnis mit Kubernetes-Manifest-Templates
│ ├── deployment.yaml # Deployment-Manifest als Go-Template
│ ├── service.yaml # Service-Manifest
│ ├── ingress.yaml # Ingress-Manifest
│ ├── configmap.yaml # ConfigMap-Manifest
│ ├── hpa.yaml # HorizontalPodAutoscaler
│ ├── serviceaccount.yaml # ServiceAccount mit RBAC
│ ├── NOTES.txt # Wird nach erfolgreicher Installation angezeigt
│ ├── _helpers.tpl # Wiederverwendbare Template-Snippets
│ └── tests/ # Helm-Test-Ressourcen
│ └── test-connection.yaml
├── charts/ # Gepackte Abhängigkeiten (z. B. .tgz-Dateien)
└── ci/ # Optionale CI-Hilfsskripte
Die Datei Chart.yaml ist das Herzstück der Chart-Metadaten. Sie enthält Pflichtfelder wie apiVersion, name und version, aber auch optionale Angaben zu Maintainern, Abhängigkeiten, Keywords und Icon. Ein typisches Beispiel für 2026:
apiVersion: v2
name: my-app
description: Moderne Web-Anwendung als Helm Chart
type: application
version: 1.2.0
appVersion: "2.4.1"
home: https://hostazar.com
sources:
- https://github.com/example/my-app
keywords:
- web
- kubernetes
- microservice
maintainers:
- name: hostazar-team
email: [email protected]
dependencies:
- name: postgresql
version: 15.2.0
repository: https://charts.bitnami.com/bitnami
condition: postgresql.enabled
- name: redis
version: 18.6.0
repository: https://charts.bitnami.com/bit
Docker Compose auf dem VPS: Webserver, Datenbank & Reverse Proxy richtig betreiben
Praxisnaher Guide für Docker Compose auf dem VPS: Webserver, Datenbank, Reverse Proxy, TLS, Backups, Updates und Sicherheit richtig planen und betreiben.