架构

Tekton Operator 架构概述

Tekton Operator 是一个 Kubernetes 扩展,用于在任何 Kubernetes 集群上安装、升级和管理 TektonCD 组件。它遵循 Kubernetes Operator 模式,为 Tekton 组件提供生命周期管理。

Tekton Operator Architecture Diagram

核心组件

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 组件为自定义资源提供校验和默认值设置:

  • 校验自定义资源配置
  • 在必要时设置默认值
  • 防止无效配置

工作流程

  1. Operator 安装

    • Operator 可通过 Operator Hub、发布文件或源码安装
    • 创建必要的 CRDs 和 RBAC 权限
  2. 资源创建

    • 用户创建 TektonConfig 资源(对于 Tekton Results,配置 spec.result
    • 定义期望状态和配置
  3. 组件安装

    • Operator 监测到自定义资源
    • 安装指定的 Tekton 组件
    • 根据规格进行配置
  4. 生命周期管理

    • 管理更新和升级
    • 处理配置变更
    • 故障恢复

部署架构

基础组件

  1. Operator 部署

    • 包含 controller 和 webhook
    • 需要集群级权限
    • 监听自定义资源
  2. 自定义资源

    • 定义期望状态
    • 存储配置
    • 表示 Tekton 组件

组件关系

TektonConfig 资源协调其他资源的创建:

  1. 依赖管理

    • 确保组件按正确顺序安装
    • 管理共享资源
    • 处理组件间依赖关系
  2. 配置传播

    • 将通用设置传递给组件特定资源
    • 确保组件间配置一致性

安全架构

  1. RBAC 权限

    • Operator 需要集群级权限
    • 组件使用命名空间级权限
    • 遵循最小权限原则
  2. 资源隔离

    • 组件可安装在不同命名空间
    • 支持多租户部署

可扩展性设计

  1. 配置选项
    • 为每个组件提供丰富的配置选项
    • 支持自定义设置和配置文件

参考资料