b'nerd GmbH b'nerd GmbH

Dokumentation Helm - Grundlagen

Kubernetes-Deployments vereinfachen und beschleunigen

Einleitung

Kubernetes hat sich in den letzten zehn Jahren zu Recht einen guten Ruf als robuste Plattform für das Management von Container-Infrastrukturen erworben und Helm, der Kubernetes Package Manager, hat wesentlich zu diesem Erfolg beigetragen.

Auch bei Projekten, die auf den ersten Blick als unkompliziert erscheinen – wie etwa das Deployment einer einfachen Blog-Website –, kann Kubernetes ohne die richtigen Werkzeuge schnell unübersichtlich werden. Die Notwendigkeit, das Zusammenspiel der verschiedenen Objekte und deren Abhängigkeiten zu managen – vom Deployment des Web-Servers über Persistent Volumes für die Speicherung von Inhalten bis hin zum Load Balancer oder Service für den Website-Zugriff – erfordert detaillierte Konfigurationen in YAML-Dateien. Hier setzt Helm an und bietet durch seine abstrahierte Schicht und wiederverwendbare Pakete in Form von Charts eine deutliche Vereinfachung.

Kubernetes Application Management vereinfachen

Das Konzept hinter Helm ist so einfach wie effektiv: Anstatt jede Ressource per YAML-Datei manuell zu konfigurieren und zu verwalten, fasst Helm den Zustand eines Clusters in einem übersichtlichen, wiederverwendbaren Format zusammen. Dieses Prinzip ist vor allem für Nutzer von Unix- und Linux-Systemen nicht neu: Paketverwaltungen, so genannte Package Manager wie npm, apt oder auch homebrew unter macOS, gehören dort für viele Anwender zum Alltag. Ein Package Manager ist eine Sammlung von Werkzeugen, die das Installieren, Aktualisieren und Deinstallieren von Softwarepaketen vereinfacht. Helm überträgt dieses bewährte Konzept in die Welt von Kubernetes und fungiert somit als Package Manager für Kubernetes-Anwendungen.

Durch die Bündelung von Ressourcen und Abhängigkeiten in einem Helm Chart, einem Paketformat für Kubernetes-Anwendungen, ermöglicht Helm eine effiziente und fehlerarme Verwaltung selbst komplexester Deployments. Dies reduziert nicht nur den Aufwand für die Bereitstellung und Aktualisierung von Anwendungen, sondern sorgt auch für eine höhere Zuverlässigkeit und Konsistenz der Infrastruktur. Mit Helm können die Vorteile von Kubernetes voll ausgeschöpft werden, ohne sich in den Tiefen manueller Konfigurationen zu verlieren.

Häufige Anwendungsfälle

  • Deployments konfigurieren und standardisieren
  • Deployments, Versionen und Updates verwalten
  • automatisierte Installation von Software und Software-Abhängigkeiten

Die wichtigsten Bestandteile

Helm Chart

Ein Helm Chart ist im Grunde ein Bauplan für Kubernetes-Cluster und die darauf laufenden Anwendungen. Es umfasst eine Reihe von Dateien, die sowohl den Zustand einzelner Kubernetes-Ressourcen festlegen als auch deren Beziehungen untereinander definieren.

In einem Chart findet sich alles, was nötig ist, um eine Anwendung zu deployen – von Container-Images bis hin zu Netzwerk- und Speichereinstellungen. Es fungiert wie eine wiederverwendbare Schablone, die das konsistente und effiziente Deployment von Anwendungen über verschiedene Umgebungen hinweg ermöglicht.

Zentral für jedes Helm Chart sind die chart.yaml und values.yaml. Die chart.yaml enthält Metadaten wie den Chartnamen und die Version, sie identifiziert also das Chart auf einen Blick. Die values.yaml hingegen spielt die Schlüsselrolle bei der Konfiguration, indem sie alle konfigurierbaren Parameter mit Standardwerten listet. Diese Datei macht es möglich, die Anwendungseinstellungen flexibel anzupassen, beispielsweise die Speicherzuweisung oder die URL der Anwendung zu ändern.

Repository

Wenn man das Helm Chart als Bauplan betrachtet und dieser Analogie folgt, dann ist das Helm Repository vergleichbar mit einem Archiv oder einer Bibliothek, die eine breite Palette an Lösungen für unterschiedlichste Anwendungsfälle vorrätig hält. Diese Repositories sind sowohl als öffentliche Sammlungen für die Gemeinschaft zugänglich als auch als private Repositories für unternehmensinterne Anwendungen verfügbar. Sie bieten eine flexible und zentrale Plattform für das Teilen, Entdecken und Verwalten von Charts.

Die Handhabung dieser Repositories ist dank einfacher Helm-Befehle leicht zugänglich. Nutzer können damit effizient Charts hinzufügen, aktualisieren oder entfernen, was die Verwaltung und Bereitstellung von Anwendungen erheblich vereinfacht.

