• Русский
  • Kustomize

    Введение

    Kustomize — это инструмент управления конфигурацией, нативный для Kubernetes, который позволяет пользователям настраивать определения ресурсов Kubernetes (YAML-файлы) с помощью overlays и композиции, не изменяя напрямую исходные файлы.

    Основные понятия Kustomize

    • Base: Базовые конфигурации, содержащие общие определения ресурсов Kubernetes.
    • Overlay: Слои настройки, которые изменяют Base-конфигурации.
    • kustomization.yaml: Файл конфигурации, определяющий, как ресурсы составляются и изменяются.

    Интеграция Argo CD с Kustomize усиливает практики GitOps, обеспечивая декларативную непрерывную доставку. Пример:

    apiVersion: argoproj.io/v1alpha1
    kind: Application
    metadata:
      name: kustomize-example
    spec:
      project: default
      source:
        path: examples/helloWorld
        repoURL: 'https://github.com/kubernetes-sigs/kustomize'
        targetRevision: HEAD
      destination:
        namespace: default
        server: 'https://kubernetes.default.svc'

    Если файл 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