禁用未完成 Run 的实时收集
目录
功能概述使用场景前提条件步骤1. 配置 watcher 标志2. 应用配置3. 验证 watcher 参数运行结果功能验证回滚故障排查watcher Deployment 中看不到该标志运行中的资源仍然出现在 Results 中已完成的资源没有出现在 Results 中功能概述
默认情况下,tekton-results-watcher 会在创建 TaskRun 和 PipelineRun 记录时存储它们,并在资源发生变化时持续对这些记录执行 upsert。这样可以实时查看正在运行的资源,但也会增加 Results API 和数据库的写入负载。
你可以通过在 tekton-results-watcher controller 上设置 --disable_storing_incomplete_runs=true 标志来降低这种写入负载。启用此标志后,未完成的 Run 不会存储到 Tekton Results 中。watcher 仅在 Run 达到完成状态后才会存储该 Run。
使用场景
- 在包含大量短生命周期或频繁更新的 Run 的集群中,减少 Results 数据库写入。
- 在不需要对正在运行资源进行实时可见性的情况下,提升 watcher 和数据库性能。
- 仅存储最终执行记录,同时通过 Tekton Results 保留已完成 Run 的历史记录。
前提条件
- Tekton Results 已通过
TektonConfig安装。 - 你有权限更新
TektonConfig资源。 - 你知道 Results 安装所在的命名空间。下面的示例使用默认的
tekton-pipelines命名空间。
步骤
1. 配置 watcher 标志
更新 TektonConfig.spec.result.options.deployments.tekton-results-watcher,并将该标志添加到 watcher 容器中:
operator 会按标志键合并容器参数。你无需复制现有的 watcher 参数,例如 -api_addr、-auth_mode 或 -logs_api;新标志会被添加到现有参数列表中。
2. 应用配置
应用更新后的 TektonConfig 清单:
等待 watcher Deployment 完成滚动更新:
3. 验证 watcher 参数
检查 watcher Pod 模板是否包含该标志:
运行结果
滚动更新完成后:
- 运行中的
TaskRun和PipelineRun资源在状态仍未完成时不会存储到 Tekton Results 中。 - 已完成的
TaskRun和PipelineRun资源会在完成后存储。 - 由于不会持续对中间资源状态变化执行 upsert,因此 Results API 和数据库接收到的更新更少。
功能验证
创建或触发一个运行时间足够长、便于在运行期间检查的 TaskRun 或 PipelineRun。
在 Run 仍未完成时,查询 Results 记录:
正在运行的资源不应出现在 Results 记录中。
Run 完成后,再次查询记录:
此时,已完成的资源应出现在 Results 记录中。
确切的 tkn results 地址和身份验证选项取决于你的 Results 安装。有关 CLI 配置和端口转发示例,请参见 Quick Start。
回滚
要恢复实时收集,请将该标志设置为 false:
应用更新后的 TektonConfig,并等待 watcher Deployment 再次完成滚动更新:
故障排查
watcher Deployment 中看不到该标志
检查 TektonConfig 更新是否已被接受:
确认配置位于 spec.result.options.deployments.tekton-results-watcher 下,并且容器名称为 watcher。
运行中的资源仍然出现在 Results 中
检查新的 watcher Pod 是否正在运行:
如果旧的 Pod 仍在运行,请等待滚动更新完成。同时还要确认你正在检查的 Run 是在新的 watcher Pod 启动之后创建的。
已完成的资源没有出现在 Results 中
检查 watcher 日志中是否存在存储或 API 错误:
同时确认 Results API 和数据库运行正常。有关安装和基本验证步骤,请参见 Quick Start。