Helm Chart Helper¶
Was ist ohMyHelm?¶
ohMyHelm ist ein Framework zum erstellen von Helm Charts. ohMyHelm bietet hierfür zahlreiche templates an, die es ermöglichen unterschiedliche Kubernetes Manifeste zu erstellen. Ähnlich wie in docker-compose, werden hier lediglich angaben in der values.yaml vorgenommen.
Dabei wird in zwei Kategorien unterschieden:
HELPERbieten zahlreichetoolsum auf einfache weisesecrets,configMaps, usw. anzulegen.CHARThilft beim erstellen einesdeployment,statefulsetoderdaemonset. Zusätzlich könnenservice,rbac,initContainer,jobs, und weitere objekte konfiguriert werden.
HELPER¶
Weitere informationen zu HELPER siehe: helper
Verfügbare helper:
namespacesmanifestsimageCredentialsZum erstellen von container registry secrets.ingresssecretssecretsFromFiletlsSecretsZum erstellen von ZertifikatenconfigsconfigmonitoringPrometheusservicemonitorObjektjob
CHART¶
Weitere informationen zu CHART siehe: chart.
Um das
CHARTzu verwenden muss dieses zunächst aktiviert werden:
chart:
enabled: true
...
- Folgender Leitfaden unterstützt beim erstellen eines eigenen Services: Checkliste.
- Beispiele: examples
Quickstart¶
In folgendem Beispiel erstellen wir ein node-red deployment mit ohMyHelm.
Voraussetzung:
kuberneteskubeconfighelmcli installiert- optional
kubectlinstalliert
Die folgenden Dateien, erstellen wir in einem neuen Ordner omh-nodered.
Chart.yaml¶
Da ohMyHelm mehrfach in einer Chart.yaml verwendet werden kann, legen wir jedes Chart als dependencie an. Mit alias können wir dem Chart einen eindeutigen Namen geben den wir später in der values.yaml verwenden können.
Erstelle eine Chart.yaml mit folgendem inhalt:
apiVersion: v2
name: mysample
description: Example Chart with ohmyhelm as dependency
type: application
version: 0.1.0
appVersion: "1.16.0"
dependencies:
- name: ohmyhelm
alias: nodered
repository: https://gitlab.com/api/v4/projects/28993678/packages/helm/stable
version: 1.17.0
condition: nodered.enabled
values.yaml¶
In der values.yaml konfigurieren wir nun unser neues Deployment. Der in der Chart.yaml angegebene alias, wird hier als referenz verwendet.
nodered:
enabled: true # Siehe condition in Chart.yaml. Hier können wir das deployment deaktivieren.
chart:
enabled: true # Aktiviert die `chart` funktion von ohMyHelm
statefulset: true # Erstelle ein StatefulSet
fullnameOverride: "nodered" # gebe diesem deployment einen eindeutigen Namen.
podSecurityContext:
runAsUser: 1000
runAsGroup: 1000
fsGroup: 1000
container:
image: nodered/node-red:latest
ports:
- name: http
containerPort: 1880
protocol: TCP
env:
- name: TZ
value: "Europe/Berlin"
statefulsetVolume:
volumeMounts:
- name: data-nodered
mountPath: /data
volumeClaimTemplates:
- metadata:
name: "data-nodered"
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
Das Chart installieren¶
export KUBECONFIG=/pfad/zur/kubeconfig
helm dep update
helm upgrade --install -n "omh-nodered" --create-namespace omh-nodered .
Das wars schon!?¶
Das Chart ist installiert und das StatefulSet sollte auf dem Cluster vorhanden sein. Da wir in diesem Beispiel keinen "ingress" verwenden, ist der Service extern nicht erreichbar. Wir können uns aber mittels kubectl port-forward mit dem Service verbinden.
# Port ggf. anpassen "LOCALPORT"
LOCALPORT="9999"
kubectl port-forward svc/nodered --namespace omh-nodered $LOCALPORT:80
Nodered sollte jetzt unter folgender URL erreichbar sein http://localhost:9999