×

Knative 提供了一个默认的基于通道的代理实现。此基于通道的代理可用于开发和测试目的,但不提供生产环境中足够的事件传递保证。

如果集群管理员已将您的 OpenShift Serverless 部署配置为使用 Apache Kafka 作为默认代理类型,则使用默认设置创建代理会为 Apache Kafka 创建一个 Knative 代理。

如果您的 OpenShift Serverless 部署未配置为使用 Knative 代理(用于 Apache Kafka)作为默认代理类型,则在以下过程中使用默认设置时会创建基于通道的代理。

使用 Knative CLI 创建代理

代理可以与触发器结合使用,以将事件从事件源传递到事件接收器。使用 Knative (kn) CLI 创建代理比直接修改 YAML 文件提供了更简化和直观的用户界面。您可以使用 kn broker create 命令创建代理。

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

  • 您已安装 Knative (kn) CLI。

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

步骤
  • 创建代理

    $ kn broker create <broker_name>
验证
  1. 使用 kn 命令列出所有现有代理

    $ kn broker list
    示例输出
    NAME      URL                                                                     AGE   CONDITIONS   READY   REASON
    default   http://broker-ingress.knative-eventing.svc.cluster.local/test/default   45s   5 OK / 5     True
  2. 可选:如果您使用的是 OpenShift Container Platform Web 控制台,则可以导航到**开发者**视角中的**拓扑**视图,并观察代理是否存在。

    View the broker in the web console Topology view

通过注释触发器来创建代理

代理可以与触发器结合使用,以将事件从事件源传递到事件接收器。您可以通过向Trigger对象添加eventing.knative.dev/injection: enabled注释来创建代理。

如果您使用eventing.knative.dev/injection: enabled注释创建代理,则无法在没有集群管理员权限的情况下删除此代理。如果您在没有集群管理员先删除此注释的情况下删除代理,则代理将在删除后重新创建。

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

  • 安装 OpenShift CLI (oc)。

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

步骤
  1. 创建一个包含eventing.knative.dev/injection: enabled注释的Trigger对象作为 YAML 文件。

    apiVersion: eventing.knative.dev/v1
    kind: Trigger
    metadata:
      annotations:
        eventing.knative.dev/injection: enabled
      name: <trigger_name>
    spec:
      broker: default
      subscriber: (1)
        ref:
          apiVersion: serving.knative.dev/v1
          kind: Service
          name: <service_name>
    1 指定触发器发送事件到的事件接收器(或订阅者)的详细信息。
  2. 应用TriggerYAML 文件。

    $ oc apply -f <filename>
验证

您可以使用oc CLI 或通过在 Web 控制台的**拓扑**视图中观察它来验证代理是否已成功创建。

  1. 输入以下oc命令以获取代理。

    $ oc -n <namespace> get broker default
    示例输出
    NAME      READY     REASON    URL                                                                     AGE
    default   True                http://broker-ingress.knative-eventing.svc.cluster.local/test/default   3m56s
  2. 可选:如果您使用的是 OpenShift Container Platform Web 控制台,则可以导航到**开发者**视角中的**拓扑**视图,并观察代理是否存在。

    View the broker in the web console Topology view

通过标记命名空间创建 Broker

Broker 可以与触发器结合使用,将事件从事件源传递到事件接收器。您可以通过标记您拥有或具有写入权限的命名空间来自动创建default Broker。

使用此方法创建的 Broker 不会因为您删除标签而被删除。您必须手动删除它们。

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

  • 安装 OpenShift CLI (oc)。

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

  • 如果您使用的是 Red Hat OpenShift Service on AWS 或 OpenShift Dedicated,则您拥有集群或专用管理员权限。

步骤
  • 使用eventing.knative.dev/injection=enabled标签标记命名空间

    $ oc label namespace <namespace> eventing.knative.dev/injection=enabled
验证

您可以使用oc CLI 或通过在 Web 控制台的**拓扑**视图中观察它来验证代理是否已成功创建。

  1. 使用oc命令获取 Broker

    $ oc -n <namespace> get broker <broker_name>
    示例命令
    $ oc -n default get broker default
    示例输出
    NAME      READY     REASON    URL                                                                     AGE
    default   True                http://broker-ingress.knative-eventing.svc.cluster.local/test/default   3m56s
  2. 可选:如果您使用的是 OpenShift Container Platform Web 控制台,则可以导航到**开发者**视角中的**拓扑**视图,并观察代理是否存在。

    View the broker in the web console Topology view

删除通过注入创建的 Broker

如果您通过注入创建 Broker,之后想要删除它,则必须手动删除它。使用命名空间标签或触发器注释创建的 Broker,如果您删除标签或注释,不会被永久删除。

先决条件
  • 安装 OpenShift CLI (oc)。

步骤
  1. 从命名空间中删除eventing.knative.dev/injection=enabled标签

    $ oc label namespace <namespace> eventing.knative.dev/injection-

    删除注释可以防止 Knative 在您删除 Broker 后重新创建它。

  2. 从选定的命名空间删除 Broker

    $ oc -n <namespace> delete broker <broker_name>
验证
  • 使用oc命令获取 Broker

    $ oc -n <namespace> get broker <broker_name>
    示例命令
    $ oc -n default get broker default
    示例输出
    No resources found.
    Error from server (NotFound): brokers.eventing.knative.dev "default" not found

使用 Web 控制台创建 Broker

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

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

  • OpenShift Serverless Operator、Knative Serving 和 Knative Eventing 已安装在集群上。

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

步骤
  1. 在“开发者”视图中,导航到“+添加”→“Broker”。将显示“Broker”页面。

  2. 可选。更新 Broker 的名称。如果您不更新名称,则生成的 Broker 将命名为default

  3. 单击“创建”。

验证

您可以通过查看“拓扑”页面中的 Broker 组件来验证 Broker 是否已创建。

  1. 在“开发者”视图中,导航到“拓扑”。

  2. 查看mt-broker-ingressmt-broker-filtermt-broker-controller组件。

    View the broker components in the Topology view

使用管理员视图创建 Broker

Broker 可以与触发器结合使用,将事件从事件源传递到事件接收器。事件作为 HTTP POST 请求从事件源发送到 Broker。事件进入 Broker 后,可以使用触发器根据CloudEvent 属性进行过滤,并作为 HTTP POST 请求发送到事件接收器。

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

  • 您已登录到 Web 控制台,并且处于“管理员”视图。

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

步骤
  1. 在 OpenShift Container Platform Web 控制台的“管理员”视图中,导航到“无服务器”→“事件”。

  2. 在“创建”列表中,选择“Broker”。您将被定向到“创建 Broker”页面。

  3. 可选:修改 Broker 的 YAML 配置。

  4. 单击“创建”。

后续步骤

  • 配置事件传递参数,这些参数适用于事件未能传递到事件接收器的情况。