HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-19
1 <p>DevOps-инженерам и разработчикам, работающим с Kubernetes, рано или поздно приходится сталкиваться с задачей управления конфигурациями. Чем масштабнее проект - тем важнее иметь инструмент, который поможет поддерживать порядок в манифестах. Именно для этого появился<strong>Kustomize</strong>- простой, но мощный способ кастомизировать Kubernetes-ресурсы без шаблонов и копипасты.</p>
1 <p>DevOps-инженерам и разработчикам, работающим с Kubernetes, рано или поздно приходится сталкиваться с задачей управления конфигурациями. Чем масштабнее проект - тем важнее иметь инструмент, который поможет поддерживать порядок в манифестах. Именно для этого появился<strong>Kustomize</strong>- простой, но мощный способ кастомизировать Kubernetes-ресурсы без шаблонов и копипасты.</p>
2 <p>Работать с Kubernetes YAML-файлами вручную - всё равно что собирать мебель без инструкции. А если у вас не одна среда, а три (dev, stage, prod)? Всё усложняется. Kustomize предлагает оптимальное решение: вы создаёте<strong>базовые конфигурации</strong><strong>(bases)</strong>, а затем поверх них накладываете<strong>оверлеи (overlays)</strong>- изменения под конкретные окружения.</p>
2 <p>Работать с Kubernetes YAML-файлами вручную - всё равно что собирать мебель без инструкции. А если у вас не одна среда, а три (dev, stage, prod)? Всё усложняется. Kustomize предлагает оптимальное решение: вы создаёте<strong>базовые конфигурации</strong><strong>(bases)</strong>, а затем поверх них накладываете<strong>оверлеи (overlays)</strong>- изменения под конкретные окружения.</p>
3 <p>Система работает напрямую с YAML, без сторонних DSL или шаблонных языков, вроде Helm. Это делает Kustomize удобным для понимания, а его структуру - предсказуемой. С ним не нужно изобретать велосипеды: всё решается на уровне простых файлов и каталогов.</p>
3 <p>Система работает напрямую с YAML, без сторонних DSL или шаблонных языков, вроде Helm. Это делает Kustomize удобным для понимания, а его структуру - предсказуемой. С ним не нужно изобретать велосипеды: всё решается на уровне простых файлов и каталогов.</p>
4 <p>Kustomize легко встраивается в стандартный DevOps-процесс. Можно запускать kustomize build или kubectl kustomize, чтобы собрать итоговые манифесты. Он совместим с GitOps-подходом, хорошо дружит с Argo CD, Flux и другими CI/CD-инструментами.</p>
4 <p>Kustomize легко встраивается в стандартный DevOps-процесс. Можно запускать kustomize build или kubectl kustomize, чтобы собрать итоговые манифесты. Он совместим с GitOps-подходом, хорошо дружит с Argo CD, Flux и другими CI/CD-инструментами.</p>
5 <p>Сегодня Kustomize входит в состав kubectl, что делает его доступным из коробки. Поэтому если вы ищете способ организовать конфигурации без боли и хардкода - это ваш шанс.</p>
5 <p>Сегодня Kustomize входит в состав kubectl, что делает его доступным из коробки. Поэтому если вы ищете способ организовать конфигурации без боли и хардкода - это ваш шанс.</p>
6 <p>Дальше расскажем, как всё устроено под капотом: что такое базы, оверлеи и патчи, как их настроить и использовать на практике.</p>
6 <p>Дальше расскажем, как всё устроено под капотом: что такое базы, оверлеи и патчи, как их настроить и использовать на практике.</p>
7 <p><strong>Проверьте свои знания по Kubernetes</strong>-<a>пройдите тест</a>!</p>
7 <p><strong>Проверьте свои знания по Kubernetes</strong>-<a>пройдите тест</a>!</p>
8 <p><strong>Kustomize</strong>- это инструмент для декларативной кастомизации Kubernetes-манифестов. Он позволяет не редактировать исходные YAML-файлы, а наслаивать поверх них изменения с помощью патчей и параметров, организованных в структуру директорий. Его главная цель - упростить управление конфигурациями без шаблонов и повторения кода.</p>
8 <p><strong>Kustomize</strong>- это инструмент для декларативной кастомизации Kubernetes-манифестов. Он позволяет не редактировать исходные YAML-файлы, а наслаивать поверх них изменения с помощью патчей и параметров, организованных в структуру директорий. Его главная цель - упростить управление конфигурациями без шаблонов и повторения кода.</p>
9 <p>Kustomize работает по принципу<strong>баз и оверлеев</strong>. У вас есть базовая конфигурация, которая описывает универсальные настройки, и есть оверлеи - надстройки для разных окружений. Вместо того чтобы копировать файлы, вы описываете различия, и инструмент собирает итоговый манифест. Это снижает дублирование, улучшает читаемость и масштабируемость.</p>
9 <p>Kustomize работает по принципу<strong>баз и оверлеев</strong>. У вас есть базовая конфигурация, которая описывает универсальные настройки, и есть оверлеи - надстройки для разных окружений. Вместо того чтобы копировать файлы, вы описываете различия, и инструмент собирает итоговый манифест. Это снижает дублирование, улучшает читаемость и масштабируемость.</p>
10 <p>Пример базового kustomization.yaml:</p>
10 <p>Пример базового kustomization.yaml:</p>
11 <p>resources: - deployment.yaml - service.yaml</p>
11 <p>resources: - deployment.yaml - service.yaml</p>
12 <p><strong>А вот пример простого оверлея:</strong></p>
12 <p><strong>А вот пример простого оверлея:</strong></p>
13 <p>bases:</p>
13 <p>bases:</p>
14 <p>- ../../basepatchesStrategicMerge: - patch-deployment.yamlnamePrefix: dev-</p>
14 <p>- ../../basepatchesStrategicMerge: - patch-deployment.yamlnamePrefix: dev-</p>
15 <p>Именно это и делает kustomize build мощным. Вы запускаете команду, и получаете итоговые манифесты с нужными вам изменениями:</p>
15 <p>Именно это и делает kustomize build мощным. Вы запускаете команду, и получаете итоговые манифесты с нужными вам изменениями:</p>
16 <p>kustomize build overlays/dev</p>
16 <p>kustomize build overlays/dev</p>
17 <p>Или через kubectl:</p>
17 <p>Или через kubectl:</p>
18 <p>kubectl kustomize overlays/dev | kubectl apply -f -</p>
18 <p>kubectl kustomize overlays/dev | kubectl apply -f -</p>
19 <p>В отличие от Helm, где используется шаблонизация, Kustomize не требует шаблонов. Все изменения происходят в виде декларативных YAML-файлов. Это повышает прозрачность и снижает риск ошибок при обновлениях.</p>
19 <p>В отличие от Helm, где используется шаблонизация, Kustomize не требует шаблонов. Все изменения происходят в виде декларативных YAML-файлов. Это повышает прозрачность и снижает риск ошибок при обновлениях.</p>
20 <p><strong>Под капотом Kustomize работает с различными типами патчей:</strong></p>
20 <p><strong>Под капотом Kustomize работает с различными типами патчей:</strong></p>
21 <p>Strategic merge patch - удобен для модификации ресурсов, таких как Deployment.JSON6902 patch - пригодится, если вам нужно точно изменить структуру.</p>
21 <p>Strategic merge patch - удобен для модификации ресурсов, таких как Deployment.JSON6902 patch - пригодится, если вам нужно точно изменить структуру.</p>
22 <p>Replacement transformers - для переиспользования значений между файлами.Kustomize также поддерживает генерацию ConfigMap и Secret на лету:configMapGenerator:</p>
22 <p>Replacement transformers - для переиспользования значений между файлами.Kustomize также поддерживает генерацию ConfigMap и Secret на лету:configMapGenerator:</p>
23 <p>- name: app-config literals: - ENV=production</p>
23 <p>- name: app-config literals: - ENV=production</p>
24 <p>Эта гибкость делает инструмент полезным как на этапе разработки, так и в CI/CD пайплайнах. Его легко подключить к GitOps-решениям - например, Argo CD умеет "читать" kustomize-директории без дополнительной настройки.</p>
24 <p>Эта гибкость делает инструмент полезным как на этапе разработки, так и в CI/CD пайплайнах. Его легко подключить к GitOps-решениям - например, Argo CD умеет "читать" kustomize-директории без дополнительной настройки.</p>