Короткий ответ
Kustomize — встроенный в kubectl инструмент для декларативной настройки "чистых" Kubernetes-манифестов без шаблонизации: есть базовый набор манифестов (base) и оверлеи (overlays/dev, overlays/prod), которые ссылаются на base и применяют к нему патчи без копирования и редактирования всего YAML.
Как это работает подробнее
каждая папка содержит файл kustomization.yaml, перечисляющий входные ресурсы (resources:) и патчи/генераторы; оверлей указывает base как один из resources и добавляет свои патчи, а команда kubectl kustomize (или kustomize build) рекурсивно собирает финальный YAML, объединяя base и патчи оверлея.
Пример кода
playbook.yml
# base/kustomization.yaml
resources:
- deployment.yaml
# overlays/prod/kustomization.yaml
resources:
- ../../base
patches:
- target:
kind: Deployment
patch: |-
- op: replace
path: /spec/replicas
value: 5Что использовать на практике
- Практика. Kustomize удобен, когда манифесты в целом одинаковы, а различия между окружениями минимальны (реплики, лимиты ресурсов, namespace, суффиксы имён); в отличие от Helm, здесь нет шаблонного языка и условной логики — только декларативные патчи поверх валидного YAML.
Подводные камни
- Ошибка. пытаться засунуть сложную условную логику в Kustomize (для этого больше подходит Helm); забывать, что оверлей не "наследует" base автоматически без явного указания его в
resources:своего kustomization.yaml.