values.yaml и releases

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

Helm Values — конфигурационный слой Helm-чарта, определённый в values.yaml как иерархическая YAML-структура, управляющая каждым настраиваемым аспектом манифестов Kubernetes, рендерящихся шаблонами чарта. Значения по умолчанию в values.yaml можно переопределить во время развёртывания с помощью --values custom-values.yaml (для переопределений из файла) или флагов --set key=value в командах helm install и helm upgrade, с вариантами --set-string и --set-file для безопасности типов и содержимого файлов соответственно. В GitOps-рабочих процессах файлы значений для конкретных окружений (values-staging.yaml, values-prod.yaml) коммитятся вместе с чартами и ссылаются на них в спецификациях Application Argo CD через spec.source.helm.valueFiles или в ресурсах HelmRelease Flux CD под spec.values. Helm Values поддерживают валидацию схемы через файл values.schema.json в корне чарта, обеспечивающий обязательные поля и типы данных и вызывающий быстрый сбой helm install с информативной ошибкой при неправильной конфигурации, что повышает надёжность развёртываний Kubernetes в CI/CD-конвейерах.

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

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

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

Выбирайте values.yaml и releases по предпочтению команды и 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.

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

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