b'nerd GmbH b'nerd GmbH

Erste Schritte Helm Charts - Grundlagen

Was sind Helm-Charts? Wichtige Funktionen und Anwendungsfälle.

  1. Einführung
  2. Der Aufbau eines Helm Charts
    1. Chart.yaml
    2. Values.yaml im Detail
    3. Templates und Go-Templates
    4. Hooks
    5. Abhängigkeiten und Subcharts
    6. Testing
  3. Zusammenfassung

Einführung

In unserem letzten Artikel haben wir über die Grundlagen von Helm gesprochen und erklärt, wie Helm die Konfigurierbarkeit und das Lebenszyklusmanagement von Kubernetes-Anwendungen vereinfacht, einschließlich Aktualisierungen, Rollbacks und der Deinstallation von Anwendungen. Heute möchten wir tiefer in die Funktionsweise von Helm Charts eintauchen und detailliert erläutern, wie diese strukturiert sind und wie sie genutzt werden können, um Kubernetes-Anwendungen effizient zu managen.

Der Aufbau eines Helm Charts

Helm Charts sind Sammlungen von YAML-Dateien, die die Struktur und Konfiguration einer Kubernetes-Anwendung definieren. Ein Chart kann alles enthalten, was für den Betrieb einer Anwendung notwendig ist, einschließlich Deployments, Services, ConfigMaps, Secrets und mehr.

Ein typisches Helm Chart besteht aus mehreren Verzeichnissen und Dateien:

  • Chart.yaml: Diese Datei enthält Metadaten über das Chart, wie Name, Version und Beschreibung.
  • values.yaml: Hier werden Standardwerte für die Konfiguration des Charts definiert.
  • templates/: Dieses Verzeichnis enthält die Kubernetes-Manifeste, die während des Deployments generiert und angewendet werden.
  • charts/: Enthält Abhängigkeiten zu anderen Charts.
  • templates/_helpers.tpl: Enthält Hilfsfunktionen, die in den Templates verwendet werden können.

Metadaten in Chart.yaml

Die Chart.yaml Datei ist nicht nur eine einfache Liste von Metadaten. Sie enthält wichtige Informationen wie:

  • apiVersion: Die Version der Helm Chart API.
  • name: Der Name des Charts.
  • version: Die Version des Charts, wichtig für Versionierung und Updates.
  • appVersion: Die Version der eigentlichen Anwendung, die durch das Chart installiert wird.
  • description: Eine kurze Beschreibung des Charts.
  • keywords: Stichwörter zur besseren Auffindbarkeit.
  • home: Die Homepage des Projekts.
  • sources: Quellen des Charts, wie GitHub-Repositories.
  • maintainers: Informationen über die Personen, die das Chart pflegen.

Values.yaml im Detail

Die values.yaml Datei ist das Herzstück der Konfiguration. Hier können Standardwerte definiert werden, die während des Deployments angepasst werden können. Typische Parameter umfassen:

  • image: Repository, Tag und PullPolicy des Docker-Images.
  • replicaCount: Anzahl der Replikate für Deployments.
  • service: Typ und Port des Kubernetes-Service.
  • resources: Ressourcenlimits und -anforderungen für Pods.
  • nodeSelector, tolerations, affinity: Einstellungen für die Platzierung von Pods im Cluster.

Templates und Go-Templates

Die Dateien im templates/ Verzeichnis nutzen Go-Templates, um dynamische Kubernetes-Manifeste zu erstellen. Diese Templating-Engine erlaubt es, Werte aus der values.yaml Datei zu referenzieren und bedingte Logik anzuwenden. Beispiel:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Release.Name }}-nginx
spec:
  replicas: {{ .Values.replicaCount }}
  template:
    metadata:
      labels:
        app: {{ .Release.Name }}-nginx
    spec:
      containers:
      - name: nginx
        image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
        ports:
        - containerPort: 80

Hooks

Helm unterstützt Lifecycle Hooks, die zu verschiedenen Zeitpunkten während des Deployments ausgeführt werden können. Beispielsweise können Pre-Install und Post-Install Hooks verwendet werden, um Skripte oder Jobs auszuführen, die vor oder nach der Installation des Charts laufen.

Abhängigkeiten und Subcharts

Die charts/ Verzeichnis ermöglicht es, Abhängigkeiten zu anderen Charts zu verwalten. Subcharts können verwendet werden, um komplexe Anwendungen, die aus mehreren Komponenten bestehen, modular zu gestalten. Diese Abhängigkeiten werden in der Chart.yaml Datei definiert und können automatisch vom Helm-Repository heruntergeladen werden.

Testing

Helm bietet auch die Möglichkeit, Tests zu definieren, die sicherstellen, dass die Anwendung korrekt installiert wurde. Diese Tests können im templates/ Verzeichnis als Pod-Definitionen erstellt werden und werden mit dem helm test Befehl ausgeführt.

Zusammenfassung

Durch die Kombination dieser verschiedenen Elemente bieten Helm Charts eine mächtige und flexible Methode, um Kubernetes-Anwendungen zu verwalten. Sie ermöglichen eine klare Strukturierung und Konfigurierbarkeit, die den gesamten Lebenszyklus einer Anwendung abdecken, von der Installation über Updates bis hin zur Deinstallation. Mit diesem erweiterten Verständnis von Helm Charts sind Sie nun in der Lage, komplexe Anwendungen in Ihrer Kubernetes-Umgebung effizient zu deployen und zu verwalten.

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