定期清理 TaskRun 和 PipelineRun 资源
概述
使用 Pruner 功能自动清理 Tekton 中的 TaskRun 和 PipelineRun 资源。Pruner 通过在后台执行 tkn 命令来执行资源清理。
使用场景
- 定期清理 TaskRun 资源
- 定期清理 PipelineRun 资源
- 根据命名空间配置不同的清理策略
前提条件
- 必须安装 Tekton Operator 组件
- 环境中必须已自动创建 TektonConfig 资源
步骤
步骤 1
编辑 TektonConfig 资源
步骤 2
修改 spec.pruner 配置,如下所示:
关键配置说明:
disabled:设置为true时,禁用 pruner 功能(默认值:false)schedule:清理任务的执行计划,使用 cron 表达式格式startingDeadlineSeconds:任务启动截止时间的可选配置(单位:秒)。如果任务错过计划时间且超过此时长,则视为失败resources:支持清理的资源类型,包括taskrun和pipelinerunkeep:清理时保留的资源最大数量keep-since:保留指定时间范围内的资源(单位:分钟)prune-per-resource:设置为true时(默认值为false),会分别对每种资源应用keep配置- 例如:如果命名空间
ns-1中有两个 Pipelines,名为pipeline-1和pipeline-2,将执行以下命令: - 注意:在使用
keep-since时,启用prune-per-resource=true没有实际意义,因为keep-since是基于资源的时间约束,与资源数量无关。
- 例如:如果命名空间
Note
如果 disabled: false 且 schedule 为空,则全局 pruner 任务将被禁用。
但是,如果命名空间中存在值不为空的注解 operator.tekton.dev/prune.schedule,则会为该命名空间创建 pruner 任务。
步骤 3
通过命名空间注解配置清理策略(可选)
默认情况下,pruner 任务将使用全局配置(spec.pruner),但用户可以通过以下注解为特定命名空间自定义 pruner 配置。如果某些注解缺失或值无效,将使用全局配置值,或者跳过该命名空间。
支持的注解:
operator.tekton.dev/prune.skip:设置为true时,跳过该命名空间的 pruner 任务operator.tekton.dev/prune.schedule:设置该命名空间的清理计划operator.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:::
结果
配置完成后,系统将按照设定的计划自动清理已过期的 TaskRun 和 PipelineRun 资源。