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ý prostor | Zdroj |
|---|---|
.Values | values.yaml, přebito přes -f a --set |
.Chart | Chart.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.