• Русский
  • Kustomize

    Введение

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

    Основные понятия 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: 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