Регулярная очистка ресурсов TaskRun и PipelineRun
Overview
Автоматическая очистка ресурсов TaskRun и PipelineRun в Tekton с помощью функции Pruner. Pruner работает в фоновом режиме, выполняя команду tkn для очистки ресурсов.
Use Cases
- Регулярная очистка ресурсов TaskRun
- Регулярная очистка ресурсов PipelineRun
- Настройка различных стратегий очистки в зависимости от namespace
Prerequisites
- Должен быть установлен компонент Tekton Operator
- В среде должен быть автоматически создан ресурс TektonConfig
Steps
Шаг 1
Отредактируйте ресурс TektonConfig
Шаг 2
Измените конфигурацию spec.pruner, как показано ниже:
Ключевые описания конфигурации:
disabled: При значенииtrueотключает функциональность pruner (значение по умолчанию:false)schedule: Расписание выполнения задачи очистки в формате cronstartingDeadlineSeconds: Опциональная настройка дедлайна для запуска задачи (в секундах). Если задача пропускает запланированное время и превышает этот интервал, считается неудачнойresources: Поддерживаемые типы ресурсов для очистки, включаяtaskrunиpipelinerunkeep: Максимальное количество ресурсов, которое сохраняется при очисткеkeep-since: Сохранять ресурсы в течение указанного времени (в минутах)prune-per-resource: При значенииtrue(по умолчаниюfalse) применяет настройкуkeepотдельно для каждого ресурса- Например: если в namespace
ns-1есть два Pipeline с именамиpipeline-1иpipeline-2, будут выполнены команды: - Примечание: при использовании
keep-sinceвключениеprune-per-resource=trueне имеет практического смысла, так какkeep-sinceоснован на временном ограничении для ресурсов, а не на их количестве.
- Например: если в namespace
Если 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 для данного namespaceoperator.tekton.dev/prune.schedule: Задает расписание очистки для данного namespaceoperator.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
Пример:
::: note Если глобальная конфигурация не задана, будут использованы следующие значения по умолчанию:
resources: pipelinerunkeep: 100:::
Results
После завершения настройки система будет автоматически очищать просроченные ресурсы TaskRun и PipelineRun согласно заданному расписанию.