架构
目录
架构概述核心组件1. EventListener2. Trigger3. Interceptor4. TriggerBinding5. TriggerTemplate工作流程部署架构基本组件可选组件安全架构认证机制授权控制可扩展性设计1. 自定义 Interceptor2. 资源模板架构概述
Tekton Triggers 是一个基于 Kubernetes 的事件监听和处理系统,它通过将外部事件(如 Git 提交、镜像推送等)转换为 Kubernetes 资源,从而实现 CI/CD pipeline 的自动触发。
核心组件
1. EventListener
EventListener 是整个系统的入口点。它:
- 创建一个 Kubernetes Service 和 Pod
- 暴露用于接收外部事件的 HTTP endpoint
- 管理事件处理流程
- 支持多种认证方法
主要职责:
- 接收并验证 Webhook 事件
- 根据配置调用相应的 interceptor
- 执行 trigger 逻辑
- 创建 Kubernetes 资源
2. Trigger
Trigger 定义了如何处理接收到的事件,它包括:
- TriggerBinding:数据提取规则
- TriggerTemplate:资源模板
- Interceptors:事件 interceptor(可选)
工作流程:
- 接收事件数据
- 通过 interceptor 进行处理(如果已配置)
- 使用 TriggerBinding 提取数据
- 将数据应用到 TriggerTemplate
3. Interceptor
Interceptor 在事件处理工作流中提供了一个额外的处理层:
- 事件过滤
- 载荷验证
- 数据转换
- 认证和授权
它支持两种类型:
- 内置 Interceptor
- GitHub
- GitLab
- Bitbucket
- CEL (Common Expression Language)
- 自定义 Interceptor
- 独立部署的服务
- 实现标准接口
- 高扩展性
4. TriggerBinding
负责从事件数据中提取信息:
- 定义数据映射规则
- 支持 JSONPath 语法
- 可为集群级别或命名空间级别
主要功能:
- 参数提取
- 数据转换
- 变量映射
5. TriggerTemplate
定义要创建的 Kubernetes 资源:
- 支持参数化模板
- 可以创建多个资源
- 支持动态命名
特性:
- 资源模板化
- 参数替换
- 动态生成名称
工作流程
-
事件接收
- 外部系统向 EventListener 发送 Webhook
- EventListener 验证请求
-
Interceptor 处理
- 调用已配置的 interceptor 链
- 执行验证和转换
- 可以终止或修改请求
-
数据提取
- TriggerBinding 从事件中提取数据
- 应用数据映射规则
- 准备参数
-
资源创建
- TriggerTemplate 使用提取的数据
- 替换模板中的参数
- 创建 Kubernetes 资源
部署架构
基本组件
-
EventListener Pod
- 运行事件接收服务
- 包含核心处理逻辑
- 需要特定的 RBAC 权限
-
EventListener Service
- 暴露 HTTP endpoint
- 支持不同的 Service 类型
- 可配置 TLS
可选组件
-
Interceptor Service
- 独立部署的 interceptor
- 自定义事件处理逻辑
- 需要网络可达性
-
Ingress/Route
- 外部访问配置
- TLS 终止
- 路由规则
安全架构
认证机制
-
Webhook 认证
- Secret Token 验证
- 签名验证
- OAuth 集成
-
Kubernetes 认证
- ServiceAccount
- RBAC 权限
- Secret 管理
授权控制
-
资源访问控制
- 基于角色的访问控制
- 命名空间隔离
- 最小权限原则
-
网络安全
- TLS 加密
- 网络策略
- 访问限制
可扩展性设计
1. 自定义 Interceptor
- 标准 HTTP 接口
- 灵活的部署选项
- 可插拔架构
2. 资源模板
- 支持多种资源类型
- 参数化配置
- 动态生成