Конфигурация 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.
Если вы разворачиваете Pruner через TektonConfig, вы должны настраивать Pruner через TektonConfig.
Если вы измените конфигурацию только в ConfigMap, и она не будет синхронизирована с ресурсом TektonPruner, конфигурация может быть потеряна.
При изменении конфигурации в TektonConfig или по другой причине, вызывающей реконсиляцию, конфигурация в ConfigMap будет перезаписана.
Ниже приведён простой пример различных способов настройки Pruner.
Конфигурация в ConfigMap
ВАЖНО: Все ConfigMap для pruner ДОЛЖНЫ иметь следующие метки:
Эти метки позволяют webhook pruner валидировать ConfigMap и контроллерам корректно их обрабатывать.
Пример ConfigMap для Tekton Pruner:
Объяснение полей YAML:
enforcedConfigLevel определяет иерархию конфигурации:
global: Значения по умолчанию для всего кластера применяются ко всем namespace (переопределения на уровне namespace не допускаются)namespace: Позволяет переопределять настройки на уровне namespace через ConfigMap в отдельных namespace
Конфигурация в TektonConfig
В ресурсе TektonConfig конфигурация Pruner примерно следующая:
Важно: Tekton Pruner — это pruner на основе событий (event-based), и он по умолчанию отключён. Чтобы включить pruner на основе событий, существующий pruner на основе job ДОЛЖЕН быть отключён.
- Оба pruner-а (
job-basedиevent-based) не могут быть включены одновременно - Pruner на основе событий реагирует на события ресурсов в реальном времени, обеспечивая более эффективную очистку
Если вы хотите использовать pruner на основе job, пожалуйста, обратитесь к разделу Регулярная очистка ресурсов TaskRun и PipelineRun.
Объяснение полей YAML:
spec.pruner: содержит конфигурацию для pruner на основе job.disabled: отключить pruner на основе job.
spec.tektonpruner: содержит конфигурацию для pruner на основе событий.disabled: отключить pruner на основе событий.enforcedConfigLevel: определяет иерархию конфигурации. Подробнее см. в разделе Namespace Configuration.global: Значения по умолчанию для всего кластера применяются ко всем namespace (переопределения на уровне namespace не допускаются).namespace: Позволяет переопределять настройки на уровне namespace через ConfigMap в отдельных namespace.
ttlSecondsAfterFinished: Время в секундах, в течение которого сохраняются завершённые запуски перед очисткой. Подробнее см. в разделе Time-based Pruning (TTL).historyLimit: Максимальное количество запусков для сохранения по каждому статусу (применяется отдельно к успешным и неудачным запускам). Подробнее см. в разделе History-based Pruning.successfulHistoryLimit: Максимальное количество успешных запусков для сохранения. Подробнее см. в разделе History-based Pruning.failedHistoryLimit: Максимальное количество неудачных запусков для сохранения. Подробнее см. в разделе History-based Pruning.namespaces: Настройка различных политик очистки по умолчанию для конкретных namespace. Подробнее см. в разделе Namespace Configuration.options: Опции для контроллера Tekton Pruner. Более подробная поддержка описана в разделе Additional fields as options.