Kustomize
Введение
Kustomize — это нативный для Kubernetes инструмент управления конфигурациями, который позволяет пользователям настраивать определения ресурсов Kubernetes (YAML-файлы) с помощью оверлеев и композиции без прямого изменения исходных файлов.
Основные концепции Kustomize
- Base: Базовые конфигурации, содержащие общие определения ресурсов Kubernetes.
- Overlay: Слои кастомизации, которые изменяют базовые конфигурации.
- kustomization.yaml: Файл конфигурации, определяющий, как ресурсы компонуются и модифицируются.
Интеграция Argo CD с Kustomize улучшает практики GitOps, обеспечивая декларативную непрерывную доставку. Пример:
Если файл kustomization.yaml существует по адресу repoURL и в каталоге path, Argo CD сгенерирует манифесты с помощью Kustomize.
Kustomize поддерживает следующие параметры конфигурации:
namePrefix: Префикс, добавляемый к именам ресурсов, сгенерированных Kustomize.nameSuffix: Суффикс, добавляемый к именам ресурсов, сгенерированных Kustomize.images: Список переопределений образов Kustomize.replicas: Список переопределений количества реплик Kustomize.commonLabels: Карта меток, добавляемых ко всем ресурсам.labelWithoutSelector: Булево значение, определяющее, должны ли общие метки применяться к селекторам и шаблонам ресурсов.forceCommonLabels: Булево значение, позволяющее переопределять существующие метки.commonAnnotations: Карта аннотаций, добавляемых ко всем ресурсам.namespace: Пространство имён Kubernetes для ресурсов.forceCommonAnnotations: Булево значение, позволяющее переопределять существующие аннотации.commonAnnotationsEnvsubst: Булево значение, включающее подстановку переменных окружения в значениях аннотаций.patches: Список патчей Kustomize, поддерживающих встроенные обновления.components: Список компонентов Kustomize.
Для использования Kustomize с оверлеями укажите путь к каталогу оверлея.
Преимущества
-
Декларативная конфигурация: Использует YAML-файлы (через kustomization.yaml) для определения композиции и изменений ресурсов.
-
Без шаблонов: Настраивает конфигурации с помощью патчей и оверлеев без использования шаблонных движков.
-
Нативная интеграция с Kubernetes: Kustomize встроен в kubectl и не требует дополнительных инструментов.
Сценарии использования
-
Распространение для нескольких окружений: Позволяет создавать конфигурации, специфичные для окружений (например, приложений, кластеров) с помощью Base и Overlay.
-
Повторное использование конфигураций: Идеально подходит для повторного использования базовых конфигураций в разных проектах.
-
Постепенная доставка: Позволяет постепенно изменять конфигурации ресурсов с помощью патчей.
References
For more detailed information, please refer to: Kustomize