Pruner 配置
概述
Tekton Pruner 会根据可配置的基于时间(TTL)和基于历史记录的策略,自动清理已完成的 PipelineRun 和 TaskRun,从而管理 Tekton 资源的生命周期。
配置
Pruner 配置存储在一个带有 app.kubernetes.io/part-of: tekton-pruner 和 pruner.tekton.dev/config-type: <global|namespace> 标签的 ConfigMap 中。你可以修改此 ConfigMap 来更改 Pruner 的行为。
默认情况下,Tekton Pruner 由 TektonConfig 资源禁用。你可以修改 TektonConfig 资源来配置 Pruner。
本质上,Tekton Operator 会将 TektonConfig 资源中的 Pruner 配置同步到 TektonPruner 资源中,最终反映到 ConfigMap 中。
如果你通过 TektonConfig 部署 Pruner,就必须通过 TektonConfig 配置 Pruner。
如果你只修改 ConfigMap 中的配置,而它没有同步到 TektonPruner 资源,配置可能会丢失。
当 TektonConfig 中的配置发生变化,或因其他原因触发协调时,ConfigMap 中的配置将被覆盖。
下面演示配置 Pruner 的几种不同方式。
在 ConfigMap 中配置
CRITICAL:所有 pruner ConfigMap 必须包含以下标签:
这些标签使 pruner webhook 能够验证 ConfigMap,并使控制器能够正确处理它们。
以下是 Tekton Pruner ConfigMap 的示例:
YAML 字段说明:
enforcedConfigLevel 用于确定配置层级:
global:集群范围的默认值适用于所有命名空间(不允许命名空间覆盖)namespace:允许通过各个命名空间中的 ConfigMap 进行命名空间级覆盖
在 TektonConfig 中配置
在 TektonConfig 资源中,Pruner 的配置大致如下:
重要:Tekton Pruner 是一种 event-based pruner,默认处于禁用状态。要启用 event-based pruner,必须先禁用现有的 job-based pruner。
- 不能同时启用两个 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 Configuration。global:集群范围的默认值适用于所有命名空间(不允许命名空间覆盖)。namespace:允许通过各个命名空间中的 ConfigMap 进行命名空间级覆盖。
ttlSecondsAfterFinished:在清理前保留已完成运行的时间(秒)。更多详情请参考 Time-based Pruning (TTL)。historyLimit:每种状态要保留的运行最大数量(分别适用于成功和失败运行)。更多详情请参考 History-based Pruning。successfulHistoryLimit:要保留的成功运行最大数量。更多详情请参考 History-based Pruning。failedHistoryLimit:要保留的失败运行最大数量。更多详情请参考 History-based Pruning。namespaces:为特定命名空间配置不同的默认清理策略。更多详情请参考 Namespace Configuration。options:Tekton Pruner 控制器的选项。更详细的支持信息请参见 Additional fields as options。