Namespace Configuration
针对不同命名空间配置不同的修剪策略,以满足环境特定的保留需求。
目录
配置层级
设置流程:全局 → 命名空间 → 资源组
在全局配置中设置 enforcedConfigLevel: namespace 以启用命名空间级别的覆盖。
校验边界
关键 - 系统边界:仅在运行 PipelineRuns/TaskRuns 的用户命名空间中创建命名空间级别的 ConfigMaps。
禁止的命名空间(校验将拒绝):
- 系统:
kube-* - Tekton 控制器:
tekton-pipelines、tekton-*
所有配置必须包含以下标签:
命名空间级别的 ConfigMaps 不在 TektonConfig 生命周期管理范围内。如果以后需要备份或恢复 Tekton 配置,请单独保存这些 ConfigMaps。
方法一:内联命名空间规格(集中式)
在 TektonConfig 中定义所有命名空间配置:
方法二:每命名空间 ConfigMaps(自助式)
推荐用于命名空间隔离和团队自治。
步骤 1: 在 TektonConfig 中启用命名空间级配置:
步骤 2: 创建命名空间特定的 ConfigMap(固定名称:tekton-pruner-namespace-spec):
优点:
- 命名空间所有者自助管理
- 生命周期独立管理
- 优先级高于全局配置
校验规则
命名空间配置会根据限制进行校验,以防止资源耗尽。
1. 显式全局限制
当全局配置定义了限制时,命名空间配置不得超过该限制。
2. 系统默认限制
当未定义全局限制时,系统强制以下最大值:
示例:
3. 覆盖默认值
集群管理员可通过全局配置设置更严格的限制。全局限制覆盖系统默认,但不得超过系统最大值。
配置继承
未指定的设置将继承自更高层级:
选择器支持
重要: 资源选择器(matchLabels、matchAnnotations)仅在命名空间级 ConfigMaps(tekton-pruner-namespace-spec)中生效,不适用于全局 ConfigMap 内联的命名空间规格。
此配置有效(命名空间 ConfigMap):
此配置被忽略(全局 ConfigMap 内联命名空间):
对于基于选择器的资源组,请使用独立的命名空间 ConfigMaps(方法二)。
常见模式
基于环境:
最佳实践
- 使用清晰的命名空间命名规范
- 在开发环境中采用宽松限制
- 在生产环境实施更严格的保留策略
- 记录命名空间配置决策
- 定期审查并调整设置
- 部署前测试配置
- 对于基于选择器的组,使用命名空间 ConfigMaps
后续步骤
- 了解 Resource Groups - 基于选择器的配置
- 探索 Time-based Pruning - TTL 策略
- 查看 History-based Pruning - 保留限制