Grundlagen von Helm

Abgeschlossen

Bei der Bereitstellung, Versionsverwaltung und Aktualisierung von Anwendungen müssen Sie sicherstellen, dass Sie über die richtigen Versionen von Softwarebibliotheken und -konfigurationen verfügen, damit die Anwendung erwartungsgemäß funktioniert.

Nehmen Sie an, dass Ihr Entwicklungsteam entscheidet, die Website des Unternehmens für Haustierbedarf auf Kubernetes bereitzustellen. Dabei erstellt Ihr Team YAML-basierte Bereitstellungs-, Dienst- und Eingangsdateien. Sie hartcodieren und verwalten die Informationen in jeder Datei für jede Zielumgebung manuell. Die Verwaltung von drei Dateien für jede Umgebung ist jedoch aufwendig und wird mit zunehmender Größe der Anwendung immer komplexer.

A diagram that shows a container deployed to a Kubernetes node using a deployment, a service, and an ingress YAML file.

Mit Helm können Sie die Anwendungsbereitstellung vereinfachen und hartcodierte Bereitstellungsvariablen und -einstellungen vermeiden.

Was ist Helm?

Helm ist ein Paket-Manager für Kubernetes, der alle Ressourcen- und Bereitstellungsinformationen einer Anwendung in einem einzigen Bereitstellungspaket vereint.

A diagram shows a containerized app deployed to a Kubernetes cluster using a Helm chart.

Sie können sich Helm ähnlich wie den Paket-Manager unter Windows, das Advanced Package Tool (apt) unter Linux oder Homebrew unter macOS vorstellen. Sie geben den Namen der Anwendung ein, die Sie installieren, aktualisieren oder entfernen möchten, und Helm übernimmt den eigentlichen Prozess.

Sie können mit Helm jedoch nicht nur jeweils eine Anwendung installieren. Vielmehr können Sie mit Helm zur Durchführung der Bereitstellung einer Anwendung vorlagenbasierte, für den Benutzer lesbare YAML-Skriptdateien erstellen. Mit diesen Vorlagendateien können Sie alle erforderlichen Abhängigkeiten, Konfigurationszuordnungen und Geheimnisse angeben, die zur Durchführung der Bereitstellung einer Anwendung verwendet werden.

Zur Durchführung einer Anwendungsbereitstellung in einem Kubernetes-Cluster kommen bei Helm vier Komponenten zum Einsatz:

  • Der Helm-Client
  • Helm-Diagramme
  • Helm-Releases
  • Helm-Repositorys

Was ist ein Helm-Client?

Beim Helm-Client handelt es sich um eine clientseitig installierte Binärdatei zum Erstellen und Übermitteln der Manifestdateien, die zum Bereitstellen einer Kubernetes-Anwendung erforderlich sind. Der Client ist für die Interaktion zwischen dem Benutzer und dem Kubernetes-Cluster verantwortlich.

A diagram shows the communication between three Helm components to create a Helm release; the client, chart, and repository.

Der Helm-Client ist für alle wichtigen Betriebssysteme verfügbar und wird auf dem Client-PC installiert. In Azure ist der Helm-Client in der Cloud Shell bereits vorinstalliert. Er unterstützt alle Sicherheits-, Identitäts- und Autorisierungsfeatures von Kubernetes.

Hinweis

In diesem Modul wird davon ausgegangen, dass Helm v3 verwendet wird. Wenn Sie nachsehen möchten, welche Helm-Version auf Ihrem Clientgerät ausgeführt wird, können Sie den Befehl helm version ausführen. Denken Sie daran, dass in diesem Modul zum Teil andere Befehlsparameter verwendet werden, falls Sie Helm v2 ausführen.

Was ist ein Helm-Chart?

Bei einem Helm-Chart handelt es sich um ein vorlagenbasiertes Bereitstellungspaket, das entsprechende Kubernetes-Ressourcen beschreibt. Es enthält alle Informationen, zum Erstellen und Bereitstellen der Manifestdateien, die benötigt werden, um eine Anwendung in einem Kubernetes-Cluster auszuführen.

