steering-wheel

Was ist Helm und warum ist es wichtig für Kubernetes?

Lesezeit: 4 Minuten

Kubernetes ist ein Open-Source-System zur Automatisierung der Bereitstellung, Skalierung und Verwaltung von containerisierten Anwendungen. In vergangenen Artikeln erklären wir bereits Grundkonzepte von Kubernetes.  In diesem Kontext spielt Helm eine wesentliche Rolle als Paketmanager für Kubernetes. Helm vereinfacht die Verwaltung von Kubernetes-Anwendungen durch die Bereitstellung von „Charts“, die alle erforderlichen Kubernetes-Ressourcen und deren Konfiguration umfassen.

Helm ist ein Paketmanager für Kubernetes-Anwendungen. Es ermöglicht das einfache Verwalten, Bereitstellen und Aktualisieren von Anwendungen auf Kubernetes-Clustern. Ähnlich wie bei einem Paketmanager für eine Programmiersprache wie npm für JavaScript oder pip für Python verwaltet Helm Kubernetes-Manifestdateien und Konfigurationen als Pakete, die als „Charts“ bezeichnet werden.
Ein Helm-Chart ist eine Sammlung von Dateien, die die Ressourcen beschreiben, die für eine Kubernetes-Anwendung benötigt werden. Dazu gehören Konfigurationsdateien, Dienstdefinitionen, Umgebungsvariablen und andere Kubernetes-spezifische Objekte. Durch die Verwendung von Helm können Entwickler komplexe Anwendungen einfach in Kubernetes-Clustern bereitstellen, ohne sich um die manuelle Konfiguration und Verwaltung kümmern zu müssen.

Was für Vorteile bringt Helm?

  1. Vereinfachte Bereitstellung: Helm vereinfacht den Bereitstellungsprozess von Kubernetes-Anwendungen erheblich. Anstatt jedes Mal die erforderlichen Kubernetes-Ressourcen manuell zu erstellen und zu konfigurieren, können Entwickler einfach ein Chart verwenden, um die Anwendung mit allen notwendigen Ressourcen schnell und konsistent bereitzustellen.
  2. Wiederverwendbarkeit: Durch die Verwendung von Charts können Entwickler Anwendungen in Form von wiederverwendbaren Paketen erstellen. Diese Charts können dann intern in einem Unternehmen geteilt oder sogar öffentlich in einem Chart-Repository veröffentlicht werden, um anderen zu helfen, ähnliche Anwendungen schnell und effizient bereitzustellen.
  3. Versionskontrolle und Aktualisierungen: Helm ermöglicht es Entwicklern, die Versionskontrolle über ihre Kubernetes-Anwendungen zu behalten. Durch die Verwendung von Charts können Entwickler Versionen ihrer Anwendungen erstellen und verwalten, wodurch es einfach wird, Aktualisierungen durchzuführen und auf frühere Versionen zurückzugreifen, falls Probleme auftreten. Darüber hinaus bietet Helm eine Rollback-Funktionalität, mit der man mit einem einzigen Befehl auf eine vorherige Version zurückkehren kann, was die Fehlerbehebung erheblich erleichtert.
  4. Konfigurationsmanagement: Die Anwendung bietet außerdem leistungsstarke Funktionen für das Konfigurationsmanagement von Kubernetes-Anwendungen. Durch die Verwendung von Templating-Mechanismen können Entwickler Konfigurationsdateien dynamisch generieren und anpassen, um verschiedene Umgebungen und Anforderungen zu unterstützen, ohne separate Charts erstellen zu müssen.

Trotz der vielen Vorteile der Anwendung, was sind Nachteile?

  1. Lernkurve: Für Entwickler ohne Erfahrung mit Helm und Kubernetes kann es eine steile Lernkurve geben. Die Konzepte von Charts, Templating und Helm-CLI müssen verstanden und beherrscht werden, bevor sie effektiv eingesetzt werden können.
  2. Komplexität von Charts: Die Erstellung und Wartung komplexer Helm-Charts kann eine Herausforderung darstellen. Die Gestaltung von Charts erfordert ein gründliches Verständnis der Kubernetes-Ressourcen und -Konzepte sowie der Helm-spezifischen Funktionalitäten.
  3. Abhängigkeit von Repositories: Die Verfügbarkeit und Qualität der Charts hängt von externen Chart-Repositories ab.
  4. Sicherheitsrisiken: Unzureichende Sicherheitskonfigurationen in Helm-Charts können potenzielle Sicherheitsrisiken für Kubernetes-Anwendungen darstellen. Es ist wichtig, sicherzustellen, dass Charts sicherheitsbewusst entwickelt und implementiert werden, um potenzielle Angriffsvektoren zu minimieren.

