Tekton Triggers(触发器)
Tekton Triggers是一个Tekton组件,允许你从各种来源的事件中检测和提取信息,并根据这些信息确定性地实例化和执行TaskRuns
和PipelineRuns
。Tekton Triggers还可将从事件中提取的信息直接传递给TaskRuns
和PipelineRuns
。你可以在Kubernetes集群上安装Tekton Triggers,作为Tekton Pipelines的扩展。
Triggers是如何工作的?
Tekton Triggers 由在 Kubernetes 集群上运行的控制器服务以及以下 Kubernetes 自定义资源定义 (CRD) 组成,后者将 Tekton Pipelines 的功能扩展到支持事件:
EventListener - 监听Kubernetes集群上指定端口的事件。指定一个或多个
Triggers
。Trigger - 指定当
EventListener
检测到一个事件时会发生什么。一个Trigger
指定一个TriggerTemplate
,一个TriggerBinding
,以及可选的一个Interceptor(拦截器)
。TriggerTemplate - 指定资源的蓝图,如
TaskRun
或PipelineRun
,当你的EventListener
察觉到一个事件时,你想实例化和/或执行。它暴露了一些参数,你可以在你的资源模板的任何地方使用。TriggerBinding - 指定事件负载中的字段,你想从中提取数据,并在相应的
TriggerTemplate
中填充提取的值。然后你可以使用TriggerTemplate
中的填充字段来填充相关TaskRun
或PipelineRun
中的字段。ClusterTriggerBinding - 一个集群范围内的
TriggerBinding
版本,对于在你的集群内重复使用特别有用。Interceptor - 指定平台的“catch-all(捕获所有)”事件处理器,在
TriggerBinding
之前运行,使你能够进行过滤、验证(使用secret)、转换、定义和测试触发条件以及其他有用的处理。一旦事件数据通过拦截器,在你将负载数据传递给TriggerBinding
之前,它会进入Trigger。
我可以用Triggers做什么?
比如,你可以用触发器实现以下CI/CD
工作流程。
触发器监听
git commit
或git pull
请求事件。当它察觉到一个事件时,它会在提交的代码上执行一个单元测试`Pipeline'。触发器监听一个
git push
事件,表示测试成功完成。当它探测到一个事件时,它会验证测试的结果并执行一个Pipeline
来构建测试的代码。当关联的
PipelineRun
完成执行时,Triggers检查构建的结果,如果成功的话,执行一个Task
,将构建的artifacts(如docker镜像)
上传到你选择的Docker注册中心。最后,Docker注册中心向
Pub/Sub
发送一个事件,触发Pipeline
,将构建的镜像推送到临时环境。