• Русский
  • History-based Pruning

    Сохраняйте фиксированное количество запусков в зависимости от их статуса, независимо от возраста.

    Как это работает

    Ограничения по истории и TTL могут применяться одновременно. Запуск подлежит удалению, если он превышает ограничения по истории или срок его жизни (TTL) истек. Это означает, что побеждает самое короткое время хранения.

    Параметры конфигурации

    ПараметрОписание
    successfulHistoryLimitСохранять N последних успешных запусков
    failedHistoryLimitСохранять N последних неудачных запусков
    historyLimitСохранять N запусков каждого статуса (если конкретные лимиты не заданы)

    Базовая конфигурация

    Отдельные лимиты по статусу:

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonConfig
    metadata:
      name: config
    spec:
      pruner:
        disabled: true  # Необходимо отключить pruner на основе job
      tektonpruner:
        disabled: false  # Включить pruner на основе событий
        global-config:
          successfulHistoryLimit: 5    # Сохранять последние 5 успешных
          failedHistoryLimit: 10       # Сохранять последние 10 неудачных (для отладки)

    Одинаковый лимит для обоих:

    spec:
      tektonpruner:
        global-config:
          historyLimit: 5  # Сохранять последние 5 успешных И последние 5 неудачных

    Ограничения для конкретных окружений

    spec:
      tektonpruner:
        global-config:
          enforcedConfigLevel: namespace
          namespaces:
            dev:
              successfulHistoryLimit: 3
              failedHistoryLimit: 5     # Больше неудачных запусков для отладки
            staging:
              successfulHistoryLimit: 5
              failedHistoryLimit: 5
            prod:
              successfulHistoryLimit: 10
              failedHistoryLimit: 20

    Ограничения для конкретных pipeline

    Используйте селекторы в ConfigMap пространства имён для ограничений, специфичных для pipeline:

    WARNING

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

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: tekton-pruner-namespace-spec
      namespace: my-app
      labels:
        app.kubernetes.io/part-of: tekton-pruner
        pruner.tekton.dev/config-type: namespace
    data:
      ns-config: |
        successfulHistoryLimit: 3
        pipelineRuns:
          - selector:
              matchLabels:
                critical: "true"
            successfulHistoryLimit: 20
            failedHistoryLimit: 30
          - selector:
              matchLabels:
                pipeline-type: test
            successfulHistoryLimit: 3
            failedHistoryLimit: 5

    Взаимодействие с TTL

    Ограничения по истории не отменяют TTL:

    data:
      ns-config: |
        ttlSecondsAfterFinished: 300
        successfulHistoryLimit: 5
        failedHistoryLimit: 10

    Результат: Запуски старше 5 минут удаляются, даже если они входят в последние 5 успешных или последние 10 неудачных. Ограничения по истории всё ещё могут удалить более старые запуски раньше, если их количество превышает заданные лимиты.

    Рекомендации по использованию

    1. Храните больше неудачных запусков, чем успешных, для отладки
    2. Критичные pipeline: Повышенные лимиты для аудита
    3. Разработка: Низкие лимиты (3-5) для быстрой итерации
    4. Продакшн: Высокие лимиты (10-20) для анализа
    5. Мониторьте хранилище: Регулируйте лимиты в зависимости от ёмкости кластера

    См. также