Beispielanwendung: Kundencenter 
Unser Kundencenter ist eine typische Anwendung, die in verschiedenen Umgebungen wie Staging und Produktion bereitgestellt werden muss. Staging-Umgebungen werden genutzt, um neue Features und Updates zu testen, bevor diese in die Produktionsumgebung übernommen werden. Bei Tralios IT nutzen wir Helm beispielsweise in der Verwaltung unseres Kundencenters, das eine relativ komplexe Anwendung ist, bestehend aus verschiedenen Containern für Datenbank, Backend, Kunden-Frontend, Admin-Frontend, API und weiteren Hilfscontainern für die Entwicklung. Mit Helm kann die gesamte Konfiguration des Kundencenters zentral verwaltet und über Helm-Charts definiert werden. Dies bedeutet, dass alle Kubernetes-Ressourcen wie Deployments, Services, ConfigMaps und Secrets in einer strukturierten und wiederverwendbaren Form vorliegen. Wenn Änderungen oder Updates notwendig sind, können diese durch einfaches Aktualisieren des Helm-Charts durchgeführt werden, wodurch eine konsistente und fehlerfreie Bereitstellung über verschiedene Umgebungen hinweg sichergestellt wird. Helm erleichtert hierbei die Verwaltung in mehreren Namespaces und ermöglicht eine effiziente Verwaltung und Aktualisierung komplexer Anwendungen.

Beispielanwendung: Webseite
Ein weiteres praktisches Beispiel ist die Bereitstellung einer Webseite mit WordPress. Das WordPress-Chart von Bitnami ist ein vorgefertigtes Helm-Chart, das alle notwendigen Komponenten für den Betrieb einer WordPress-Webseite umfasst. Dieses Chart ermöglicht es, eine komplette WordPress-Installation inklusive der zugehörigen MySQL-Datenbank in wenigen Schritten bereitzustellen.
Das Helm-Chart enthält alle erforderlichen Kubernetes-Ressourcen wie Deployments für die WordPress- und MySQL-Container, Services für die Kommunikation zwischen den Containern, Persistent Volume Claims (PVCs) für die Datenspeicherung, ConfigMaps für die Konfigurationsdateien und Secrets für sichere Zugangsdaten. Entwickler können das Chart an ihre spezifischen Bedürfnisse anpassen, indem sie Werte wie die Datenbankzugangsdaten, die Speichergröße oder die Anzahl der replizierten Instanzen konfigurieren.
Ein weiterer Vorteil ist die einfache Aktualisierung und Wartung der WordPress-Installation. Wenn beispielsweise eine neue Version von WordPress verfügbar ist, kann das Helm-Chart aktualisiert werden, um die neue Version zu verwenden. Dieser Prozess reduziert die Risiken und den Aufwand, der normalerweise mit manuellen Updates verbunden ist. Darüber hinaus können durch die Nutzung von Helm-Rollbacks bei Problemen schnell auf eine vorherige, funktionierende Version zurückgesetzt werden, was die Betriebssicherheit erhöht.

Beispielanwendung: Helm-Chart für WordPress
In einem vorangehenden Artikel haben wir bereits ein Deployment ohne Helm erklärt. Im Folgenden wird aufgezeigt, wie ein solches Vorgehen mit Helm aussehen könnte.
Anstatt manuell mehrere YAML-Dateien zu erstellen und zu verwalten, können wir das vorgefertigte WordPress-Helm-Chart von Bitnami verwenden. Dieses Chart enthält alle notwendigen Ressourcen und Konfigurationen, die für die Bereitstellung einer WordPress-Installation erforderlich sind, und kann mit einem einzigen Helm-Befehl installiert werden.

    1. Helm installieren: Zunächst müssen Sie Helm installieren. Eine Anleitung hierzu finden Sie auf der offiziellen Webseite von Helm: https://helm.sh/docs/intro/install/
    2. Helm-Repository hinzufügen: Fügen Sie das Bitnami-Repository hinzu, das das WordPress-Chart enthält:
      helm repo add bitnami https://charts.bitnami.com/bitnami
      helm repo update
    3. WordPress mit Helm installieren: Installieren Sie das WordPress-Chart mit Helm. Dieser Befehl erstellt alle notwendigen Ressourcen wie Deployments, Services, PVCs und Konfigurationsdateien:
      helm install my-wordpress bitnami/wordpress
    4. Anpassung der Konfiguration: Wenn spezifische Anpassungen erforderlich sind, können diese durch Erstellen einer values.yaml-Datei vorgenommen werden. Diese Datei überschreibt die Standardwerte des Charts. Beispiel:
      mariadb: 
          enabled: true 
          architecture: standalone 
          auth: 
              rootPassword: rootpassword123 
          primary: 
              persistence: 
                  enabled: true 
                  size: 10Gi
    5. Installieren Sie das Chart mit den benutzerdefinierten Werten:
      helm install my-wordpress -f values.yaml bitnami/wordpress

Warum Helm wichtig für Kubernetes ist
Vor der Einführung von Helm gab es keine vergleichbare Lösung, die die Verwaltung von Kubernetes-Anwendungen so stark vereinfachte. Helm ist besonders wichtig für Kubernetes geworden aufgrund der wachsenden Komplexität von Kubernetes-Anwendungen und der steigenden Anforderungen an deren Verwaltung. In einer Zeit, in der Geschwindigkeit und Agilität entscheidend sind, beschleunigt Helm die Entwicklungszyklen, indem es Werkzeuge zur Verfügung stellt, um Anwendungen effizienter zu verwalten und bereitzustellen. Durch die Verwendung von vorgefertigten Helm-Charts können Anwendungen schneller bereitgestellt werden, ohne sich um die manuelle Konfiguration und Verwaltung von Kubernetes-Ressourcen kümmern zu müssen. Darüber hinaus bietet Helm verbesserte Mechanismen für das Konfigurationsmanagement, was zu einer erhöhten Flexibilität und Kontrolle über die Bereitstellung von Kubernetes-Anwendungen führt.