Top

Helm

Ein Package Manager für Kubernetes, Packages werden als Charts bezeichnet.
Es wird ein Kubernetes Cluster und die Installation von Helm benötigt.
Helm wird sich mit dem gleichen Cluster verbinden wie kubectl.

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://charts.helm.sh/stable
helm repo update

Man kann das Repository durchsuchen, unter stable findet man die offiziellen Kubernetes Charts.
Die Repositories stable and incubator existieren noch wegen Helm v2 man soll den Artifakt Hub.

helm search repo [KEYWORD]

Der Artifakt Hub https://artifacthub.io/ ist der Ort wo man Charts suchen kann.

helm search hub [KEYWORD]

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 show angezeigt bekommen.

helm show all 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 _helpers.tpl, deployment.yaml, hpa.yaml, service.yaml, serviceaccount.yaml und ingress.yaml Datei. Ein Chart kann Abhängigkeiten zu anderen Charts haben, diese können in der Chart.yaml Datei beschrieben werden.

dependencies:
- name: redis
  version: "15.4.0"
  repository: "https://charts.bitnami.com/bitnami"

Die benötigten Charts werden in Verzeichnis /charts als versioniertes Archive gespeichert.

helm dependency update
Getting updates for unmanaged Helm repositories...
...Successfully got an update from the "https://charts.bitnami.com/bitnami" chart repository
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
Downloading redis from repo https://charts.bitnami.com/bitnami
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 --show-only nur ein bestimmtes Template darzustellen.

helm template newchart/
helm template newchart/ --show-only templates/service.yaml

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

helm template newchart/ --output-dir output --set name=newchart
wrote output/newchart/charts/redis/templates/serviceaccount.yaml
wrote output/newchart/templates/serviceaccount.yaml
wrote output/newchart/charts/redis/templates/secret.yaml
wrote output/newchart/charts/redis/templates/configmap.yaml
wrote output/newchart/charts/redis/templates/health-configmap.yaml
wrote output/newchart/charts/redis/templates/scripts-configmap.yaml
wrote output/newchart/charts/redis/templates/headless-svc.yaml
wrote output/newchart/charts/redis/templates/master/service.yaml
wrote output/newchart/charts/redis/templates/replicas/service.yaml
wrote output/newchart/templates/service.yaml
wrote output/newchart/templates/deployment.yaml
wrote output/newchart/charts/redis/templates/master/statefulset.yaml
wrote output/newchart/charts/redis/templates/replicas/statefulset.yaml
wrote output/newchart/templates/tests/test-connection.yaml

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

kubectl apply -f output/newchart/templates/

Releases

Ein Chart wird in Kubernetes mit install installiert.
Man setzt name oder kann sich mit --generate-name einen Namen generieren lassen.

helm install --set name=newchart newchart ./newchart
helm install --generate-nam newchart ./newchart

Eine neue Version eines installierten Charts erstellt man mit upgrade.

helm upgrade --set name=newchart newchart ./newchart

Ein Rollback kann man mit helm rollback [RELEASE] [REVISION] machen.

helm rollback newchart 1

Ein Release entfernt man mit uninstall.

helm uninstall newchart    
release "newchart" uninstalled

Die entfernten Releases kann man sich mit helm list --uninstalled anzeigen lassen, wenn man --keep-history beim entfernen verwendet.

helm uninstall newchart --keep-history
helm list --uninstalled

Um sich die installierten Releases anzeigen zu lassen, nutzt man helm list.
Auch die History eines Charts kann man sich mit helm history [KEYWORD] anzeigen lassen.

Kubernetes Dashboard

Das Kubernetes Dashboard kann so zum Beispiel so installieren.

helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/
helm repo update
helm install dashboard-demo kubernetes-dashboard/kubernetes-dashboard --set enableSkipLogin=true

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 kubernetes-dashboard/kubernetes-dashboard --set fullnameOverride="dashboard"