命名空间配置
针对不同的命名空间配置不同的 pruning 策略,以满足与环境相关的保留需求。
目录
配置层次验证边界方法 1:内联命名空间规格(集中式)方法 2:按命名空间的 ConfigMap(自助式)验证规则1. 显式全局限制2. 系统默认限制3. 覆盖默认值配置继承Selector 支持常见模式最佳实践后续步骤配置层次
设置流向:全局 → 命名空间 → 资源组
在全局配置中设置 enforcedConfigLevel: namespace 以启用命名空间级覆盖。
验证边界
关键 - 系统边界:仅在 PipelineRuns/TaskRuns 运行的用户命名空间中创建命名空间级 ConfigMap。
禁止的命名空间(验证将拒绝):
- 系统:
kube-* - Tekton controllers:
tekton-pipelines、tekton-*
所有配置都必须具备的标签:
命名空间级 ConfigMap 不在 TektonConfig 生命周期内。如果你之后需要备份或还原 Tekton 配置,请单独保存这些 ConfigMap。
方法 1:内联命名空间规格(集中式)
在 TektonConfig 中定义所有命名空间配置:
方法 2:按命名空间的 ConfigMap(自助式)
推荐用于命名空间隔离和团队自治。
步骤 1: 在 TektonConfig 中启用命名空间级配置:
步骤 2: 创建特定于命名空间的 ConfigMap(固定名称:tekton-pruner-namespace-spec):
优势:
- 供命名空间所有者自助管理
- 独立的生命周期管理
- 优先级高于全局配置
验证规则
命名空间配置会根据限制进行验证,以防止资源耗尽。
1. 显式全局限制
当全局配置定义了限制时,命名空间配置不能超过该限制。
2. 系统默认限制
当未定义全局限制时,系统会强制执行以下最大值:
示例:
3. 覆盖默认值
集群管理员可以通过全局配置设置更严格的限制。全局限制会覆盖系统默认值,但不能超过系统最大值。
配置继承
未指定的设置会从更高层级继承:
Selector 支持
重要: 资源 selector(matchLabels、matchAnnotations)仅适用于命名空间级 ConfigMap(tekton-pruner-namespace-spec),而不适用于全局 ConfigMap 中的内联命名空间规格。
这会生效(命名空间 ConfigMap):
这会被忽略(全局 ConfigMap 中的内联命名空间):
对于基于 selector 的资源组,请使用单独的命名空间 ConfigMap(方法 2)。
常见模式
基于环境:
最佳实践
- 使用清晰的命名空间命名约定
- 在开发环境中先采用较宽松的限制
- 在生产环境中实施更严格的保留策略
- 记录命名空间配置决策
- 定期审查并调整设置
- 在部署前测试配置
- 对基于 selector 的组使用命名空间 ConfigMap
后续步骤
- Learn about Resource Groups - 基于 selector 的配置
- Explore Time-based Pruning - TTL 策略
- Review History-based Pruning - 保留限制