介绍

Tekton Results 旨在帮助用户逻辑地分组 CI/CD 工作负载的历史记录,并将长期结果存储与 Pipeline 控制器分离。这使您能够:

  • 提供关于 CI/CD 工作流的自定义结果元数据,这些元数据在 Tekton TaskRun/PipelineRun CRD 中不可用(例如:运行后的操作)
  • 将相关工作负载进行分组(例如,将相关的 TaskRun 和 PipelineRun 捆绑成一个单元)
  • 使长期结果历史记录独立于 Pipeline CRD 控制器,从而释放 etcd 资源用于运行执行。
  • 存储 TaskRun/PipelineRun 生成的日志,以便可以清理已完成的运行,节省资源。

有关其他背景和设计动机,请参见 TEP-0021

概述

Tekton Results 由两个主要组件组成:

  • 一个可通过 API 查询的 gRPC API 服务器,由持久存储支持(请参阅项目源代码中 proto/v1alpha2 了解最新的 API 规范)。
  • 一个监视器控制器,用于监视和报告 TaskRun 和 PipelineRun 的更新到 API 服务器。

结果的生命周期

  1. 用户通过 Kubernetes API 照常创建 TaskRun 或 PipelineRun。
  2. 结果监视器监听所有 TaskRun/PipelineRun 的变化。
  3. 如果 TaskRun/PipelineRun 发生变化,监视器会使用结果 API 更新(或创建)相应的 Record(必要时还会创建 Result)。
    • 监视器还会为原始的 TaskRun/PipelineRun 添加标识符注释。
  4. 用户可以直接从 API 获取/查询结果/记录数据。一旦 TaskRun/PipelineRun 完成并成功存储在结果 API 中,原始的 CRD 对象可以安全地从集群中删除。

数据模型

  • 记录是数据的单个实例。这些通常是执行数据(例如 PipelineRun、TaskRun、日志),但也可以引用有关事件/执行的其他数据。记录旨在灵活支持工具希望提供的与 CI 事件相关的任意信息。
  • 结果是记录的聚合器,允许用户将一组记录作为单个实体引用。例如,您可能有一个结果将以下记录进行分组:
    • 触发操作的源事件(例如,拉取请求、推送)。
    • 创建的 PipelineRun。
    • 响应 PipelineRun 创建的 TaskRun。
    • 云事件的接收。
    • 源状态更新的接收。

(注意:监视器当前尚不支持所有这些类型的数据,但它们是我们计划支持的数据示例)。