架构
目录
Tekton Chains 架构概述
Tekton Chains 是一个 Kubernetes 自定义资源定义(CRD)控制器,旨在为 Tekton pipelines 提供供应链安全功能。Tekton Chains 的架构由多个关键组件协同工作,提供安全的工件签名和验证能力。

注:上图展示了 Tekton Chains 的高层架构。实际实现可能会根据配置有所不同。
核心组件
Tekton Chains Controller
Tekton Chains Controller 是架构的核心组件。它作为 Kubernetes 控制器运行,负责:
- 监听集群中 TaskRun 和 PipelineRun 的完成事件
- 对已完成的 TaskRun 和 PipelineRun 进行快照
- 处理这些快照以生成加密签名和证明
- 将签名和证明存储到配置的存储后端
该控制器以 Kubernetes Deployment 形式运行在 tekton-pipelines
命名空间中,负责 Tekton Chains 的所有核心功能。
签名组件
Tekton Chains 支持多种签名机制,以提供工件安全的灵活性:
- X509 Signer:使用 X509 证书对工件进行签名
- Cosign Signer:集成 Cosign 用于容器镜像签名
- KMS Signers:支持多种密钥管理系统:
- GCP KMS
- AWS KMS
- Azure KMS
- HashiCorp Vault
这些签名组件负责对 Tekton Chains 生成的工件和证明进行加密签名。
存储组件
Tekton Chains 可以将签名和证明存储在多种后端:
- Tekton Storage:将签名作为注解存储在 TaskRun 或 PipelineRun 对象上
- OCI Storage:将签名和证明与容器镜像一起存储在兼容 OCI 的镜像仓库中
- GCS Storage:将签名和证明存储在 Google Cloud Storage 桶中
- DocDB Storage:将签名和证明存储在文档数据库(如 MongoDB、Firestore)中
- Grafeas Storage:将签名和证明存储在 Grafeas 服务器中
数据流
Tekton Chains 的数据流遵循以下步骤:
-
观察:Chains Controller 观察 Kubernetes 集群中的 TaskRun 和 PipelineRun 执行情况。
-
快照创建:当 TaskRun 或 PipelineRun 完成时,控制器对其状态进行快照,包括输入、输出和执行细节。
-
格式转换:将快照转换为一个或多个标准负载格式(例如 in-toto 证明、SLSA 溯源)。
-
签名:使用配置的签名机制(X509、Cosign、KMS)对格式化的负载进行签名。
-
存储:将签名后的负载存储到配置的存储后端。
-
验证:外部工具随后可以检索并验证这些签名,以确保工件的完整性。
SLSA 溯源生成
针对 SLSA(软件工件供应链等级)溯源,Tekton Chains 会:
- 从 TaskRun 结果中提取输入工件(源代码、依赖项)信息
- 捕获构建环境和过程的详细信息
- 记录输出工件(容器镜像、二进制文件)信息
- 生成标准化的 SLSA 溯源文档
- 对溯源文档进行签名
- 将签名的溯源文档与工件一起或存储在指定位置
部署架构
Tekton Chains 作为 Kubernetes 控制器部署在集群中:
- 命名空间:控制器运行在
tekton-chains
命名空间
- 部署:单个 Deployment 管理控制器 Pod
- 服务账户:控制器使用具有适当权限的专用服务账户
- 配置:通过名为
chains-config
的 ConfigMap 管理配置
- 默认情况下,Tekton Chains 通过
TektonConfig
资源自动部署。您可以修改 TektonConfig
资源来配置 Chains。
- 本质上,Tekton Operator 会将 Chains 配置从
TektonConfig
资源同步到 TektonChains
资源,最终反映到 chains-config
ConfigMap 中。
- Secrets:签名密钥和凭据存储为 Kubernetes Secret
高可用性考虑
Tekton Chains 控制器支持水平扩展以实现高可用性:
- 可部署多个副本以实现冗余
- 通过 Leader election 确保一次只有一个实例处理事件
- 状态通过 Kubernetes 资源维护,实现无缝故障切换
集成点
Tekton Chains 与多个外部系统集成:
- Tekton Pipelines:监听 Tekton Pipelines 的 TaskRun 和 PipelineRun
- OCI Registries:将签名和证明与容器镜像一起存储
- Key Management Systems:集成多种 KMS 提供商,实现安全密钥管理
- Transparency Logs:可将证明发布到如 Rekor 的透明日志
- Verification Systems:提供可被 Kyverno、OPA 或 Cosign 等系统验证的签名
该架构使 Tekton Chains 能够在保持部署和配置灵活性的同时,提供全面的供应链安全功能。