Kustomize
Тема дорожной карты · Kubernetes
Kustomize — нативный инструмент управления конфигурацией Kubernetes, встроенный в kubectl начиная с v1.14, применяющий патчи и оверлеи к базовым YAML-манифестам без шаблонизации или генерации кода. Его файл kustomization.yaml объявляет поля resources, patches, configMapGenerator, secretGenerator и images, обеспечивая окружение-специфичную кастомизацию — изменение replicas, namespace или тегов образов контейнеров — для оверлеев dev, staging и production без дублирования базовых определений Deployment, Service или Ingress. Выполнение kubectl apply -k ./overlays/production объединяет дерево оверлея и отправляет итоговые манифесты в kube-apiserver, а kubectl kustomize . выводит отрендеренный результат для проверки. Kustomize нативно интегрируется с Argo CD и Flux как движок рендеринга для GitOps: спецификация Application Argo CD устанавливает source.kustomize.images для переопределения тегов образов. В отличие от Helm, Kustomize не требует упаковки чартов или файлов values.yaml, что делает его более простым выбором для команд, желающих чистого YAML-управления ресурсами Kubernetes с минимальными накладными расходами на инструментарий.
Как это работает
Kustomize — слой package management / templating над сырыми манифестами Kubernetes. Helm оборачивает манифесты в reusable charts с values-based параметризацией; Kustomize накладывает патчи поверх базовых манифестов без templating-синтаксиса. Оба производят финальный YAML, который потребляет kubectl apply — они просто структурируют, как этот YAML собирается до отправки.
Когда применять
Выбирайте 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.