×

通道是自定义资源,定义了单个事件转发和持久化层。事件从事件源或生产者发送到通道后,可以使用订阅将这些事件发送到多个 Knative 服务或其他接收器。

Channel workflow overview

您可以通过实例化受支持的Channel对象来创建通道,并通过修改Subscription对象中的delivery规范来配置重新传递尝试。

使用管理员视角创建通道

在您的集群上安装 Knative Eventing 后,您可以使用管理员视角创建通道。

先决条件
  • OpenShift Serverless 运算符和 Knative Eventing 已安装在您的 OpenShift Container Platform 集群上。

  • 您已登录到 Web 控制台并处于**管理员**视角。

  • 您拥有 OpenShift Container Platform 的集群管理员权限,或者您拥有 Red Hat OpenShift Service on AWS 或 OpenShift Dedicated 的集群或专用管理员权限。

步骤
  1. 在 OpenShift Container Platform Web 控制台的**管理员**视角中,导航到**无服务器** → **Eventing**。

  2. 在**创建**列表中,选择**通道**。您将被定向到**通道**页面。

  3. 在**类型**列表中选择要创建的Channel对象的类型。

    目前,默认情况下仅支持InMemoryChannel通道对象。如果您已在 OpenShift Serverless 上安装了 Apache Kafka 的 Knative 代理实现,则可以使用 Apache Kafka 的 Knative 通道。

  4. 单击**创建**。

使用开发者视角创建通道

使用 OpenShift Container Platform Web 控制台提供了一个简化的直观用户界面来创建通道。在您的集群上安装 Knative Eventing 后,您可以使用 Web 控制台创建通道。

先决条件
  • 您已登录到 OpenShift Container Platform Web 控制台。

  • OpenShift Serverless 运算符和 Knative Eventing 已安装在您的 OpenShift Container Platform 集群上。

  • 您已创建项目或有权访问具有在 OpenShift Container Platform 中创建应用程序和其他工作负载的相应角色和权限的项目。

步骤
  1. 在**开发者**视角中,导航到**+添加** → **通道**。

  2. 在**类型**列表中选择要创建的Channel对象的类型。

  3. 单击**创建**。

验证
  • 通过导航到**拓扑**页面确认通道现在已存在。

    View the channel in the Topology view

使用 Knative CLI 创建通道

使用 Knative (kn) 命令行界面 (CLI) 创建通道比直接修改 YAML 文件更简化、更直观。您可以使用 kn channel create 命令创建通道。

先决条件
  • 集群上已安装 OpenShift Serverless 运算符和 Knative Eventing。

  • 您已安装 Knative (kn) CLI。

  • 您已创建项目或有权访问具有在 OpenShift Container Platform 中创建应用程序和其他工作负载的相应角色和权限的项目。

步骤
  • 创建通道

    $ kn channel create <channel_name> --type <channel_type>

    通道类型是可选的,但如果指定,则必须使用 Group:Version:Kind 格式给出。例如,您可以创建一个 InMemoryChannel 对象。

    $ kn channel create mychannel --type messaging.knative.dev:v1:InMemoryChannel
    示例输出
    Channel 'mychannel' created in namespace 'default'.
验证
  • 要确认通道现在已存在,请列出现有通道并检查输出。

    $ kn channel list
    示例输出
    kn channel list
    NAME        TYPE              URL                                                     AGE   READY   REASON
    mychannel   InMemoryChannel   http://mychannel-kn-channel.default.svc.cluster.local   93s   True
删除通道
  • 删除通道

    $ kn channel delete <channel_name>

使用 YAML 创建默认实现通道

使用 YAML 文件创建 Knative 资源使用声明式 API,使您可以声明式且可重现地描述通道。要使用 YAML 创建无服务器通道,您必须创建一个定义 Channel 对象的 YAML 文件,然后使用 oc apply 命令应用它。

先决条件
  • 集群上已安装 OpenShift Serverless 运算符和 Knative Eventing。

  • 安装 OpenShift CLI (oc)。

  • 您已创建项目或有权访问具有在 OpenShift Container Platform 中创建应用程序和其他工作负载的相应角色和权限的项目。

步骤
  1. 创建一个作为 YAML 文件的 Channel 对象。

    apiVersion: messaging.knative.dev/v1
    kind: Channel
    metadata:
      name: example-channel
      namespace: default
  2. 应用 YAML 文件。

    $ oc apply -f <filename>

使用 YAML 创建 Apache Kafka 通道

使用 YAML 文件创建 Knative 资源使用声明式 API,使您可以声明式且可重现地描述通道。您可以通过创建 Kafka 通道来创建一个由 Kafka 主题支持的 Knative Eventing 通道。要使用 YAML 创建 Kafka 通道,您必须创建一个定义 KafkaChannel 对象的 YAML 文件,然后使用 oc apply 命令应用它。

先决条件
  • 您的 OpenShift Container Platform 集群上已安装 OpenShift Serverless 运算符、Knative Eventing 和 KnativeKafka 自定义资源。

  • 安装 OpenShift CLI (oc)。

  • 您已创建项目或有权访问具有在 OpenShift Container Platform 中创建应用程序和其他工作负载的相应角色和权限的项目。

步骤
  1. 创建一个作为 YAML 文件的 KafkaChannel 对象。

    apiVersion: messaging.knative.dev/v1beta1
    kind: KafkaChannel
    metadata:
      name: example-channel
      namespace: default
    spec:
      numPartitions: 3
      replicationFactor: 1

    OpenShift Serverless 上仅支持 KafkaChannel 对象的 v1beta1 版本 API。请勿使用此 API 的 v1alpha1 版本,因为此版本现已弃用。

  2. 应用 KafkaChannel YAML 文件。

    $ oc apply -f <filename>

后续步骤