架构

架构概述

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

Tekton Pipelines 架构图

核心组件

1. 任务

任务是 Tekton Pipelines 的基本构建块:

  • 定义一系列要执行的步骤
  • 在 Kubernetes Pods 中运行
  • 可以接受输入并生成输出
  • 按顺序执行步骤

主要特征:

  • 每个步骤在其自身的容器中运行
  • 步骤共享工作区卷
  • 支持参数化
  • 可以定义资源需求

2. 任务运行

任务运行是任务的运行时实例:

  • 创建一个 Pod 来执行任务
  • 管理任务执行的生命周期
  • 收集并存储执行结果
  • 处理资源分配

工作流程:

  1. 创建一个包含每个步骤容器的 Pod
  2. 按顺序执行步骤
  3. 管理步骤之间的共享卷
  4. 收集执行结果和状态

3. 流水线

流水线定义了一系列要执行的任务:

  • 协调整个多个任务
  • 定义执行顺序和依赖关系
  • 管理任务间的数据流
  • 支持条件执行

关键特性:

  • 任务依赖关系管理
  • 任务之间的参数传递
  • 任务之间的工作区共享
  • 使用 when 表达式的条件执行
  • 使用 runAfter 的并行执行

4. 流水线运行

流水线运行是流水线的运行时实例:

  • 为流水线中的每个任务创建任务运行
  • 管理执行流程
  • 处理资源分配
  • 收集并存储执行结果

主要职责:

  • 协调任务运行的创建
  • 管理执行顺序
  • 处理参数传递
  • 跟踪整体执行状态

5. 工作区

工作区提供了一个共享数据的机制:

  • 任务之间的共享存储
  • 支持各种卷类型
  • 灵活的挂载选项
  • 在任务执行之间保持数据持久性

支持的存储类型:

  • PersistentVolumeClaims
  • ConfigMaps
  • Secrets
  • EmptyDir 卷
  • CSI(容器存储接口)卷
  • 投影卷

工作流程

  1. 流水线定义

    • 定义带有步骤的任务
    • 定义具有任务依赖关系的流水线
    • 配置参数和工作区
  2. 流水线执行

    • 创建一个流水线运行资源
    • 控制器基于依赖关系创建任务运行
    • 任务运行创建 Pods 来执行步骤
    • 收集结果并更新状态
  3. 数据流

    • 参数在流水线组件之间传递数据
    • 工作区在任务之间共享文件
    • 任务的结果可以在后续任务中使用
  4. 完成

    • 所有任务运行完成
    • 流水线运行状态更新
    • 结果存储并可以检索

部署架构

控制器组件

  1. Tekton 流水线控制器

    • 监视 Tekton CRD 实例
    • 创建和管理 Kubernetes 资源
    • 处理生命周期管理
    • 更新状态信息
  2. Tekton Webhook

    • 验证 Tekton 资源
    • 应用默认值
    • 确保资源一致性
  3. Tekton 远程解析器

    • 从远程源解析任务和流水线定义
    • 支持 OCI 包
    • 支持基于 Git 的解析
    • 支持基于 HTTP 的解析

运行时组件

  1. 任务运行 Pods

    • 每个步骤的容器
    • 用于初始化的容器
    • 用于工作区的共享卷
    • 提供特殊功能的侧车
  2. 资源管理

    • Pod 调度
    • 资源请求和限制
    • 节点选择和亲和性
    • 优先级类

安全架构

认证机制

  1. 服务账户集成
    • 任务运行和流水线运行使用服务账户
    • 支持 Kubernetes RBAC
    • 证书的密钥管理

授权控制

  1. 资源访问控制

    • 基于角色的访问控制
    • 名称空间隔离
    • 资源配额
  2. 执行安全

    • Pod 安全上下文
    • 网络策略
    • 安全处理工作区

可扩展性设计

1. 自定义任务

  • 超出容器执行的扩展
  • 自定义资源实现
  • 与外部系统集成

2. 远程解析

  • 远程任务和流水线定义
  • 支持 OCI 包
  • 基于 Git 的解析
  • 基于 HTTP 的解析

3. 结果和指标

  • 任务和流水线结果
  • 执行指标
  • 与可观察性系统集成
  • 自定义结果处理器