架构

Tekton Operator 架构概述

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

Tekton Operator 架构图

核心组件

1. 自定义资源定义 (CRDs)

Tekton Operator 定义了若干自定义资源,以管理不同的 Tekton 组件:

  • TektonConfig: 顶层资源,用于协调其他组件的安装
  • TektonPipeline: 管理 Tekton Pipelines 组件
  • TektonTrigger: 管理 Tekton Triggers 组件
  • TektonResult: 管理 Tekton Results 组件
  • TektonChain: 管理 Tekton Chains 组件
  • OpenShiftPipelinesAsCode: 管理 Pipelines as Code 组件

2. 控制器

操作器控制器监视这些自定义资源的变化,并协调实际状态与期望状态:

  • 检测自定义资源中的变化
  • 安装或升级相应的 Tekton 组件
  • 管理组件之间的依赖关系
  • 处理配置变化
  • 执行健康检查和错误恢复

3. Webhook

Webhook 组件为自定义资源提供验证和默认值设置:

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

工作流程

  1. 操作器的安装

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

    • 用户创建 TektonConfig 资源(或单个组件资源)
    • 定义期望的状态和配置
  3. 组件安装

    • 操作器检测到自定义资源
    • 安装指定的 Tekton 组件
    • 根据规范进行配置
  4. 生命周期管理

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

部署架构

基本组件

  1. 操作器部署

    • 包含控制器和 webhook
    • 需要集群级别的权限
    • 监视自定义资源
  2. 自定义资源

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

组件关系

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

  1. 依赖管理

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

    • 将公共设置传递给组件特定资源
    • 确保组件之间的一致性

安全架构

  1. RBAC 权限

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

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

可扩展性设计

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

参考资料