核心概念
本文件介绍了Tekton Results的基本概念,帮助您理解其目的、组件和数据模型。
什么是Tekton Results?
Tekton Results是Tekton CI/CD生态系统的一个组成部分,提供对Tekton执行数据的长期存储和查询能力。它帮助用户将CI/CD工作负载历史进行逻辑分组,并将长期结果存储与Pipeline控制器分离。
Tekton Results的主要优点包括:
- 持久存储:将执行历史(TaskRuns、PipelineRuns、日志)存储在专用数据库中,而不是Kubernetes的etcd
- 结果分组:将相关工作负载分组在一起(例如,将相关的TaskRuns和PipelineRuns打包为一个单元)
- 资源优化:通过将已完成的运行迁移到外部存储来释放etcd资源
- 日志保留:存储TaskRuns/PipelineRuns产生的日志,以便可以清理已完成的运行以节省集群资源
关键组件
Tekton Results由三个主要组件组成:
1. API服务器
API服务器提供一个可查询的gRPC和REST接口,支持持久存储。它允许用户:
- 存储和检索执行数据(TaskRuns、PipelineRuns、日志)
- 根据各种标准查询和过滤结果
- 将相关执行分组在一起
API服务器使用Kubernetes风格的身份验证和授权,使得Kubernetes生态系统的用户更容易上手。
2. 观察者
观察者是一个Kubernetes控制器,负责:
- 监视集群中的TaskRun和PipelineRun变化
- 自动在Results数据库中创建或更新相应的记录
- 为原始的TaskRun/PipelineRun对象添加结果标识符注解
- 在将已完成的运行存储到数据库后,选择性地删除这些运行
观察者确保执行数据能够自动捕获,而不需要对现有的Tekton工作流进行更改。
3. 保留策略代理
保留策略代理通过以下方式管理存储数据的生命周期:
- 根据可配置策略从数据库中删除较旧的结果及其相关记录
- 根据计划运行修剪作业
- 强制执行执行数据的最大保留期限
数据模型
Tekton Results使用一个分层数据模型,由两个主要实体组成:
结果
结果是顶级聚合器,将相关记录分组在一起。它们表示一个逻辑工作单元,例如由特定事件触发的CI/CD管道执行。结果包含:
- 唯一标识符
- 元数据(创建时间,更新时间)
- 注解(自定义元数据的键值对)
- 摘要信息(状态,类型等)
记录
记录是属于结果的单个数据实例。它们代表CI/CD工作流中的特定工件或事件,例如:
- TaskRun执行
- PipelineRun执行
- 日志数据
- 事件数据
记录包含:
- 唯一名称
- 指向其父结果的引用
- 数据类型标识符(例如,
tekton.dev/v1.TaskRun
,tekton.dev/v1.PipelineRun
)
- 实际数据内容(存储为序列化对象)
这种数据模型允许灵活组织CI/CD执行数据,使其更容易跟踪和查询相关活动。
结果的生命周期
Tekton Results中数据的典型流动过程如下:
- 用户通过Kubernetes API创建TaskRun或PipelineRun
- 结果观察者检测到新资源并监视其变化
- 当TaskRun/PipelineRun被更新时,观察者在Results数据库中创建或更新相应的记录
- 观察者为原始TaskRun/PipelineRun添加结果标识符注解
- 用户可以查询Results API以检索执行数据
- 一旦数据安全存储在Results数据库中,原始Kubernetes资源可以安全地从集群中移除
这一流程确保了即使原始Kubernetes资源被删除,执行数据仍然被保留,提供了CI/CD活动的完整历史记录。
参考资料