核心概念

本文件介绍了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.TaskRuntekton.dev/v1.PipelineRun
  • 实际数据内容(存储为序列化对象)

这种数据模型允许灵活组织CI/CD执行数据,使其更容易跟踪和查询相关活动。

结果的生命周期

Tekton Results中数据的典型流动过程如下:

  1. 用户通过Kubernetes API创建TaskRun或PipelineRun
  2. 结果观察者检测到新资源并监视其变化
  3. 当TaskRun/PipelineRun被更新时,观察者在Results数据库中创建或更新相应的记录
  4. 观察者为原始TaskRun/PipelineRun添加结果标识符注解
  5. 用户可以查询Results API以检索执行数据
  6. 一旦数据安全存储在Results数据库中,原始Kubernetes资源可以安全地从集群中移除

这一流程确保了即使原始Kubernetes资源被删除,执行数据仍然被保留,提供了CI/CD活动的完整历史记录。

参考资料