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,将构建的镜像推送到临时环境。
