Pruner 配置
概述
Tekton Pruner 通过基于可配置的时间(TTL)和历史记录策略,自动清理已完成的 PipelineRuns 和 TaskRuns,从而管理 Tekton 资源的生命周期。
配置
Pruner 配置存储在一个 ConfigMap 中,该 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 中。
如果你通过 TektonConfig 部署 Pruner,则必须通过 TektonConfig 配置 Pruner。
如果你只修改 ConfigMap 中的配置,而没有同步到 TektonPruner 资源,配置可能会丢失。
当 TektonConfig 中的配置发生变化,或者其他原因触发重新协调时,ConfigMap 中的配置将被覆盖。
下面是配置 Pruner 的几种不同方式的简单演示。
在 ConfigMap 中配置
CRITICAL: 所有 pruner ConfigMap MUST 都具有以下标签:
这些标签使 pruner webhook 能够验证 ConfigMap,并使 controller 能够正确处理它们。
以下是 Tekton Pruner ConfigMap 的示例:
YAML 字段说明:
enforcedConfigLevel 决定配置层级:
global:集群级默认值适用于所有 namespace(不允许 namespace 覆盖)namespace:允许通过各个 namespace 中的 ConfigMap 进行 namespace 级覆盖
在 TektonConfig 中配置
在 TektonConfig 资源中,Pruner 的配置大致如下:
重要:Tekton Pruner 是一种 event-based pruner,默认处于禁用状态。要启用 event-based pruner,现有的 job-based pruner MUST 被禁用。
- 不能同时启用两个 pruner(
job-based和event-based) event-basedpruner 会实时响应资源事件,提供更高效的清理
如果你想使用 job-based pruner,请参阅 TaskRun 和 PipelineRun 资源的定期清理。
YAML 字段说明:
spec.pruner:此部分包含job-basedpruner 的配置。disabled:是否禁用job-basedpruner。
spec.tektonpruner:此部分包含event-basedpruner 的配置。disabled:是否禁用event-basedpruner。enforcedConfigLevel:决定配置层级。更多详情,请参阅 Namespace 配置。global:集群级默认值适用于所有 namespace(不允许 namespace 覆盖)。namespace:允许通过各个 namespace 中的 ConfigMap 进行 namespace 级覆盖。
ttlSecondsAfterFinished:在 pruning 之前保留已完成运行的时间(秒)。更多详情,请参阅 基于时间的 Pruning (TTL)。historyLimit:每种状态要保留的运行最大数量(对成功和失败运行分别独立生效)。更多详情,请参阅 基于历史记录的 Pruning。successfulHistoryLimit:要保留的成功运行最大数量。更多详情,请参阅 基于历史记录的 Pruning。failedHistoryLimit:要保留的失败运行最大数量。更多详情,请参阅 基于历史记录的 Pruning。namespaces:为特定 namespace 配置不同的默认 pruning 策略。更多详情,请参阅 Namespace 配置。options:Tekton Pruner controller 的选项。更详细的支持信息可在 Additional fields as options 中找到。