• Русский
  • Конфигурация 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 изменяется или по какой-либо другой причине запускается reconciliation, конфигурация в ConfigMap будет перезаписана.

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

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

    WARNING

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

    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Время в секундах, в течение которого завершенные runs сохраняются перед очисткой300 (5 мин)
    successfulHistoryLimitМаксимальное число успешных runs, которые следует сохранять3
    failedHistoryLimitМаксимальное число неудачных runs, которые следует сохранять3
    historyLimitМаксимальное число runs, которое следует сохранять для каждого статуса (применяется независимо к успешным и неудачным runs)5
    enforcedConfigLevelУровень иерархии конфигурацииglobal или namespace

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

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

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

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

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonConfig
    metadata:
      name: config
    spec:
      pruner:
        disabled: true  # Must disable job-based pruner
      tektonpruner:
        disabled: false  # Enable event-based pruner
        global-config:
          enforcedConfigLevel: global  # Options: global, namespace
          ttlSecondsAfterFinished: 3600  # Delete runs older than 1 hour (optional)
          historyLimit: 100              # Keep only 100 runs total (optional)
          successfulHistoryLimit: 50     # Keep only 50 successful runs (optional)
          failedHistoryLimit: 20          # Keep only 20 failed runs (optional)
          namespaces:
            dev-namespace:
              historyLimit: 50
              ttlSecondsAfterFinished: 1800  # 30 minutes for dev
            prod-namespace:
              successfulHistoryLimit: 200
              failedHistoryLimit: 50
              ttlSecondsAfterFinished: 86400  # 24 hours for prod
    WARNING

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

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

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

    Пояснение полей YAML:

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

    Ссылки