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
.