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