• Русский
  • Конфигурация Pruner

    Обзор

    Tekton Pruner управляет жизненным циклом ресурсов Tekton, автоматически очищая завершённые PipelineRuns и TaskRuns на основе настраиваемых политик, основанных на времени (TTL) и истории.

    Конфигурация

    Конфигурация Pruner хранится в ConfigMap с метками app.kubernetes.io/part-of: tekton-pruner и pruner.tekton.dev/config-type: <global|namespace>. Вы можете изменить этот ConfigMap для изменения поведения Pruner.

    По умолчанию Tekton Pruner отключён через ресурс TektonConfig. Вы можете изменить ресурс TektonConfig для настройки Pruner.

    По сути, Tekton Operator синхронизирует конфигурацию Pruner из ресурса TektonConfig в ресурс TektonPruner, и в конечном итоге отражает её в ConfigMap.

    WARNING

    Если вы разворачиваете Pruner через TektonConfig, вы должны настраивать Pruner через TektonConfig.

    Если вы измените конфигурацию только в ConfigMap, и она не будет синхронизирована с ресурсом TektonPruner, конфигурация может быть потеряна.

    При изменении конфигурации в TektonConfig или по другой причине, вызывающей реконсиляцию, конфигурация в ConfigMap будет перезаписана.

    Ниже приведён простой пример различных способов настройки Pruner.

    Конфигурация в ConfigMap

    WARNING

    ВАЖНО: Все ConfigMap для pruner ДОЛЖНЫ иметь следующие метки:

    labels:
      app.kubernetes.io/part-of: tekton-pruner
      pruner.tekton.dev/config-type: <global|namespace>

    Эти метки позволяют webhook pruner валидировать ConfigMap и контроллерам корректно их обрабатывать.

    Пример ConfigMap для Tekton Pruner:

    apiVersion: v1
    data:
      global-config: |
        enforcedConfigLevel: global
        ttlSecondsAfterFinished: 300
        successfulHistoryLimit: 3
        failedHistoryLimit: 3
        historyLimit: 100
    kind: ConfigMap
    metadata:
      labels:
        app.kubernetes.io/part-of: tekton-pruner
        operator.tekton.dev/operand-name: pruner
        pruner.tekton.dev/config-type: global
        pruner.tekton.dev/release: v0.3.4
      name: tekton-pruner-default-spec

    Объяснение полей YAML:

    ПараметрОписаниеПример
    ttlSecondsAfterFinishedВремя в секундах, в течение которого сохраняются завершённые запуски перед очисткой300 (5 минут)
    successfulHistoryLimitМаксимальное количество успешных запусков для сохранения3
    failedHistoryLimitМаксимальное количество неудачных запусков для сохранения3
    historyLimitМаксимальное количество запусков для сохранения по каждому статусу (применяется отдельно к успешным и неудачным)5
    enforcedConfigLevelУровень иерархии конфигурацииglobal или namespace

    enforcedConfigLevel определяет иерархию конфигурации:

    • global: Значения по умолчанию для всего кластера применяются ко всем namespace (переопределения на уровне namespace не допускаются)
    • namespace: Позволяет переопределять настройки на уровне namespace через ConfigMap в отдельных namespace

    Конфигурация в TektonConfig

    В ресурсе TektonConfig конфигурация Pruner примерно следующая:

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonConfig
    metadata:
      name: config
    spec:
      pruner:
        disabled: true  # Необходимо отключить pruner на основе job
      tektonpruner:
        disabled: false  # Включить pruner на основе событий
        global-config:
          enforcedConfigLevel: global  # Опции: global, namespace
          ttlSecondsAfterFinished: 3600  # Удалять запуски старше 1 часа (опционально)
          historyLimit: 100              # Хранить всего 100 запусков (опционально)
          successfulHistoryLimit: 50     # Хранить 50 успешных запусков (опционально)
          failedHistoryLimit: 20         # Хранить 20 неудачных запусков (опционально)
          namespaces:
            dev-namespace:
              historyLimit: 50
              ttlSecondsAfterFinished: 1800  # 30 минут для dev
            prod-namespace:
              successfulHistoryLimit: 200
              failedHistoryLimit: 50
              ttlSecondsAfterFinished: 86400  # 24 часа для prod
    WARNING

    Важно: Tekton Pruner — это pruner на основе событий (event-based), и он по умолчанию отключён. Чтобы включить pruner на основе событий, существующий pruner на основе job ДОЛЖЕН быть отключён.

    • Оба pruner-а (job-based и event-based) не могут быть включены одновременно
    • Pruner на основе событий реагирует на события ресурсов в реальном времени, обеспечивая более эффективную очистку

    Если вы хотите использовать pruner на основе job, пожалуйста, обратитесь к разделу Регулярная очистка ресурсов TaskRun и PipelineRun.

    Объяснение полей YAML:

    • spec.pruner: содержит конфигурацию для pruner на основе job.
      • disabled: отключить pruner на основе job.
    • spec.tektonpruner: содержит конфигурацию для pruner на основе событий.
      • disabled: отключить pruner на основе событий.
      • enforcedConfigLevel: определяет иерархию конфигурации. Подробнее см. в разделе Namespace Configuration.
        • global: Значения по умолчанию для всего кластера применяются ко всем namespace (переопределения на уровне namespace не допускаются).
        • namespace: Позволяет переопределять настройки на уровне namespace через ConfigMap в отдельных namespace.
      • ttlSecondsAfterFinished: Время в секундах, в течение которого сохраняются завершённые запуски перед очисткой. Подробнее см. в разделе Time-based Pruning (TTL).
      • historyLimit: Максимальное количество запусков для сохранения по каждому статусу (применяется отдельно к успешным и неудачным запускам). Подробнее см. в разделе History-based Pruning.
      • successfulHistoryLimit: Максимальное количество успешных запусков для сохранения. Подробнее см. в разделе History-based Pruning.
      • failedHistoryLimit: Максимальное количество неудачных запусков для сохранения. Подробнее см. в разделе History-based Pruning.
      • namespaces: Настройка различных политик очистки по умолчанию для конкретных namespace. Подробнее см. в разделе Namespace Configuration.
      • options: Опции для контроллера Tekton Pruner. Более подробная поддержка описана в разделе Additional fields as options.

    References