Skip to content

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:

  1. HELPER bieten zahlreiche tools um auf einfache weise secrets, configMaps, usw. anzulegen.
  2. CHART hilft beim erstellen eines deployment, statefulset oder daemonset. Zusätzlich können service, 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 Zertifikaten
  • configs
  • config
  • monitoring Prometheus servicemonitor Objekt
  • job

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