Ein Helm-Chart besteht aus mehreren Dateien und Ordnern zur Beschreibung des Charts. Einige der Komponenten sind erforderlich, andere optional. Welche Komponenten verwendet werden, hängt von den Konfigurationsanforderungen der jeweiligen Anwendung ab.

In der folgenden Liste werden die Datei- und Ordnerkomponenten eines Helm-Charts mit den erforderlichen Elementen fett hervorgehoben:

Datei/Ordner Beschreibung
Chart.yaml Eine YAML-Datei, die die Informationen zum Chart enthält.
values.yaml Die Standardkonfigurationswerte für das Chart.
templates/ Ein Ordner, der die Bereitstellungsvorlagen für das Chart enthält.
LICENSE Eine Nur-Text-Datei, die die Lizenz für das Chart enthält.
README.md Eine Markdowndatei, die Anweisungen zur Verwendung des Charts enthält.
values.schema.json** Eine Schemadatei zum Strukturieren der Datei „values.yaml“.
charts/ Ein Ordner, der alle Subcharts für das Hauptchart enthält.
crds/ Benutzerdefinierte Ressourcendefinitionen.
templates/Notes.txt Eine Textdatei, die Hinweise zur Verwendung der Vorlagen enthält

Was ist ein Helm-Release?

Ein Helm-Release ist eine Anwendung oder Anwendungsgruppe, die mithilfe eines Charts bereitgestellt wird. Mit jeder Installation eines Charts wird im Cluster eine neue Instanz einer Anwendung erstellt. Dabei verfügt jede Instanz über einen Releasenamen, der es Ihnen ermöglicht, mit der jeweiligen Anwendungsinstanz zu interagieren.

A diagram shows the communication between three Helm components to create a Helm release: the client, chart, and repository. The release is highlighted.

Nehmen Sie an, dass Sie in Ihrem Kubernetes-Cluster zwei NGINX-Instanzen mit einem Chart installiert haben. Später beschließen Sie, die erste Nginx-Instanz zu aktualisieren, die zweite jedoch nicht. Da sich die beiden Releases unterscheiden, können Sie die erste Version aktualisieren, ohne dass sich dies auf die zweite Version auswirkt.

Was ist ein Helm-Repository?

Bei einem Helm-Repository handelt es sich um einen dedizierten HTTP-Server, auf dem Informationen in Helm-Charts gespeichert sind. Der Server hostet eine Datei, in der Charts beschrieben werden und die Informationen dazu enthält, wo die einzelnen Charts heruntergeladen werden können.

A diagram shows the communication between three Helm components to create a Helm release: the client, chart, and repository. The repository is highlighted.

Im Helm-Projekt werden zahlreiche öffentliche Charts gehostet. Zudem gibt es eine Vielzahl von Repositorys, deren Charts wiederverwendet werden können. Helm-Repositorys erleichtern das Auffinden und Wiederverwenden von Helm-Paketen.

Vorteile der Verwendung von Helm

Helm bringt eine Reihe von Vorteilen mit sich, die die Anwendungsbereitstellung vereinfachen und die Produktivität beim Entwicklungs- und Bereitstellungslebenszyklus von cloudnativen Anwendungen verbessern. Mit Helm sind Anwendungsreleases:

  • Wiederholbar
  • Zuverlässig
  • In mehreren und komplexen Umgebungen verwaltbar
  • Von verschiedenen Entwicklungsteams wiederverwendbar

Mit einem Helm-Chart wird die Bereitstellung einer Anwendung durch den Einsatz einer gepackten Vorlagenlogik standardisiert, die durch festgelegte Eingabewerte parametrisiert ist. Dieses vorlagengesteuerte Paketdesign bietet einen umgebungsunabhängigen Ansatz für die Bereitstellung und Freigabe von cloudnativen Anwendungen.