Шаблонизация Helm

Тема дорожной карты · Kubernetes

Шаблонизация Helm — это система на основе Go-шаблонов внутри Helm-чартов, трансформирующая файлы templates/*.yaml в валидные манифесты Kubernetes путём интерполяции значений из values.yaml, Chart.yaml и пользовательских переопределений --set во время рендеринга. Директивы шаблонов используют синтаксис {{ }} со встроенными функциями из библиотеки Sprig — например {{ .Values.image.tag | default "latest" | quote }}, — тогда как именованные шаблоны, определённые в _helpers.tpl через {{- define "app.labels" }}, обеспечивают DRY-переиспользование общих блоков меток в ресурсах Deployment, Service и Ingress. Команда helm template <release> <chart> рендерит шаблоны локально без установки в кластер Kubernetes, что неоценимо для отладки логики шаблонов, валидации сгенерированного YAML и аудита того, что будет применено. Шаблонизация Helm поддерживает условия ({{- if .Values.ingress.enabled }}), циклы range по спискам и словарям и функцию tpl для двойного рендеринга динамических строк, давая авторам чартов полный контроль над манифестами Kubernetes, генерируемыми для каждого окружения.

Как это работает

Шаблонизация Helm — слой package management / templating над сырыми манифестами Kubernetes. Helm оборачивает манифесты в reusable charts с values-based параметризацией; Kustomize накладывает патчи поверх базовых манифестов без templating-синтаксиса. Оба производят финальный YAML, который потребляет kubectl apply — они просто структурируют, как этот YAML собирается до отправки.

Когда применять

Выбирайте Шаблонизация Helm по предпочтению команды и use-case: Helm побеждает для third-party софта (Prometheus, Cert-Manager, Argo CD ship charts), где вы кастомизируете маленькое подмножество values; Kustomize побеждает для in-house нагрузок, где overlay/base паттерны моделируют dev/staging/prod среды чисто. Многие команды используют оба — Helm для third-party, Kustomize для своего.

Типичные ошибки

Helm/Kustomize-ловушки: глубокая template-логика делает chart нечитаемым (используйте Kustomize overlays для различий между средами); патчи Kustomize дрейфуют от базовых манифестов по мере их эволюции; не закрепляете версии chart (Helm upgrade тянет новую версию, ломающую совместимость). Относитесь к chart как к коду: review, версионирование, lint через helm lint или kustomize build.

Связанные понятия

Полезные ресурсы