架构

架构概述

Tekton Triggers 是一个基于 Kubernetes 的事件监听和处理系统,它通过将外部事件(如 Git 提交、镜像推送等)转换为 Kubernetes 资源来实现 CI/CD 流水线的自动触发。

Tekton Triggers 架构图

核心组件

1. EventListener(事件监听器)

EventListener 是整个系统的入口点,它:

  • 创建一个 Kubernetes Service 和 Pod
  • 暴露 HTTP 端点以接收外部事件
  • 管理事件的处理流程
  • 支持多种认证方式

主要职责:

  • 接收和验证 Webhook 事件
  • 根据配置调用相应的拦截器
  • 执行触发器逻辑
  • 创建 Kubernetes 资源

2. Trigger(触发器)

Trigger 定义了如何处理接收到的事件,它包含:

  • TriggerBinding:数据提取规则
  • TriggerTemplate:资源模板
  • Interceptors:事件拦截器(可选)

工作流程:

  1. 接收事件数据
  2. 通过拦截器处理(如果配置)
  3. 使用 TriggerBinding 提取数据
  4. 将数据应用到 TriggerTemplate

3. Interceptor(拦截器)

拦截器在事件处理流程中提供额外的处理层:

  • 事件过滤
  • 负载验证
  • 数据转换
  • 认证与授权

支持两种类型:

  1. 内置拦截器
    • GitHub
    • GitLab
    • Bitbucket
    • CEL(通用表达式语言)
  2. 自定义拦截器
    • 独立部署的服务
    • 实现标准接口
    • 高度可扩展

4. TriggerBinding(触发器绑定)

负责从事件数据中提取信息:

  • 定义数据映射规则
  • 支持 JSONPath 语法
  • 可以是集群级或命名空间级

主要功能:

  • 参数提取
  • 数据转换
  • 变量映射

5. TriggerTemplate(触发器模板)

定义要创建的 Kubernetes 资源:

  • 支持参数化模板
  • 可以创建多个资源
  • 支持动态命名

特点:

  • 资源模板化
  • 参数替换
  • 动态生成名称

工作流程

  1. 事件接收

    • 外部系统发送 Webhook 到 EventListener
    • EventListener 验证请求
  2. 拦截器处理

    • 调用配置的拦截器链
    • 执行验证和转换
    • 可以终止或修改请求
  3. 数据提取

    • TriggerBinding 从事件中提取数据
    • 应用数据映射规则
    • 准备参数
  4. 资源创建

    • TriggerTemplate 使用提取的数据
    • 替换模板中的参数
    • 创建 Kubernetes 资源

部署架构

基础组件

  1. EventListener Pod

    • 运行事件接收服务
    • 包含核心处理逻辑
    • 需要特定的 RBAC 权限
  2. EventListener Service

    • 暴露 HTTP 端点
    • 支持不同的服务类型
    • 可配置 TLS

可选组件

  1. Interceptor 服务

    • 独立部署的拦截器
    • 自定义事件处理逻辑
    • 需要网络可达性
  2. Ingress/Route

    • 外部访问配置
    • TLS 终止
    • 路由规则

安全架构

认证机制

  1. Webhook 认证

    • Secret Token 验证
    • 签名验证
    • OAuth 集成
  2. Kubernetes 认证

    • ServiceAccount
    • RBAC 权限
    • Secret 管理

授权控制

  1. 资源访问控制

    • 基于角色的访问控制
    • 命名空间隔离
    • 最小权限原则
  2. 网络安全

    • TLS 加密
    • 网络策略
    • 访问限制

扩展性设计

1. 自定义拦截器

  • 标准 HTTP 接口
  • 灵活的部署选项
  • 可插拔架构

2. 资源模板

  • 支持多种资源类型
  • 参数化配置
  • 动态生成