架构
架构概述
Tekton Pipelines 是一个基于 Kubernetes 的 CI/CD 系统,提供了一组标准的自定义资源定义(CRDs)用于定义和运行 CI/CD 工作流,通常以一系列步骤的形式呈现。它旨在具备云原生特性、可扩展性和可扩展性。

核心组件
1. 任务
任务是 Tekton Pipelines 的基本构建块:
- 定义一系列要执行的步骤
- 在 Kubernetes Pods 中运行
- 可以接受输入并生成输出
- 按顺序执行步骤
主要特征:
- 每个步骤在其自身的容器中运行
- 步骤共享工作区卷
- 支持参数化
- 可以定义资源需求
2. 任务运行
任务运行是任务的运行时实例:
- 创建一个 Pod 来执行任务
- 管理任务执行的生命周期
- 收集并存储执行结果
- 处理资源分配
工作流程:
- 创建一个包含每个步骤容器的 Pod
- 按顺序执行步骤
- 管理步骤之间的共享卷
- 收集执行结果和状态
3. 流水线
流水线定义了一系列要执行的任务:
- 协调整个多个任务
- 定义执行顺序和依赖关系
- 管理任务间的数据流
- 支持条件执行
关键特性:
- 任务依赖关系管理
- 任务之间的参数传递
- 任务之间的工作区共享
- 使用
when
表达式的条件执行
- 使用
runAfter
的并行执行
4. 流水线运行
流水线运行是流水线的运行时实例:
- 为流水线中的每个任务创建任务运行
- 管理执行流程
- 处理资源分配
- 收集并存储执行结果
主要职责:
- 协调任务运行的创建
- 管理执行顺序
- 处理参数传递
- 跟踪整体执行状态
5. 工作区
工作区提供了一个共享数据的机制:
- 任务之间的共享存储
- 支持各种卷类型
- 灵活的挂载选项
- 在任务执行之间保持数据持久性
支持的存储类型:
- PersistentVolumeClaims
- ConfigMaps
- Secrets
- EmptyDir 卷
- CSI(容器存储接口)卷
- 投影卷
工作流程
-
流水线定义
- 定义带有步骤的任务
- 定义具有任务依赖关系的流水线
- 配置参数和工作区
-
流水线执行
- 创建一个流水线运行资源
- 控制器基于依赖关系创建任务运行
- 任务运行创建 Pods 来执行步骤
- 收集结果并更新状态
-
数据流
- 参数在流水线组件之间传递数据
- 工作区在任务之间共享文件
- 任务的结果可以在后续任务中使用
-
完成
- 所有任务运行完成
- 流水线运行状态更新
- 结果存储并可以检索
部署架构
控制器组件
-
Tekton 流水线控制器
- 监视 Tekton CRD 实例
- 创建和管理 Kubernetes 资源
- 处理生命周期管理
- 更新状态信息
-
Tekton Webhook
- 验证 Tekton 资源
- 应用默认值
- 确保资源一致性
-
Tekton 远程解析器
- 从远程源解析任务和流水线定义
- 支持 OCI 包
- 支持基于 Git 的解析
- 支持基于 HTTP 的解析
运行时组件
-
任务运行 Pods
- 每个步骤的容器
- 用于初始化的容器
- 用于工作区的共享卷
- 提供特殊功能的侧车
-
资源管理
- Pod 调度
- 资源请求和限制
- 节点选择和亲和性
- 优先级类
安全架构
认证机制
- 服务账户集成
- 任务运行和流水线运行使用服务账户
- 支持 Kubernetes RBAC
- 证书的密钥管理
授权控制
-
资源访问控制
-
执行安全
可扩展性设计
1. 自定义任务
- 超出容器执行的扩展
- 自定义资源实现
- 与外部系统集成
2. 远程解析
- 远程任务和流水线定义
- 支持 OCI 包
- 基于 Git 的解析
- 基于 HTTP 的解析
3. 结果和指标
- 任务和流水线结果
- 执行指标
- 与可观察性系统集成
- 自定义结果处理器