History-based Pruning

根据运行状态保留固定数量的运行记录,不考虑其年龄。

目录

工作原理

历史限制和 TTL 可以同时生效。运行如果超过历史限制或其 TTL 已过期,则有资格被删除。这意味着保留时间最短的规则生效。

配置选项

设置描述
successfulHistoryLimit保留最近 N 个成功的运行
failedHistoryLimit保留最近 N 个失败的运行
historyLimit保留每种状态的 N 个运行(当未设置具体限制时)

基本配置

按状态分别限制:

apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
  name: config
spec:
  pruner:
    disabled: true  # 必须禁用基于作业的裁剪器
  tektonpruner:
    disabled: false  # 启用基于事件的裁剪器
    global-config:
      successfulHistoryLimit: 5    # 保留最近 5 个成功运行
      failedHistoryLimit: 10       # 保留最近 10 个失败运行(用于调试)

两者相同限制:

spec:
  tektonpruner:
    global-config:
      historyLimit: 5  # 保留最近 5 个成功和最近 5 个失败运行

环境特定限制

spec:
  tektonpruner:
    global-config:
      enforcedConfigLevel: namespace
      namespaces:
        dev:
          successfulHistoryLimit: 3
          failedHistoryLimit: 5     # 更多失败运行用于调试
        staging:
          successfulHistoryLimit: 5
          failedHistoryLimit: 5
        prod:
          successfulHistoryLimit: 10
          failedHistoryLimit: 20

Pipeline 特定限制

在命名空间 ConfigMap 中使用选择器实现 Pipeline 特定限制:

WARNING

命名空间级别的 ConfigMap 不在 TektonConfig 生命周期管理范围内。如果以后需要备份或恢复 Tekton 配置,请单独保存这些 ConfigMap。

apiVersion: v1
kind: ConfigMap
metadata:
  name: tekton-pruner-namespace-spec
  namespace: my-app
  labels:
    app.kubernetes.io/part-of: tekton-pruner
    pruner.tekton.dev/config-type: namespace
data:
  ns-config: |
    successfulHistoryLimit: 3
    pipelineRuns:
      - selector:
          matchLabels:
            critical: "true"
        successfulHistoryLimit: 20
        failedHistoryLimit: 30
      - selector:
          matchLabels:
            pipeline-type: test
        successfulHistoryLimit: 3
        failedHistoryLimit: 5

与 TTL 的交互

历史限制不会覆盖 TTL:

data:
  ns-config: |
    ttlSecondsAfterFinished: 300
    successfulHistoryLimit: 5
    failedHistoryLimit: 10

结果:即使运行在最近 5 个成功或最近 10 个失败之内,超过 5 分钟的运行也会被删除。如果存在超过配置数量的运行,历史限制仍然可以更早删除较旧的运行。

最佳实践

  1. 保留更多失败运行,便于调试
  2. 关键 Pipeline:设置更高限制以保留审计轨迹
  3. 开发环境:设置较低限制(3-5)以加快迭代
  4. 生产环境:设置较高限制(10-20)以便分析
  5. 监控存储:根据集群容量调整限制

相关内容