Kubernetes Helm
Helm ist ein Package Manager für Kubernetes der komplexe Applikationen als wiederverwendbare Charts verpackt.
Vereinfacht Deployment, Upgrade und Rollback von K8s-Anwendungen mit Templates und Values.
Helm Konzept
HELM CHART:
┌────────────────────────────────┐
│ Chart (Package) │
│ ┌──────────────────────────┐ │
│ │ templates/ │ │
│ │ ├─ deployment.yaml │ │
│ │ ├─ service.yaml │ │
│ │ └─ ingress.yaml │ │
│ │ │ │
│ │ values.yaml │ │ ← Default Config
│ │ Chart.yaml │ │ ← Metadata
│ └──────────────────────────┘ │
└────────────────────────────────┘
│
▼
helm install
│
▼
┌────────────────────────────────┐
│ Kubernetes Resources │
│ Deployment, Service, Ingress │
└────────────────────────────────┘
Helm installieren
# Linux/Mac
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
# Version prüfen
helm version
# Repos hinzufügen
helm repo add stable https://charts.helm.sh/stable
helm repo add bitnami https://charts.bitnami.com/bitnami
# Repo-Liste aktualisieren
helm repo update
# Verfügbare Charts suchen
helm search repo nginx
helm search hub wordpress
Chart installieren
# Chart installieren
helm install my-nginx bitnami/nginx
# Mit Custom Values
helm install my-nginx bitnami/nginx \
--set service.type=LoadBalancer \
--set replicaCount=3
# Aus values.yaml
helm install my-nginx bitnami/nginx -f custom-values.yaml
# Releases anzeigen
helm list
# Release Status
helm status my-nginx
# Release löschen
helm uninstall my-nginx
values.yaml
# custom-values.yaml
replicaCount: 3
image:
repository: nginx
tag: "1.21-alpine"
service:
type: LoadBalancer
port: 80
ingress:
enabled: true
hosts:
- host: example.com
paths:
- path: /
pathType: Prefix
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 250m
memory: 256Mi
Chart upgrade
# Upgrade
helm upgrade my-nginx bitnami/nginx \
--set replicaCount=5
# Rollback
helm rollback my-nginx 1
# History
helm history my-nginx
Eigenen Chart erstellen
# Chart erstellen
helm create mychart
# Struktur:
# mychart/
# ├── Chart.yaml
# ├── values.yaml
# ├── templates/
# │ ├── deployment.yaml
# │ ├── service.yaml
# │ └── ingress.yaml
# └── charts/
# Chart installieren
helm install my-release ./mychart
# Chart packagein
helm package mychart
# → mychart-0.1.0.tgz
Beliebte Charts
# Databases
helm install postgres bitnami/postgresql
helm install mysql bitnami/mysql
helm install mongodb bitnami/mongodb
# Monitoring
helm install prometheus prometheus-community/prometheus
helm install grafana grafana/grafana
# Ingress
helm install nginx-ingress ingress-nginx/ingress-nginx
# Cert Manager
helm install cert-manager jetstack/cert-manager
Zusammenfassung
Helm
- Package Manager: Für Kubernetes
- Charts: Wiederverwendbare Packages
- Templates: Parametrisierte YAMLs
- Values: Konfiguration
- Releases: Installierte Charts
- Upgrade/Rollback: Einfaches Management
Quick Reference
# Chart installieren
helm install myapp bitnami/nginx
# Upgrade
helm upgrade myapp bitnami/nginx --set replicaCount=3
# Rollback
helm rollback myapp 1
# Löschen
helm uninstall myapp
Verwandte Konzepte
- Kubernetes - Hauptnotiz
- Kubernetes kubectl - CLI Tool