Ответ
Helm использует шаблоны Go (Go templates) для генерации Kubernetes-манифестов. Шаблоны хранятся в директории templates/ чарта.
Основные элементы:
- Переменные:
{{ .Values.param }}(берутся изvalues.yaml) - Условия:
{{ if .Values.enabled }} ... {{ end }} - Циклы:
{{ range .Values.items }} ... {{ end }} - Функции и хелперы:
{{ include "helper.tpl" . | indent 4 }}
Пример шаблона Deployment:
# templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}-app
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
app: {{ .Release.Name }}-app
template:
metadata:
labels:
app: {{ .Release.Name }}-app
spec:
containers:
- name: app
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
ports:
- containerPort: {{ .Values.service.port }}
Типичный рабочий процесс:
- Определяю параметры в
values.yaml. - Проверяю рендеринг шаблонов командой
helm template .илиhelm install --dry-run --debug .. - Устанавливаю или обновляю релиз:
helm upgrade --install my-release ..
Шаблоны Helm — это ключевой инструмент для параметризации, устранения дублирования и управления сложными наборами Kubernetes-ресурсов в рамках одного чарта.