Kustomize
Введение
Kustomize — это нативный для Kubernetes инструмент управления конфигурацией, который позволяет пользователям настраивать определения ресурсов Kubernetes (файлы YAML) с помощью overlays и композиции без непосредственного изменения исходных файлов.
Основные понятия 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: Map меток, добавляемых ко всем ресурсам.labelWithoutSelector: Boolean, определяющий, должны ли общие метки применяться к селекторам и шаблонам ресурсов.forceCommonLabels: Boolean, позволяющий переопределять существующие метки.commonAnnotations: Map аннотаций, добавляемых ко всем ресурсам.namespace: namespace ресурса Kubernetes.forceCommonAnnotations: Boolean, позволяющий переопределять существующие аннотации.commonAnnotationsEnvsubst: Boolean, включающий подстановку переменных окружения в значения аннотаций.patches: Список патчей Kustomize, поддерживающих встроенные обновления.components: Список компонентов Kustomize.
Чтобы использовать Kustomize с overlays, укажите в path каталог overlay.
Преимущества
-
Декларативная конфигурация: использует файлы YAML (через kustomization.yaml) для определения композиции и изменений ресурсов.
-
Без шаблонов: настраивает конфигурации с помощью патчей и overlays без использования шаблонизаторов.
-
Нативная интеграция с Kubernetes: Kustomize встроен в kubectl и не требует дополнительных инструментов.
Варианты использования
-
Распространение по нескольким окружениям: получение конфигураций, специфичных для окружения (например, приложения, кластеры), с помощью Base и Overlay.
-
Повторное использование конфигураций: идеально подходит для повторного использования базовых конфигураций в разных проектах.
-
Постепенная доставка: поэтапная настройка конфигураций ресурсов с помощью патчей.
Ссылки
Для получения более подробной информации см. Kustomize