Top

Helm

Ein Package Manager für Kubernetes, Packages werden als Charts bezeichnet.
Helm hat zwei Komponenten, den Client Helm und den Server Tiller.
Der Server läuft im Cluster und nutzt die Kubernetes API.
Der Client arbeitet auf der Konsole und interagiert mit dem Server.

Es wird ein Kubernetes Cluster und die Installation von Helm benötigt.
Man initialisiert Helm und installiert damit Tiller im Cluster.
Helm wird sich mit dem gleichen Cluster verbinden wie kubectl.

helm init

Repositories

Das Chart Repository kann man mit add, list, remove, update und index nutzen.

helm repo list    
helm repo remove stable
helm repo add stable https://kubernetes-charts.storage.googleapis.com
helm repo update

Man kann das Repository durchsuchen, unter stable findet man die offiziellen Kubernetes Charts.

helm search
helm search local/

Die lokalen Chart Repositories kann man sich mit einem lokalen Server anzeigen lassen.

helm serve
Regenerating index. This may take a moment.
Now serving you on 127.0.0.1:8879

Charts

Ein Chart beschreibt eine Menge von Kubernetes Resourcen. Einen neuen Chart erstellt man mit create. Dazu wird das Verzeichhnis erstellt, wenn nicht vorhanden, dann werden die benötigten Dateien und Verzeichnisse erzeugt.

helm create newchart

Die Chart.yaml Datei beschreibt das Package. Jeder Chart hat eine Version, welche beim Package Namen mit verwendet wird.
Dazu werden die Werte in values.yaml definiert die an die Templates beim erstellen übergeben werden.

Informationen zum einen Chart kann man mit inspect angezeigt bekommen.

helm inspect newchart

Einen Chart kann man mit lint auf Probleme überprüfen.

helm lint newchart
==> Linting newchart
[INFO] Chart.yaml: icon is recommended

1 chart(s) linted, no failures

Im Verzeichnis /templates findet man eine deployment.yaml, service.yaml und ingress.yaml Datei.
Ein Chart kann Abhängigkeiten zu anderen Charts haben, diese können in einer requirements.yaml Datei beschrieben werden.
Die benötigten Charts werden in Verzeichnis /charts als versioniertes Archive gespeichert.

helm dependency update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "local" chart repository
...Successfully got an update from the "stable" chart repository
Update Complete. Happy Helming!
Saving 1 charts
Deleting outdated charts

Nun kann man ein versioniertes Archive newchart-0.1.0.tgz von dem Chart erstellen.

helm package newchart

Lokales arbeiten

Helm bietet die Möglichkeit Charts lokal darzustellen, Tiller ist dafür nicht nötig.
Mit dem Kommando template wird der Chart auf der Konsole dargestellt.
Es ist auch möglich mit der Option -x nur ein bestimmtes Template darzustellen.

helm template newchart/
helm template newchart/ -x templates/service.yaml

Um die Ausgabe zu speichern nutzt man --output-dir um ein Verzeichnis zu bestimmen.

helm template newchart/ --output-dir output

Die gespeicherten Templates könnte man nun auch mit kubectl anwenden.

kubectl apply -f output/newchart/templates/

Releases

Ein Chart im Kubernetes installiert man mit install, Helm erstellt ein Release für jede Installation.

helm install stable/kubernetes-dashboard --name dashboard-demo

Die vorhandenen Releases kann man sich mit helm list anzeigen lassen.
Mit kubectl get services kann man zusätzlich prüfen ob alles im Cluster angekommen ist.

helm upgrade dashboard-demo stable/kubernetes-dashboard --set fullnameOverride="dashboard"

Ein Rollback kann man mit helm rollback [RELEASE] [REVISION] machen.
Ein Release entfernt man mit delete, die entfernten Releases kann man sich mit helm list --deleted anzeigen lassen.

helm delete dashboard-demo