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.