• Русский
  • Kustomize

    Введение

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

    Основные концепции Kustomize

    • Base: Базовые конфигурации, содержащие общие определения ресурсов Kubernetes.
    • Overlay: Слои кастомизации, которые изменяют базовые конфигурации.
    • 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: Карта меток, добавляемых ко всем ресурсам.
    • 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