• Русский
  • Регулярная очистка ресурсов TaskRun и PipelineRun

    Overview

    Автоматическая очистка ресурсов TaskRun и PipelineRun в Tekton с помощью функции Pruner. Pruner работает в фоновом режиме, выполняя команду tkn для очистки ресурсов.

    Use Cases

    • Регулярная очистка ресурсов TaskRun
    • Регулярная очистка ресурсов PipelineRun
    • Настройка различных стратегий очистки в зависимости от namespace

    Prerequisites

    • Должен быть установлен компонент Tekton Operator
    • В среде должен быть автоматически создан ресурс TektonConfig

    Steps

    Шаг 1

    Отредактируйте ресурс TektonConfig

    $ kubectl edit tektonconfigs.operator.tekton.dev config

    Шаг 2

    Измените конфигурацию spec.pruner, как показано ниже:

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonConfig
    metadata:
      name: config
    spec:
      pruner:
        # Отключить функциональность pruner, по умолчанию false
        disabled: false
        # Cron-выражение для расписания очистки
        schedule: "0 8 * * *"
        # Опционально: дедлайн для запуска задачи (в секундах)
        startingDeadlineSeconds: 100
        # Типы ресурсов для очистки
        resources:
          - taskrun
          - pipelinerun
        # Количество ресурсов для сохранения
        keep: 3
        # Применять стратегии очистки отдельно для каждого типа ресурса
        prune-per-resource: true
        # Сохранять ресурсы в течение указанного времени (в минутах)
        # keep-since: 1440
        # Примечание: можно использовать только один из параметров keep и keep-since

    Ключевые описания конфигурации:

    • disabled: При значении true отключает функциональность pruner (значение по умолчанию: false)
    • schedule: Расписание выполнения задачи очистки в формате cron
    • startingDeadlineSeconds: Опциональная настройка дедлайна для запуска задачи (в секундах). Если задача пропускает запланированное время и превышает этот интервал, считается неудачной
    • resources: Поддерживаемые типы ресурсов для очистки, включая taskrun и pipelinerun
    • keep: Максимальное количество ресурсов, которое сохраняется при очистке
    • keep-since: Сохранять ресурсы в течение указанного времени (в минутах)
    • prune-per-resource: При значении true (по умолчанию false) применяет настройку keep отдельно для каждого ресурса
      • Например: если в namespace ns-1 есть два Pipeline с именами pipeline-1 и pipeline-2, будут выполнены команды:
        tkn pipelinerun delete --pipeline=my-pipeline-1 --keep=3 --namespace=ns-1
        tkn pipelinerun delete --pipeline=my-pipeline-2 --keep=3 --namespace=ns-1
      • Примечание: при использовании keep-since включение prune-per-resource=true не имеет практического смысла, так как keep-since основан на временном ограничении для ресурсов, а не на их количестве.
    Note

    Если disabled: false и schedule пустое, глобальная задача pruner будет отключена. Однако, если в namespace присутствует аннотация operator.tekton.dev/prune.schedule с заданным значением, будет создана задача pruner для этого namespace.

    Шаг 3

    Настройка стратегий очистки через аннотации namespace (опционально)

    По умолчанию задача pruner использует глобальную конфигурацию (spec.pruner), но пользователи могут настроить конфигурацию pruner для конкретных namespace с помощью следующих аннотаций. Если какие-либо аннотации отсутствуют или имеют неверные значения, будут использованы глобальные значения конфигурации или namespace будет пропущен.

    Поддерживаемые аннотации:

    • operator.tekton.dev/prune.skip: При значении true пропускает задачу pruner для данного namespace
    • operator.tekton.dev/prune.schedule: Задает расписание очистки для данного namespace
    • operator.tekton.dev/prune.keep: Задает максимальное количество ресурсов для сохранения
    • operator.tekton.dev/prune.keep-since: Задает период хранения ресурсов в течение указанного времени (в минутах)
    • operator.tekton.dev/prune.prune-per-resource: Задает, применять ли стратегию очистки отдельно для каждого ресурса
    • operator.tekton.dev/prune.resources: Задает типы ресурсов для очистки, может быть taskrun и/или pipelinerun, несколько значений разделяются запятыми
    • operator.tekton.dev/prune.strategy: Задает стратегию очистки, с опциональными значениями keep или keep-since

    Пример:

    $ kubectl annotate namespace default \
        operator.tekton.dev/prune.schedule="0 1 * * *" \
        operator.tekton.dev/prune.keep="5" \
        operator.tekton.dev/prune.resources="taskrun,pipelinerun"

    ::: note Если глобальная конфигурация не задана, будут использованы следующие значения по умолчанию:

    • resources: pipelinerun
    • keep: 100 :::

    Results

    После завершения настройки система будет автоматически очищать просроченные ресурсы TaskRun и PipelineRun согласно заданному расписанию.

    Reference