Pruner 配置
目录
概述
Tekton Pruner 通过基于可配置的时间(TTL)和历史策略,自动清理已完成的 PipelineRuns 和 TaskRuns,从而管理 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 会将 Pruner 配置从 TektonConfig 资源同步到 TektonPruner 资源,最终反映在 ConfigMap 中。
如果您通过 TektonConfig 部署 Pruner,则必须通过 TektonConfig 配置 Pruner。
如果仅修改 ConfigMap 中的配置,且未同步到 TektonPruner 资源,配置可能会丢失。
当 TektonConfig 中的配置发生变化,或因其他原因触发调和时,ConfigMap 中的配置将被覆盖。
下面是配置 Pruner 的不同方式的简单演示。
ConfigMap 中的配置
重要:所有 pruner ConfigMaps 必须 包含以下标签:
这些标签使 pruner webhook 能够验证 ConfigMaps,并使控制器正确处理它们。
以下是 Tekton Pruner ConfigMap 的示例:
YAML 字段说明:
enforcedConfigLevel 决定配置层级:
global:集群范围的默认配置,适用于所有命名空间(不允许命名空间覆盖)namespace:允许通过各命名空间中的 ConfigMaps 进行命名空间级别的覆盖
TektonConfig 中的配置
在 TektonConfig 资源中,Pruner 的配置大致如下:
重要提示:Tekton Pruner 是基于 事件 的 pruner,默认处于禁用状态。要启用基于事件的 pruner,必须禁用现有的基于 Job 的 pruner。
- 两种 pruner(基于 Job 和基于事件)不能同时启用
- 基于事件的 pruner 实时响应资源事件,提供更高效的清理
如果您想使用基于 Job 的 pruner,请参考TaskRun 和 PipelineRun 资源的定期清理。
YAML 字段说明:
spec.pruner:此部分包含基于 Job 的 pruner 配置。disabled:是否禁用基于 Job 的 pruner。
spec.tektonpruner:此部分包含基于事件的 pruner 配置。disabled:是否禁用基于事件的 pruner。enforcedConfigLevel:决定配置层级。详情请参见命名空间配置。global:集群范围的默认配置,适用于所有命名空间(不允许命名空间覆盖)。namespace:允许通过各命名空间中的 ConfigMaps 进行命名空间级别的覆盖。
ttlSecondsAfterFinished:保留已完成运行的时间(秒),超过该时间后进行清理。详情请参见基于时间的清理(TTL)。historyLimit:每种状态下保留的最大运行数(分别独立应用于成功和失败运行)。详情请参见基于历史的清理。successfulHistoryLimit:保留的成功运行的最大数量。详情请参见基于历史的清理。failedHistoryLimit:保留的失败运行的最大数量。详情请参见基于历史的清理。namespaces:为特定命名空间配置不同的默认清理策略。详情请参见命名空间配置。options:Tekton Pruner 控制器的选项。更多详细支持请参见作为选项的附加字段。