Skip to content

Helm Chart Helper

⚠ THIS REPO IS WIP. USE AT YOUR OWN RISK!

What is ohMyHelm?

ohMyHelm is a framework for building helm charts without struggling with creating or modifying templates. Just add your informations to the values.yaml in a similar way to docker-compose files.

ohMyHelm has two main categories.

  1. Within HELPERS you will find some different tools, to create stuff like secrets and configMaps. If you can't find the right "helper" you can user the mainfest helper to create wathever you want ( For example StorageClass manifest ).
  2. With CHARTS you can simply create a deployment, statefulset or daemonset with service, rbac, initContainer, jobs, etc.

HELPERS

More information about HELPER see: helper

included helpers:

  • namespaces
  • manifests
  • imageCredentials for container registries
  • ingress
  • secrets
  • tlsSecrets for self-signed certs
  • configMaps
  • serviceMonitor prometheus metrics
  • job

CHART

Enable the CHART function by changing the value chart.enabled to true. More information about CHART see: chart

chart:
  enabled: true
  ...

ohMyHelm Package Registry URL https://gitlab.com/api/v4/projects/28993678/packages/helm/stable


Quickstart

Prerequists:

  • kubernetes
  • kubeconfig
  • helm cli installed
  • optional kubectl installed

Create an folder called omh-sample

Chart.yaml

Within this folder, Create a Chart.yaml File and add this:

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.15.2
    condition: nodered.enabled

values.yaml

Create the values.yaml in the same folder and the follwing content:

nodered:
  enabled: true
  chart:
    enabled: true
    statefulset: true
    fullnameOverride: "nodered"
    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

Now install the new Chart

helm dep update
helm upgrade --install -n "mysample" --create-namespace my-sample .

That's it!?

Your chart is installed and your new service is deployed in your kubernetes cluster. A service object will automatically generated ( ohMyHelm default ) and listen on port 80. Try to connect to our freshly installed service.

# If necessary, change the port in "LOCALPORT"
LOCALPORT="9999"
kubectl port-forward svc/nodered --namespace mysample $LOCALPORT:80

Open your browser http://localhost:9999

Whats next?

Now, you will build your own Chart with ohMyHelm or add an ingress to your service? You know what you need? Check out our checklist documentation.


Need more information about Helm, see: docs - helm install


Last update: September 26, 2022