6.2. 创建频道
频道是定义单一事件转发和持久层的自定义资源。事件源或生成程序在将事件发送到频道后,可使用订阅将这些事件发送到多个 Knative 服务或其他 sink。
您可以通过实例化受支持的 Channel
对象来创建频道,并通过修改 Subscription
对象中的 delivery
规格来配置重新发送尝试。
6.2.1. 使用 Administrator 视角创建频道 复制链接链接已复制到粘贴板!
在集群中安装 Knative Eventing 后,您可以使用 Administrator 视角创建频道。
先决条件
- OpenShift Serverless Operator 和 Knative Eventing 已安装在 OpenShift Container Platform 集群中。
- 您已登录到 Web 控制台,且处于 Administrator 视角。
- 在 OpenShift Container Platform 上具有集群管理员权限,或者对 Red Hat OpenShift Service on AWS 或 OpenShift Dedicated 有集群或专用管理员权限。
流程
-
在 OpenShift Container Platform Web 控制台的 Administrator 视角中,导航到 Serverless
Eventing。 - 在 Create 列表中,选择 Channel。您将被定向到 Channel 页。
选择您要在 Type 列表中创建的
Channel
对象类型。注意目前默认只支持
InMemoryChannel
频道对象。如果您在 OpenShift Serverless 上安装了 Apache Kafka 的 Knative 代理实现,则 Apache Kafka 的 Knative 频道可用。- 点 Create。
6.2.2. 使用 Developer 视角创建频道 复制链接链接已复制到粘贴板!
使用 OpenShift Container Platform Web 控制台提供了一个简化的用户界面来创建频道。在集群中安装 Knative Eventing 后,您可以使用 web 控制台创建频道。
先决条件
- 已登陆到 OpenShift Container Platform Web 控制台。
- OpenShift Serverless Operator 和 Knative Eventing 已安装在 OpenShift Container Platform 集群中。
- 您已创建了一个项目,或者具有适当的角色和权限访问项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
流程
-
在 Developer 视角中,导航到 +Add
Channel。 -
选择您要在 Type 列表中创建的
Channel
对象类型。 - 点 Create。
验证
通过导航到 Topology 页面确认频道现在存在。
6.2.3. 使用 Knative CLI 创建频道 复制链接链接已复制到粘贴板!
使用 Knative (kn
) 创建频道提供了比直接修改 YAML 文件更精简且直观的用户界面。您可以使用 kn channel create
命令创建频道。
先决条件
- 在集群中安装了 OpenShift Serverless Operator 和 Knative Eventing。
-
已安装 Knative (
kn
) CLI。 - 您已创建了一个项目,或者具有适当的角色和权限访问项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
流程
创建频道:
kn channel create <channel_name> --type <channel_type>
$ kn channel create <channel_name> --type <channel_type>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 频道类型是可选的,但如果指定,则必须使用
Group:Version:Kind
格式。例如,您可以创建一个InMemoryChannel
对象:kn channel create mychannel --type messaging.knative.dev:v1:InMemoryChannel
$ kn channel create mychannel --type messaging.knative.dev:v1:InMemoryChannel
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Channel 'mychannel' created in namespace 'default'.
Channel 'mychannel' created in namespace 'default'.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
要确认该频道现在存在,请列出现有频道并检查输出:
kn channel list
$ kn channel list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
kn channel list NAME TYPE URL AGE READY REASON mychannel InMemoryChannel http://mychannel-kn-channel.default.svc.cluster.local 93s True
kn channel list NAME TYPE URL AGE READY REASON mychannel InMemoryChannel http://mychannel-kn-channel.default.svc.cluster.local 93s True
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
删除频道
删除频道:
kn channel delete <channel_name>
$ kn channel delete <channel_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.2.4. 使用 YAML 创建默认实现频道 复制链接链接已复制到粘贴板!
使用 YAML 文件创建 Knative 资源使用声明性 API,它允许您以声明性的方式描述频道,并以可重复的方式描述频道。要使用 YAML 创建无服务器频道,您必须创建一个 YAML 文件来定义 Channel
对象,然后使用 oc apply
命令应用它。
先决条件
- 在集群中安装了 OpenShift Serverless Operator 和 Knative Eventing。
-
安装 OpenShift CLI (
oc
) 。 - 您已创建了一个项目,或者具有适当的角色和权限访问项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
流程
创建一个
Channel
对象作为一个 YAML 文件:apiVersion: messaging.knative.dev/v1 kind: Channel metadata: name: example-channel namespace: default
apiVersion: messaging.knative.dev/v1 kind: Channel metadata: name: example-channel namespace: default
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用 YAML 文件:
oc apply -f <filename>
$ oc apply -f <filename>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.2.5. 使用 YAML 为 Apache Kafka 创建频道 复制链接链接已复制到粘贴板!
使用 YAML 文件创建 Knative 资源使用声明性 API,它允许您以声明性的方式描述频道,并以可重复的方式描述频道。您可以通过创建一个 Kafka 频道,创建由 Kafka 主题支持的 Knative Eventing 频道。要使用 YAML 创建 Kafka 频道,您必须创建一个 YAML 文件来定义 KafkaChannel
对象,然后使用 oc apply
命令应用它。
先决条件
-
OpenShift Serverless Operator、Knative Eventing 和
KnativeKafka
自定义资源已安装在 OpenShift Container Platform 集群中。 -
安装 OpenShift CLI (
oc
) 。 - 您已创建了一个项目,或者具有适当的角色和权限访问项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
流程
创建一个
KafkaChannel
对象作为一个 YAML 文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要仅支持 OpenShift Serverless 上的
KafkaChannel
对象的v1beta1
API 版本。不要使用这个 API 的v1alpha1
版本,因为这个版本现已弃用。应用
KafkaChannel
YAML 文件:oc apply -f <filename>
$ oc apply -f <filename>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.2.6. 后续步骤 复制链接链接已复制到粘贴板!
- 创建频道后,您可以 将频道连接到 sink,以便 sink 可以接收事件。
- 配置事件交付参数,当事件无法发送到事件 sink 时。