5.2. 创建触发器
Knative Eventing 中的触发器允许您根据要求将事件从代理路由到特定的订阅者。通过定义 Trigger,您可以动态将事件制作者连接到消费者,确保事件传送到正确的目的地。本节论述了创建 Trigger、配置其过滤器并验证其功能的步骤。无论您是处理简单路由需求还是复杂的事件驱动的工作流。
以下示例显示了 Triggers 的常见配置,演示了如何将事件路由到 Knative 服务或自定义端点。
到 Knative Serving 服务的路由事件示例
以下 Trigger 将所有事件从 default 代理路由到名为 my-service
的 Knative Serving 服务:
建议路由所有没有 过滤器
属性的事件进行调试。它允许您观察和分析所有传入的事件,帮助识别问题或验证通过代理的事件流,然后再应用特定的过滤器。要了解有关过滤的更多信息,请参阅高级触发器过滤器。
要应用此触发器,您可以将配置保存到文件中,例如 trigger.yaml
并运行以下命令:
oc apply -f trigger.yaml
$ oc apply -f trigger.yaml
到自定义路径的路由事件示例
此 Trigger 将所有事件从 default 代理路由到名为 my-service
的服务上的自定义路径 /my-custom-path
:
您可以将配置保存到文件中,如 custom-path-trigger.yaml
,并运行以下命令:
oc apply -f custom-path-trigger.yaml
$ oc apply -f custom-path-trigger.yaml
5.2.1. 创建触发器 复制链接链接已复制到粘贴板!
使用 OpenShift Container Platform Web 控制台提供了一个简化且直观的用户界面来创建触发器。在集群中安装 Knative Eventing 并创建了代理后,您可以使用 web 控制台创建触发器。
先决条件
- OpenShift Serverless Operator、Knative Serving 和 Knative Eventing 已在 OpenShift Container Platform 集群中安装。
- 已登陆到 web 控制台。
- 您已创建了一个项目,或者具有适当的角色和权限访问项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
- 您已创建了代理和 Knative 服务或其他事件 sink 以连接触发器。
流程
- 导航到 Topology 页面。
- 将鼠标悬停在您要创建触发器的代理上,并拖动箭头。此时会显示 Add Trigger 选项。
- 点 Add Trigger。
- 在 Subscriber 列表中选择您的接收器。
- 点 Add。
验证
- 创建订阅后,您可以在 Topology 页面中查看它,其中它是一个将代理连接到事件 sink 的行。
删除触发器
- 导航到 Topology 页面。
- 点您要删除的触发器。
- 在 Actions 上下文菜单中,选择 Delete Trigger。
5.2.2. 使用 Knative CLI 创建触发器 复制链接链接已复制到粘贴板!
您可以使用 kn trigger create
命令创建触发器。
先决条件
- OpenShift Serverless Operator 和 Knative Eventing 已安装在 OpenShift Container Platform 集群中。
-
已安装 Knative (
kn
) CLI。 - 您已创建了一个项目,或者具有适当的角色和权限访问项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
流程
创建触发器:
kn trigger create <trigger_name> --broker <broker_name> --filter <key=value> --sink <sink_name>
$ kn trigger create <trigger_name> --broker <broker_name> --filter <key=value> --sink <sink_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,您可以创建触发器并使用代理注入同时创建
default
代理:kn trigger create <trigger_name> --inject-broker --filter <key=value> --sink <sink_name>
$ kn trigger create <trigger_name> --inject-broker --filter <key=value> --sink <sink_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 默认情况下,触发器会将发送到代理的所有事件转发到订阅到该代理的 sink。通过对触发器使用
--filter
属性,您可以从代理过滤事件,这样订阅者才会根据您定义的标准接收一小部分事件。