Zum Inhalt springen
_CORE
KI & Agentensysteme Unternehmensinformationssysteme Cloud & Platform Engineering Datenplattform & Integration Sicherheit & Compliance QA, Testing & Observability IoT, Automatisierung & Robotik Mobile & Digitale Produkte Banken & Finanzen Versicherungen Öffentliche Verwaltung Verteidigung & Sicherheit Gesundheitswesen Energie & Versorgung Telko & Medien Industrie & Fertigung Logistik & E-Commerce Retail & Treueprogramme
Referenzen Technologien Blog Know-how Tools
Über uns Zusammenarbeit Karriere
CS EN DE
Lassen Sie uns sprechen

Helm -- Package Manager für Kubernetes

22. 02. 2017 2 Min. Lesezeit CORE SYSTEMSai
Helm -- Package Manager für Kubernetes

YAML-Manifeste für jedes Kubernetes-Deployment von Hand zu schreiben, ist mühsam und fehleranfällig. Helm verspricht Templating, Versionierung und das Teilen von Kubernetes-Konfigurationen. Nach einem Monat Nutzung teilen wir unsere Erfahrungen.

Das Problem, das Helm löst

Eine typische Anwendung in Kubernetes benötigt Deployment, Service, ConfigMap, Secret, Ingress, PersistentVolumeClaim… Das sind leicht 200+ Zeilen YAML. Und wenn Sie zehn Umgebungen haben (Dev, Staging, Produktion x Kunden), fangen Sie an zu kopieren und verlieren schnell den Überblick.

Helm führt das Konzept eines Charts ein – ein Paket von Templates mit Parametern. Ein Chart, verschiedene Values für verschiedene Umgebungen. Versioniert, teilbar, testbar.

Helm 2 Architektur

Helm 2 hat zwei Komponenten: helm (CLI-Client) und Tiller (serverseitige Komponente, die im Cluster läuft). Tiller hält den Zustand der Releases und wendet Änderungen auf den Cluster an.

Tiller ist umstritten – es läuft mit Cluster-Admin-Privilegien und ist ein potenzielles Sicherheitsrisiko. Wir begegnen dem mit TLS-Zertifikaten und Namespace-beschränkten Tiller-Instanzen.

$ helm init --tiller-tls --tiller-tls-verify
$ helm install stable/prometheus     --name monitoring     --namespace observability     --values prod-values.yaml

Unser erstes eigenes Chart

Wir haben ein generisches Chart für Java-Microservices erstellt. Es wird parametrisiert durch Image-Name, Replicas, Ressourcenlimits, Umgebungsvariablen und Ingress-Host. Ein Chart für alle unsere Spring Boot Services.

myapp-chart/
  Chart.yaml          # metadata
  values.yaml         # default values
  templates/
    deployment.yaml   # Go template
    service.yaml
    ingress.yaml
    configmap.yaml

Stable Repository – Schätze der Community

Helm hat ein offizielles Repository stabiler Charts. Prometheus, Grafana, nginx-ingress, Jenkins, Redis, PostgreSQL – alles bereit zum Deployment. Die Qualität variiert, aber als Ausgangspunkt für Anpassungen ist es ausgezeichnet.

Lessons Learned

  • Versionieren Sie Ihre Charts – Semantic Versioning, wie Bibliotheken
  • Eigenes Chart-Repository – ChartMuseum für interne Charts
  • Helm Test – schreiben Sie Tests für Ihre Charts
  • Linthelm lint fängt viele Fehler vor dem Deployment ab
  • Dry Runhelm install --dry-run --debug zur Überprüfung generierter Manifeste

Helm ist ein Must-Have für Kubernetes

Ohne Helm würden wir in YAML-Manifesten ertrinken. Tiller ist nicht perfekt und das Sicherheitsmodell hat Lücken, aber die Produktivität, die Helm bringt, ist enorm. Wir verfolgen die Diskussionen über Helm 3, das Tiller komplett entfernen soll.

helmkubernetesdevopscharts
Teilen:

CORE SYSTEMS

Wir bauen Kernsysteme und KI-Agenten, die den Betrieb am Laufen halten. 15 Jahre Erfahrung mit Enterprise-IT.

Brauchen Sie Hilfe bei der Implementierung?

Unsere Experten helfen Ihnen bei Design, Implementierung und Betrieb. Von der Architektur bis zur Produktion.

Kontaktieren Sie uns