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

核心组件
1. EventListener(事件监听器)
EventListener 是整个系统的入口点,它:
- 创建一个 Kubernetes Service 和 Pod
- 暴露 HTTP 端点以接收外部事件
- 管理事件的处理流程
- 支持多种认证方式
主要职责:
- 接收和验证 Webhook 事件
- 根据配置调用相应的拦截器
- 执行触发器逻辑
- 创建 Kubernetes 资源
2. Trigger(触发器)
Trigger 定义了如何处理接收到的事件,它包含:
- TriggerBinding:数据提取规则
- TriggerTemplate:资源模板
- Interceptors:事件拦截器(可选)
工作流程:
- 接收事件数据
- 通过拦截器处理(如果配置)
- 使用 TriggerBinding 提取数据
- 将数据应用到 TriggerTemplate
3. Interceptor(拦截器)
拦截器在事件处理流程中提供额外的处理层:
支持两种类型:
- 内置拦截器
- GitHub
- GitLab
- Bitbucket
- CEL(通用表达式语言)
- 自定义拦截器
4. TriggerBinding(触发器绑定)
负责从事件数据中提取信息:
- 定义数据映射规则
- 支持 JSONPath 语法
- 可以是集群级或命名空间级
主要功能:
5. TriggerTemplate(触发器模板)
定义要创建的 Kubernetes 资源:
特点:
工作流程
-
事件接收
- 外部系统发送 Webhook 到 EventListener
- EventListener 验证请求
-
拦截器处理
- 调用配置的拦截器链
- 执行验证和转换
- 可以终止或修改请求
-
数据提取
- TriggerBinding 从事件中提取数据
- 应用数据映射规则
- 准备参数
-
资源创建
- TriggerTemplate 使用提取的数据
- 替换模板中的参数
- 创建 Kubernetes 资源
部署架构
基础组件
-
EventListener Pod
- 运行事件接收服务
- 包含核心处理逻辑
- 需要特定的 RBAC 权限
-
EventListener Service
- 暴露 HTTP 端点
- 支持不同的服务类型
- 可配置 TLS
可选组件
-
Interceptor 服务
- 独立部署的拦截器
- 自定义事件处理逻辑
- 需要网络可达性
-
Ingress/Route
安全架构
认证机制
-
Webhook 认证
- Secret Token 验证
- 签名验证
- OAuth 集成
-
Kubernetes 认证
- ServiceAccount
- RBAC 权限
- Secret 管理
授权控制
-
资源访问控制
-
网络安全
扩展性设计
1. 自定义拦截器
2. 资源模板