Tekton Trigger 介绍
背景
Tekton 的介绍请参考Tekton Pipeline 实战.
通常, CI/CD 事件应该包含如下信息:
- 确定事件的类型(比如 GitHub Push, GitLab Issue, Docker Hub Webhook 等)
- 可从特定管道访问并映射到特定管道 (从事件负载中获取 SHA 信息, 然后在管道中使用)
- 准确地触发管道 (基于有效负载值触发管道)
Tekton API 的设计分离了配置(比如 PipelineRun VS Pipeline), 保证了 step 可以被重用. 但是没有提供动态封装配置的机制来生成资源(尤其是 PipelineRun 和 PipelineResource). Triggers 通过下面的 CRDs 在架构上对 Tekton 进行了扩展:
TriggerTemplate: 创建资源的模板(比如用来创建 PipelineResource 和 PipelineRun)TriggerBinding: 校验事件并提取负载字段EventListener: 连接TriggerBinding和TriggerTemplate到可寻址的端点(事件接收器). 使用从各个TriggerBinding中提取的参数来创建TriggerTemplate中指定的 resources. 同样通过interceptor字段来指定外部服务来对事件负载进行预处理.ClusterTriggerBinding: cluster级别的TriggerBinding

安装
kubectl apply --filename https://storage.googleapis.com/tekton-releases/triggers/latest/release.yaml
检查新增的 CRD: kubectl api-resources | grep tekton. Triggers 引入了 3 个 CRD: TriggerTemplate, TriggerBinding,EventListener.
检查新增的 deployment: tekton-triggers-webhook, tekton-triggers-controller.