Как использовать шаблоны Helm

«Как использовать шаблоны Helm» — вопрос из категории Kubernetes, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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 }}

Типичный рабочий процесс:

  1. Определяю параметры в values.yaml.
  2. Проверяю рендеринг шаблонов командой helm template . или helm install --dry-run --debug ..
  3. Устанавливаю или обновляю релиз: helm upgrade --install my-release ..

Шаблоны Helm — это ключевой инструмент для параметризации, устранения дублирования и управления сложными наборами Kubernetes-ресурсов в рамках одного чарта.