架构
Tekton Operator 架构概述
Tekton Operator 是一个 Kubernetes 扩展,用于在任何 Kubernetes 集群上安装、升级和管理 TektonCD 组件。它遵循 Kubernetes Operator 模式,为 Tekton 组件提供生命周期管理。
核心组件
1. 自定义资源定义(CRDs)
Tekton Operator 定义了多个自定义资源来管理不同的 Tekton 组件:
- TektonConfig:顶层资源,协调其他组件的安装
- TektonPipeline:管理 Tekton Pipelines 组件
- TektonTrigger:管理 Tekton Triggers 组件
- TektonResult:管理 Tekton Results 组件
- TektonChain:管理 Tekton Chains 组件
- OpenShiftPipelinesAsCode:管理 Pipelines as Code 组件
2. Controller
operator controller 监听这些自定义资源的变化,并将实际状态与期望状态进行协调:
- 监测自定义资源的变更
- 安装或升级对应的 Tekton 组件
- 管理组件之间的依赖关系
- 处理配置变更
- 执行健康检查和错误恢复
3. Webhook
webhook 组件为自定义资源提供校验和默认值设置:
- 校验自定义资源配置
- 在必要时设置默认值
- 防止无效配置
工作流程
-
Operator 安装
- Operator 可通过 Operator Hub、发布文件或源码安装
- 创建必要的 CRDs 和 RBAC 权限
-
资源创建
- 用户创建 TektonConfig 资源(对于 Tekton Results,配置
spec.result) - 定义期望状态和配置
- 用户创建 TektonConfig 资源(对于 Tekton Results,配置
-
组件安装
- Operator 监测到自定义资源
- 安装指定的 Tekton 组件
- 根据规格进行配置
-
生命周期管理
- 管理更新和升级
- 处理配置变更
- 故障恢复
部署架构
基础组件
-
Operator 部署
- 包含 controller 和 webhook
- 需要集群级权限
- 监听自定义资源
-
自定义资源
- 定义期望状态
- 存储配置
- 表示 Tekton 组件
组件关系
TektonConfig 资源协调其他资源的创建:
-
依赖管理
- 确保组件按正确顺序安装
- 管理共享资源
- 处理组件间依赖关系
-
配置传播
- 将通用设置传递给组件特定资源
- 确保组件间配置一致性
安全架构
-
RBAC 权限
- Operator 需要集群级权限
- 组件使用命名空间级权限
- 遵循最小权限原则
-
资源隔离
- 组件可安装在不同命名空间
- 支持多租户部署
可扩展性设计
- 配置选项
- 为每个组件提供丰富的配置选项
- 支持自定义设置和配置文件