创建通道和事件接收器后,您可以创建订阅以启用事件传递。订阅是通过配置 `Subscription` 对象创建的,该对象指定通道和接收事件的接收器(也称为 *订阅者*)。
创建通道和事件接收器(也称为 *订阅者*)后,您可以创建订阅以启用事件传递。订阅是通过配置 `Subscription` 对象创建的,该对象指定通道和将事件传递到的订阅者。您还可以指定一些特定于订阅者的选项,例如如何处理故障。
OpenShift Serverless Operator 和 Knative Eventing 已安装在您的 OpenShift Container Platform 集群上。
您已登录到 Web 控制台,并且处于 **管理员** 视角。
您拥有 OpenShift Container Platform 的集群管理员权限,或者您拥有 Red Hat OpenShift Service on AWS 或 OpenShift Dedicated 的集群或专用管理员权限。
您已创建 Knative 通道。
您已创建用作订阅者的 Knative 服务。
在 OpenShift Container Platform Web 控制台的 **管理员** 视角中,导航到 **无服务器** → **事件**。
在**通道**选项卡中,选择目标通道的选项菜单以添加订阅。
单击列表中的**添加订阅**。
在**添加订阅**对话框中,为订阅选择一个**订阅者**。订阅者是接收来自通道事件的Knative服务。
单击**添加**。
创建通道和事件接收器后,您可以创建订阅以启用事件传递。使用OpenShift Container Platform Web控制台提供了一个简化且直观的用户界面来创建订阅。
OpenShift Serverless Operator、Knative Serving和Knative Eventing已安装在您的OpenShift Container Platform集群上。
您已登录到Web控制台。
您已创建事件接收器(例如Knative服务)和通道。
您已创建项目或有权访问具有在OpenShift Container Platform中创建应用程序和其他工作负载的适当角色和权限的项目。
在**开发者**视角中,导航到**拓扑**页面。
使用以下任一方法创建订阅
将鼠标悬停在要为其创建订阅的通道上,然后拖动箭头。将显示**添加订阅**选项。
在**订阅者**列表中选择您的接收器。
单击**添加**。
如果服务在与通道相同的命名空间或项目下的**拓扑**视图中可用,请单击要为其创建订阅的通道,然后将箭头直接拖动到服务,即可立即从通道创建到该服务的订阅。
创建订阅后,您可以在**拓扑**视图中将其显示为连接通道和服务的线。
创建通道和事件接收器后,您可以创建订阅以启用事件传递。使用YAML文件创建Knative资源使用声明式API,使您可以声明性地且可重复地描述订阅。要使用YAML创建订阅,您必须创建一个定义Subscription
对象的YAML文件,然后使用oc apply
命令应用它。
OpenShift Serverless Operator和Knative Eventing已安装在集群上。
安装OpenShift CLI(oc
)。
您已创建项目或有权访问具有在OpenShift Container Platform中创建应用程序和其他工作负载的适当角色和权限的项目。
创建Subscription
对象
创建一个YAML文件并将以下示例代码复制到其中
apiVersion: messaging.knative.dev/v1
kind: Subscription
metadata:
name: my-subscription (1)
namespace: default
spec:
channel: (2)
apiVersion: messaging.knative.dev/v1
kind: Channel
name: example-channel
delivery: (3)
deadLetterSink:
ref:
apiVersion: serving.knative.dev/v1
kind: Service
name: error-handler
subscriber: (4)
ref:
apiVersion: serving.knative.dev/v1
kind: Service
name: event-display
1 | 订阅的名称。 |
2 | 订阅连接到的通道的配置设置。 |
3 | 事件传递的配置设置。这告诉订阅无法传递给订阅者的事件会发生什么。配置此设置后,无法消费的事件将发送到deadLetterSink 。事件将被丢弃,不会尝试重新传递事件,并且系统中会记录错误。deadLetterSink 值必须是Destination。 |
4 | 订阅者的配置设置。这是从通道传递事件的事件接收器。 |
应用YAML文件
$ oc apply -f <filename>
创建通道和事件接收器后,您可以创建订阅以启用事件传递。使用Knative (kn
) CLI创建订阅比直接修改YAML文件提供了更简化和直观的用户界面。您可以使用带有适当标志的kn subscription create
命令来创建订阅。
OpenShift Serverless Operator 和 Knative Eventing 已安装在您的 OpenShift Container Platform 集群上。
您已安装Knative (kn
) CLI。
您已创建项目或有权访问具有在OpenShift Container Platform中创建应用程序和其他工作负载的适当角色和权限的项目。
创建订阅以将接收器连接到通道
$ kn subscription create <subscription_name> \
--channel <group:version:kind>:<channel_name> \ (1)
--sink <sink_prefix>:<sink_name> \ (2)
--sink-dead-letter <sink_prefix>:<sink_name> (3)
1 | --channel 指定应处理的云事件的源。您必须提供通道名称。如果您没有使用由Channel 自定义资源支持的默认InMemoryChannel 通道,则必须在通道名称前加上指定通道类型的<group:version:kind> 。例如,对于Apache Kafka支持的通道,这将是messaging.knative.dev:v1beta1:KafkaChannel 。 |
2 | --sink 指定应将事件传递到的目标目的地。默认情况下,<sink_name> 被解释为此名称的Knative服务,位于与订阅相同的命名空间中。您可以使用以下前缀之一来指定接收器的类型
|
3 | 可选:--sink-dead-letter 是一个可选标志,可用于指定在事件无法传递的情况下应将事件发送到的接收器。有关更多信息,请参阅OpenShift Serverless的*事件传递*文档。示例命令
示例输出
|
要确认通道是否通过订阅连接到事件接收器或*订阅者*,请列出现有订阅并检查输出
$ kn subscription list
NAME CHANNEL SUBSCRIBER REPLY DEAD LETTER SINK READY REASON
mysubscription Channel:mychannel ksvc:event-display True
删除订阅
$ kn subscription delete <subscription_name>
配置事件传递参数,这些参数在事件无法传递到事件接收器的情况下应用。