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

    Обзор

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

    Сценарии использования

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

    Предварительные требования

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

    Шаги

    Шаг 1

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

    $ kubectl edit tektonconfigs.operator.tekton.dev config

    Шаг 2

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

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonConfig
    metadata:
      name: config
    spec:
      pruner:
        # Whether to disable the pruner functionality, defaults to false
        disabled: false
        # Cron expression for scheduled cleanup
        schedule: "0 8 * * *"
        # Optional: Deadline for task start (in seconds)
        startingDeadlineSeconds: 100
        # Types of resources to clean up
        resources:
          - taskrun
          - pipelinerun
        # Number of resources to retain
        keep: 3
        # Apply cleanup strategies separately for each resource type
        prune-per-resource: true
        # Retain resources within the specified time (in minutes)
        # keep-since: 1440
        # Note: only one of keep and keep-since can be used

    Описание ключевых параметров конфигурации:

    • disabled: при значении true отключает функцию pruner (значение по умолчанию: false)
    • schedule: расписание выполнения задачи очистки в формате cron expression
    • 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 со значением, для этого namespace будет создана задача pruner.

    Шаг 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 :::

    Результат

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

    Справка