Helm charty

Psaní vlastního chartu

helm create myapp
myapp/
  Chart.yaml          # metadata: name, version, appVersion   (povinné)
  values.yaml         # výchozí hodnoty                       (povinné)
  charts/             # závislé charty
  crds/               # CRD, instalují se jako první
  templates/          # manifesty ve formě Go šablon
    _helpers.tpl      # znovupoužitelná makra

version je verze chartu (SemVer 2, promítne se do myapp-0.1.0.tgz), appVersion je verze software uvnitř.

Šablony

Jmenný prostorZdroj
.Valuesvalues.yaml, přebito přes -f a --set
.ChartChart.yaml
.Release.Release.Name, .Namespace, .Revision – vzniká při instalaci
metadata:
  name: {{ include "myapp.fullname" . }}
spec:
  replicas: {{ .Values.replicaCount }}
  template:
    spec:
      containers:
        - name: {{ .Chart.Name }}
          image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"

Užitečné: default, quote, required "zpráva" .Values.x, {{- … -}} pro ořezání bílých znaků, {{ if }} / {{ range }} a include pro makra.

Pracovní smyčka

graph LR A[uprav šablony/hodnoty] --> B[helm lint] B --> C[helm template ./myapp] C --> D[helm install --dry-run --debug] D --> E[helm install / upgrade] E --> A
helm lint myapp
helm template ./myapp                          # vyrenderuje lokálně, cluster netřeba
helm install demo ./myapp --dry-run --debug    # vyrenderuje a ověří na serveru
helm package myapp                             # → myapp-0.1.0.tgz

Renderujte dřív, než instalujete. Skoro každá chyba v chartu je vidět ve vyrenderovaném YAML – špatné odsazení, prázdná hodnota, chybějící uvozovky kolem čísla.

Reference