This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.5.5. 触发器
5.5.1. 触发器概述 复制链接链接已复制到粘贴板!
代理可与触发器结合使用,用于将事件源发送到事件 sink。事件从事件源发送到代理,作为 HTTP POST 请求。事件进入代理后,可使用触发器根据 CloudEvent 属性 进行过滤,并作为 HTTP POST 请求发送到事件 sink。
如果使用 Kafka 代理,您可以将事件的交付顺序从触发器配置为事件 sink。请参阅为触发器配置事件交付顺序。
5.5.1.1. 为触发器配置事件交付顺序 复制链接链接已复制到粘贴板!
如果使用 Kafka 代理,您可以将事件的交付顺序从触发器配置为事件 sink。
先决条件
- OpenShift Serverless Operator、Knative Eventing 和 Knative Kafka 安装在 OpenShift Container Platform 集群中。
- Kafka 代理被启用在集群中使用,您也创建了一个 Kafka 代理。
- 您已创建了一个项目,或者具有适当的角色和权限访问项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
-
已安装 OpenShift (
oc) CLI。
流程
创建或修改
Trigger对象并设置kafka.eventing.knative.dev/delivery.order注解:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 支持的消费者交付保证有:
unordered- 未排序的消费者是一种非阻塞消费者,它能以未排序的方式提供消息,同时保持正确的偏移管理。
排序的一个订购的消费者是一个按分区阻止消费者,在提供分区的下一个消息前等待来自 CloudEvent 订阅者成功响应。
默认排序保证是
unordered。
应用
Trigger对象:oc apply -f <filename>
$ oc apply -f <filename>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.5.1.2. 后续步骤 复制链接链接已复制到粘贴板!
- 配置事件交付参数,当事件无法发送到事件 sink 时。请参阅配置事件交付参数的示例。
5.5.2. 创建触发器 复制链接链接已复制到粘贴板!
代理可与触发器结合使用,用于将事件源发送到事件 sink。事件从事件源发送到代理,作为 HTTP POST 请求。事件进入代理后,可使用触发器根据 CloudEvent 属性 进行过滤,并作为 HTTP POST 请求发送到事件 sink。
5.5.2.1. 使用 Administrator 视角创建触发器 复制链接链接已复制到粘贴板!
使用 OpenShift Container Platform Web 控制台提供了一个简化且直观的用户界面来创建触发器。在集群中安装 Knative Eventing 并创建了代理后,您可以使用 web 控制台创建触发器。
先决条件
- OpenShift Serverless Operator 和 Knative Eventing 已安装在 OpenShift Container Platform 集群中。
- 您已登录到 Web 控制台,且处于 Administrator 视角。
- 具有集群管理员 OpenShift Container Platform 的权限。
- 您已创建了 Knative 代理。
- 您已创建了 Knative 服务以用作订阅者。
流程
-
在 OpenShift Container Platform Web 控制台的 Administrator 视角中,导航到 Serverless
Eventing。 -
在 Broker 选项卡中,为您要在其中添加触发器的代理选择 Options 菜单
。
- 点列表中的 Add Trigger。
- 在 Add Trigger 对话框中,为触发器选择 Subscriber。订阅者是可以从代理接收事件的 Knative 服务。
- 点击 Add。
5.5.2.2. 使用 Developer 视角创建触发器 复制链接链接已复制到粘贴板!
使用 OpenShift Container Platform Web 控制台提供了一个简化且直观的用户界面来创建触发器。在集群中安装 Knative Eventing 并创建了代理后,您可以使用 web 控制台创建触发器。
先决条件
- OpenShift Serverless Operator、Knative Serving 和 Knative Eventing 已在 OpenShift Container Platform 集群中安装。
- 已登陆到 web 控制台。
- 您已创建了一个项目,或者具有适当的角色和权限访问项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
- 您已创建了代理和 Knative 服务或其他事件 sink 以连接触发器。
流程
- 在 Developer 视角中,进入 Topology 页。
- 将鼠标悬停在您要创建触发器的代理上,并拖动箭头。此时会显示 Add Trigger 选项。
- 点 Add Trigger。
- 在 Subscriber 列表中选择您的接收器。
- 点 Add。
验证
- 创建订阅后,您可以在 Topology 页面中查看它,其中它是一个将代理连接到事件 sink 的行。
删除触发器
- 在 Developer 视角中,进入 Topology 页。
- 点您要删除的触发器。
- 在 Actions 上下文菜单中,选择 Delete Trigger。
5.5.2.3. 使用 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属性,您可以从代理过滤事件,这样订阅者才会根据您定义的标准接收一小部分事件。
5.5.3. 从命令行列出触发器 复制链接链接已复制到粘贴板!
使用 Knative (kn) CLI 列出触发器提供精简、直观的用户界面。
5.5.3.1. 使用 Knative CLI 列出触发器 复制链接链接已复制到粘贴板!
您可以使用 kn trigger list 命令列出集群中的现有触发器。
先决条件
- OpenShift Serverless Operator 和 Knative Eventing 已安装在 OpenShift Container Platform 集群中。
-
已安装 Knative (
kn) CLI。
流程
显示可用触发器列表:
kn trigger list
$ kn trigger listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME BROKER SINK AGE CONDITIONS READY REASON email default ksvc:edisplay 4s 5 OK / 5 True ping default ksvc:edisplay 32s 5 OK / 5 True
NAME BROKER SINK AGE CONDITIONS READY REASON email default ksvc:edisplay 4s 5 OK / 5 True ping default ksvc:edisplay 32s 5 OK / 5 TrueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:以 JSON 格式输出触发器列表:
kn trigger list -o json
$ kn trigger list -o jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.5.4. 描述从命令行中的触发器 复制链接链接已复制到粘贴板!
使用 Knative (kn) CLI 描述触发器,提供了一个简化且直观的用户界面。
5.5.4.1. 使用 Knative CLI 描述触发器 复制链接链接已复制到粘贴板!
您可以通过 kn trigger describe 命令使用 Knative CLI 输出集群中现有触发器的信息。
先决条件
- OpenShift Serverless Operator 和 Knative Eventing 已安装在 OpenShift Container Platform 集群中。
-
已安装 Knative (
kn) CLI。 - 您已创建了触发器。
流程
输入命令:
kn trigger describe <trigger_name>
$ kn trigger describe <trigger_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.5.5. 将触发器连接到 sink 复制链接链接已复制到粘贴板!
您可以将触发器连接到 sink,以便在将代理的事件发送到 sink 前过滤代理的事件。在 Trigger 对象的资源规格中,连接到触发器的 sink 会配置为 订阅者。
连接到 Kafka sink 的 Trigger 对象示例
5.5.6. 从命令行过滤触发器 复制链接链接已复制到粘贴板!
使用 Knative (kn) CLI 使用 kn CLI 通过触发器过滤事件,可提供精简且直观的用户界面。您可以使用 kn trigger create 命令和适当的标记来通过使用触发器过滤事件。
5.5.6.1. 使用 Knative CLI 使用触发器过滤事件 复制链接链接已复制到粘贴板!
在以下触发器示例中,只有带有属性 type: dev.knative.samples.helloworld 的事件才会发送到事件 sink:
kn trigger create <trigger_name> --broker <broker_name> --filter type=dev.knative.samples.helloworld --sink ksvc:<service_name>
$ kn trigger create <trigger_name> --broker <broker_name> --filter type=dev.knative.samples.helloworld --sink ksvc:<service_name>
您还可以使用多个属性过滤事件。以下示例演示了如何使用类型、源和扩展属性过滤事件:
kn trigger create <trigger_name> --broker <broker_name> --sink ksvc:<service_name> \ --filter type=dev.knative.samples.helloworld \ --filter source=dev.knative.samples/helloworldsource \ --filter myextension=my-extension-value
$ kn trigger create <trigger_name> --broker <broker_name> --sink ksvc:<service_name> \
--filter type=dev.knative.samples.helloworld \
--filter source=dev.knative.samples/helloworldsource \
--filter myextension=my-extension-value
5.5.7. 从命令行更新触发器 复制链接链接已复制到粘贴板!
使用 Knative (kn) CLI 更新触发器提供精简、直观的用户界面。
5.5.7.1. 使用 Knative CLI 更新触发器 复制链接链接已复制到粘贴板!
您可以使用带有特定标志的 kn trigger update 命令来更新触发器的属性。
先决条件
- OpenShift Serverless Operator 和 Knative Eventing 已安装在 OpenShift Container Platform 集群中。
-
已安装 Knative (
kn) CLI。 - 您已创建了一个项目,或者具有适当的角色和权限访问项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
流程
更新触发器:
kn trigger update <trigger_name> --filter <key=value> --sink <sink_name> [flags]
$ kn trigger update <trigger_name> --filter <key=value> --sink <sink_name> [flags]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以更新触发器来过滤与传入事件匹配的事件属性。例如,使用
type属性:kn trigger update <trigger_name> --filter type=knative.dev.event
$ kn trigger update <trigger_name> --filter type=knative.dev.eventCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以从触发器中删除过滤器属性。例如,您可以使用键
type来删除过滤器属性:kn trigger update <trigger_name> --filter type-
$ kn trigger update <trigger_name> --filter type-Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用
--sink参数来更改触发器的事件 sink:kn trigger update <trigger_name> --sink ksvc:my-event-sink
$ kn trigger update <trigger_name> --sink ksvc:my-event-sinkCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.5.8. 从命令行删除触发器 复制链接链接已复制到粘贴板!
使用 Knative (kn) CLI 删除触发器提供精简而直观的用户界面。
5.5.8.1. 使用 Knative CLI 删除触发器 复制链接链接已复制到粘贴板!
您可以使用 kn trigger delete 命令删除触发器。
先决条件
- OpenShift Serverless Operator 和 Knative Eventing 已安装在 OpenShift Container Platform 集群中。
-
已安装 Knative (
kn) CLI。 - 您已创建了一个项目,或者具有适当的角色和权限访问项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
流程
删除触发器:
kn trigger delete <trigger_name>
$ kn trigger delete <trigger_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
列出现有触发器:
kn trigger list
$ kn trigger listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证触发器不再存在:
输出示例
No triggers found.
No triggers found.Copy to Clipboard Copied! Toggle word wrap Toggle overflow