Helm и Kustomize
Тема дорожной карты · Kubernetes
Helm и Kustomize — два доминирующих инструмента для управления манифестами Kubernetes в масштабе, принципиально различающихся по подходу: Helm использует движок Go-шаблонов для генерации K8s YAML из параметризованных файлов values.yaml, тогда как Kustomize патчит и накладывает оверлеи на существующие манифесты Kubernetes без шаблонизации, используя файлы kustomization.yaml со стрелками resources, patchesStrategicMerge и configMapGenerator. Helm идеален для распространения переиспользуемых, версионированных пакетов приложений между организациями — например, установки Prometheus через helm install prometheus prometheus-community/kube-prometheus-stack, — тогда как Kustomize отлично справляется с окружение-специфичной кастомизацией базовых манифестов: добавлением или переопределением replicas, тегов image или limits ресурсов для каждого кластера без форкинга оригинального YAML. Оба инструмента нативно поддерживаются Argo CD и Flux CD: Argo CD автоматически определяет, использует ли директория Helm или Kustomize, и рендерит соответственно, а kustomize build интегрирован в kubectl apply -k как первоклассная возможность CLI Kubernetes. Распространённый гибридный паттерн — Helm + Kustomize, где Kustomize-оверлеи постобрабатывают отрендеренный вывод Helm-чарта, давая командам версионированное распространение Helm с точными возможностями патчинга Kustomize.
Как это работает
Helm и Kustomize — слой package management / templating над сырыми манифестами Kubernetes. Helm оборачивает манифесты в reusable charts с values-based параметризацией; Kustomize накладывает патчи поверх базовых манифестов без templating-синтаксиса. Оба производят финальный YAML, который потребляет kubectl apply — они просто структурируют, как этот YAML собирается до отправки.
Когда применять
Выбирайте Helm и Kustomize по предпочтению команды и 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.