Release

Ein "Release" in Helm ist eine Instanz eines Helm Charts, das in einem Kubernetes-Cluster ausgeführt wird. Bei jedem Deployment eines Charts erstellt Helm ein Release, das diese spezifische Ausführung repräsentiert, komplett mit einem einzigartigen Namen und einer Versionsnummer. Dies ermöglicht eine effiziente Versionierung und Verwaltung von Anwendungen, einschließlich der Fähigkeit, bei Problemen zu einer älteren Version zurückzukehren.

Die Release-Verwaltung durch Helm bringt Kontrolle und Flexibilität in das Deployment und Management von Kubernetes-Anwendungen. Es vereinfacht Updates, Rollbacks und macht den gesamten Prozess transparenter. Kurz gesagt, Helm Releases sind zentral für das Lebenszyklusmanagement von Anwendungen in Kubernetes, indem sie ein klares System für die Verfolgung von Deployments und deren Versionen bieten und dabei helfen, die Konfigurationsverwaltung zu vereinfachen.

Erste Schritte

Helm installieren

Die Installation von HELM ist denkbar einfach.

Installation über apt (Debian/Ubuntu)

curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
sudo apt-get install apt-transport-https --yes
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm

Installation über snapt

sudo snap install helm --classic

Installation über homebrew (macOS)

brew install helm

Die wichtigsten Befehle

Repository hinzufügen

Um ein Helm Repository hinzuzufügen, verwendet ihr den folgenden Befehl im Terminal:

helm repo add [REPO_NAME] [REPO_URL]

[REPONAME] ist der gewünschte Name für das Repository, den ihr frei wählen könnt. Dieser Name wird verwendet, um das Repository in weiteren Helm-Befehlen zu referenzieren. [REPOURL] ist die URL, unter der das Repository erreichbar ist. Dies könnte eine URL zu einem öffentlichen Helm Chart Repository wie https://charts.helm.sh/stable oder zu einem privaten Repository in eurem Unternehmensnetzwerk sein.

helm install

Der Befehl helm install dient dazu, ein neues Helm Chart in eurem Kubernetes-Cluster zu deployen. Ihr könnt damit eine Anwendung samt aller ihrer Komponenten und Abhängigkeiten mit einem einzigen Kommando installieren. Der Befehl benötigt mindestens zwei Argumente: einen Namen für das Release und den Pfad oder Namen des Charts, das ihr installieren möchtet.

helm install mein-release helm/repo/meine-anwendung

Dieses Kommando installiert das Chart meine-anwendung aus dem angegebenen Repository und kreiert ein Release mit dem Namen mein-release.

helm upgrade

Mit helm upgrade könnt ihr ein bereits installiertes Release aktualisieren, indem ihr ein neueres Chart oder eine andere Konfiguration anwendet. Dieser Befehl ermöglicht es euch, eure Anwendung auf die neueste Version zu bringen oder Konfigurationsänderungen vorzunehmen, ohne die bestehende Installation entfernen zu müssen.

helm upgrade mein-release helm/repo/meine-anwendung --version 1.2.3

Dies aktualisiert das Release mein-release auf die Version 1.2.3 des Charts meine-anwendung.

helm rollback

Falls ein Upgrade nicht wie gewünscht funktioniert oder Probleme verursacht, bietet helm rollback eine schnelle Möglichkeit, zu einer früheren Version des Releases zurückzukehren. Gebt einfach den Namen des Releases und die Revision, zu der ihr zurückkehren wollt, an.

helm rollback mein-release 1

Dieser Befehl rollt das Release mein-release auf seine erste Version zurück.

helm uninstall

Um ein Release und alle damit verbundenen Kubernetes-Ressourcen zu entfernen, verwendet ihr helm uninstall. Dieser Schritt ist endgültig und entfernt das angegebene Release vollständig aus eurem Cluster.

helm uninstall mein-release

Mit diesem Kommando wird das Release mein-release und alle zugehörigen Ressourcen aus eurem Kubernetes-Cluster gelöscht.

Fazit

Helm trägt entscheidend zur Popularität von Kubernetes bei, indem es eine Brücke zwischen der leistungsstarken, aber komplexen Infrastruktur von Kubernetes und dem Bedarf an schneller, effizienter Softwareentwicklung und -bereitstellung in der modernen IT-Landschaft schlägt.

Sie haben Fragen oder wünschen ein individuelles Angebot? Wir beraten Sie gerne.

Kontakt

Unsere Cloud Experten beraten Sie gerne und individuell.

Unser Büro

Sartoriusstraße 22

20257 Hamburg, Deutschland


Mo - Fr: 09.00 - 18.00 Uhr

Telefon
+49 40 239 69 754 0
Email
hello@bnerd.com