定期清理 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 资源。