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:
HELPER
bieten zahlreichetools
um auf einfache weisesecrets
,configMaps
, usw. anzulegen.CHART
hilft beim erstellen einesdeployment
,statefulset
oderdaemonset
. Zusätzlich könnenservice
,rbac
,initContainer
,jobs
, und weitere objekte konfiguriert werden.
HELPER¶
Weitere informationen zu HELPER
siehe: helper
Verfügbare helper:
namespaces
manifests
imageCredentials
Zum erstellen von container registry secrets.ingress
secrets
secretsFromFile
tlsSecrets
Zum erstellen von Zertifikatenconfigs
config
monitoring
Prometheusservicemonitor
Objektjob
CHART¶
Weitere informationen zu CHART
siehe: chart.
Um das
CHART
zu 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:
kubernetes
kubeconfig
helm
cli installiert- optional
kubectl
installiert
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