include, required, tpl
include rendert ein Named Template zu einem
String, der Output lässt sich pipen
(| nindent 4), anders als bei der
template-Action.
required bricht das Rendering mit eigener Fehlermeldung ab, wenn der Values-Eintrag leer ist.
tpl evaluiert Strings aus values als
Template, für konfigurierbare Templates und
.Files.Get-Inhalte.
Named Templates (_helpers.tpl)
define-Namen sind global über
Chart + Subcharts, immer mit Chart-Namen prefixen:
shop.labels statt labels. Ablage
konventionell in templates/_helpers.tpl
(Underscore-Dateien rendern kein Manifest).
{{- define "shop.labels" -}}
app.kubernetes.io/name: {{ .Chart.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
# Verwendung: Output pipen, nicht 'template'
metadata:
labels: {{- include "shop.labels" . | nindent 4 }}
host: {{ required "host fehlt!" .Values.host }}
conf: {{ tpl (.Files.Get "conf/app.conf") . }}
Checksum-Trick
ConfigMap-Änderung rollt das Deployment nicht automatisch, Checksum-Annotation im Pod-Template erzwingt den Rollout:
annotations:
checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}