基于时间的清理(TTL)

使用 ttlSecondsAfterFinished 在指定时间后删除已完成的资源。

目录

工作原理

TTL 适用于所有已完成的运行(成功和失败)。计时器从运行完成时开始。

基本配置

apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
  name: config
spec:
  pruner:
    disabled: true  # 必须禁用基于作业的清理器
  tektonpruner:
    disabled: false  # 启用基于事件的清理器
    global-config:
      ttlSecondsAfterFinished: 3600  # 1小时后删除

常见的 TTL 值

持续时间秒数使用场景
5分钟300开发/测试快速迭代
1小时3600CI 流水线
1天86400一般工作负载
7天604800预发布/发布
30天2592000生产/审计/合规

针对环境的 TTL

spec:
  tektonpruner:
    global-config:
      enforcedConfigLevel: namespace
      ttlSecondsAfterFinished: 3600  # 默认值
      namespaces:
        dev:
          ttlSecondsAfterFinished: 300      # 5分钟
        staging:
          ttlSecondsAfterFinished: 86400    # 1天
        prod:
          ttlSecondsAfterFinished: 2592000

针对流水线的 TTL

在命名空间 ConfigMap 中使用选择器实现流水线特定的 TTL:

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: |
    ttlSecondsAfterFinished: 3600
    pipelineRuns:
      - selector:
          matchLabels:
            pipeline-type: release
        ttlSecondsAfterFinished: 604800
      - selector:
          matchLabels:
            pipeline-type: test
        ttlSecondsAfterFinished: 300

TTL 与历史限制结合使用

历史限制会覆盖 TTL,以保证最小保留量:

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

结果:运行将在 5 分钟后被删除,除非它们是最近的 5 个成功或最近的 10 个失败。

最佳实践

  1. 开发环境:短 TTL(5-60 分钟)以实现快速迭代
  2. 生产环境:长 TTL(7-30 天)以满足审计/合规需求
  3. 关键流水线:使用选择器实现延长保留
  4. 权衡考虑:平衡存储成本与保留需求

相关内容