Tekton Trigger 概述
Tekton Triggers是一个Tekton组件,它允许您从各种来源的事件中检测和提取信息,并基于该信息确定地实例化和执行TaskRuns和PipelineRuns。Tekton触发器还可以将从事件中提取的信息直接传递给TaskRuns和pipelinerun。在Kubernetes集群上安装Tekton Triggers作为Tekton Pipelines的扩展。
Tekton Triggers 关键组件
Tekton触发器包括一个运行在Kubernetes集群上的控制器服务,以及以下Kubernetes自定义资源定义(CRD),它们扩展了Tekton pipeline的功能以支持事件:
EventListener
以Pod形式运行于Kubernetes集群上,通过监听的特定端口接收Event,可以指定一个或多个Triggers。
Trigger
EventListener Pod用于监视并筛选Event时使用的筛选条件,由TriggerTemplate、TriggerBinding和Interceptor组成。
TriggerTemplate
指定当 EventListener 检测到事件时要实例化和/或执行的资源(例如 TaskRun 或 PipelineRun)。可以在资源模板中的任何位置使用的参数。
TriggerBinding
负责指定在事件上(由EventListener筛选出)感兴趣的字段,并从这些字段中取出数据传递给TriggerTemplate,而后,TriggerTemplate将相应的数据赋值给关联的TaskRun或PipelineRun资源上的参数。
ClusterInterceptor
TriggerBinding 的集群版本。
Interceptor
针对特定平台的事件处理器,在 TriggerBinding 之前运行,使您能够执行有效负载过滤、验证(使用机密)、转换、定义和测试触发条件以及其他有用的处理。一旦事件数据通过拦截器,它就会在将有效负载数据传递到 TriggerBinding 之前转到Trigger。
Tekton Triggers 工作流程
EventListener 是一个 Kubernetes 对象,用于侦听 Kubernetes 集群上指定端口上的事件。它公开了一个可寻址接收器,用于接收传入事件并指定一个或多个Triggers。sink是一个 Kubernetes 服务,在专用 Pod 内运行sink逻辑。
每个Trigger又允许您指定一个或多个 TriggerBindings(允许您从事件负载中提取字段及其值)以及一个或多个 TriggerTemplates(从相应的 TriggerBindings 接收字段值),并允许 Tekton Triggers使用该数据实例化资源,例如 TaskRuns 和 PipelineRuns。
如果您需要在将事件有效负载数据传递到 TriggerBinding 之前对其进行修改、过滤或验证,您可以选择指定一个或多个Interceptors.
Tekton Triggers 使用场景
1. 触发器监听 git commit 或 git pull request 事件。当它检测到一个事件,它会对提交的代码执行单元测试Pipeline。
2. 触发器侦听指示测试成功完成的 git Push 事件。当它检测到一个事件,它会验证测试的结果并执行构建测试代码的Pipeline。
3. 当关联的 PipelineRun 完成执行时,触发器会检查构建的结果,如果成功,则执行一个任务,将构建工件上传到您选择的 Docker registry。
4. 最后,Docker registry向 Pub/Sub 发送一个事件,这会触发一个 Pipeline,将构建工件推送到staging环境。
参考文档
https://tekton.dev/docs/triggers/
标签:Kubernetes,Triggers,基础,Tekton,Trigger,事件,TriggerBinding From: https://www.cnblogs.com/wangguishe/p/17875467.html