4.3. 创建代理
Knative 提供基于频道的默认代理实现。这个基于频道的代理可用于开发和测试目的,但不为生产环境提供适当的事件交付保证。
如果集群管理员将 OpenShift Serverless 部署配置为使用 Apache Kafka 作为默认代理类型,使用默认设置创建代理会为 Apache Kafka 创建一个 Knative 代理。
如果您的 OpenShift Serverless 部署没有配置为使用 Apache Kafka 的 Knative 代理作为默认代理类型,则按照以下流程中的默认设置时会创建基于频道的代理。
4.3.1. 使用 Knative CLI 创建代理
代理可与触发器结合使用,用于将事件源发送到事件 sink。通过使用 Knative (kn
) CLI 创建代理,通过直接修改 YAML 文件来提供更简化的、直观的用户界面。您可以使用 kn broker create
命令创建代理。
先决条件
- OpenShift Serverless Operator 和 Knative Eventing 已安装在 OpenShift Container Platform 集群中。
-
已安装 Knative (
kn
) CLI。 - 您已创建了一个项目,或者具有适当的角色和权限访问项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
流程
创建代理:
$ kn broker create <broker_name>
验证
使用
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
可选:如果使用 OpenShift Container Platform Web 控制台,在 Developer 视角中进入 Topology 视图来查看存在的代理:
4.3.2. 通过注解触发器来创建代理
代理可与触发器结合使用,用于将事件源发送到事件 sink。您可以通过将 eventing.knative.dev/injection: enabled
注解添加到 Trigger
对象来创建代理。
如果您使用 eventing.knative.dev/injection: enabled
注解创建代理,则在没有集群管理员权限的情况下无法删除该代理。如果您在集群管理员还没有删除此注解前删除了代理,则代理会在删除后再次被创建。
先决条件
- OpenShift Serverless Operator 和 Knative Eventing 已安装在 OpenShift Container Platform 集群中。
-
安装 OpenShift CLI (
oc
) 。 - 您已创建了一个项目,或者具有适当的角色和权限访问项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
流程
创建一个
Trigger
对象作为 YAML 文件,该文件带有eventing.knative.dev/injection: enabled
注解: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
- 指定触发器将事件发送到的事件 sink 或 subscriber。
应用
Trigger
YAML 文件:$ oc apply -f <filename>
验证
您可以使用 oc
CLI,或使用 web 控制台中的 Topology 视图来验证代理是否已成功创建。
输入以下
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
可选:如果使用 OpenShift Container Platform Web 控制台,在 Developer 视角中进入 Topology 视图来查看存在的代理:
4.3.3. 通过标记命名空间来创建代理
代理可与触发器结合使用,用于将事件源发送到事件 sink。您可以通过标记您拥有的命名空间或具有写入权限来自动创建 default
代理。
如果您删除该标签,则不会删除使用这个方法创建的代理。您必须手动删除它们。
先决条件
- OpenShift Serverless Operator 和 Knative Eventing 已安装在 OpenShift Container Platform 集群中。
-
安装 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 控制台中的 Topology 视图来验证代理是否已成功创建。
使用
oc
命令获取代理:$ 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
可选:如果使用 OpenShift Container Platform Web 控制台,在 Developer 视角中进入 Topology 视图来查看存在的代理:
4.3.4. 删除通过注入创建的代理
如果通过注入创建了一个代理并在以后需要删除它时,您必须手动删除它。如果删除了标签或注解,则使用命名空间标签或触发器注解创建的代理不会被永久删除。
先决条件
-
安装 OpenShift CLI (
oc
) 。
流程
从命名空间中删除
eventing.knative.dev/injection=enabled
标识:$ oc label namespace <namespace> eventing.knative.dev/injection-
移除注解可防止 Knative 在删除代理后重新创建代理。
从所选命名空间中删除代理:
$ oc -n <namespace> delete broker <broker_name>
验证
使用
oc
命令获取代理:$ 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
4.3.5. 使用 Web 控制台创建代理
在集群中安装 Knative Eventing 后,您可以使用 web 控制台创建代理。使用 OpenShift Container Platform Web 控制台提供了一个简化的用户界面来创建代理。
先决条件
- 已登陆到 OpenShift Container Platform Web 控制台。
- 在集群中安装了 OpenShift Serverless Operator、Knative Serving 和 Knative Eventing。
- 您已创建了一个项目,或者具有适当的角色和权限访问项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
流程
-
在 Developer 视角中,进入到 +Add
Broker。此时会显示 Broker 页面。 -
可选。更新代理的名称。如果您没有更新名称,则生成的代理名为
default
。 - 点 Create。
验证
您可以通过在 Topology 页面中查看代理组件来验证代理是否已创建。
- 在 Developer 视角中,导航到 Topology。
查看
mt-broker-ingress
、mt-broker-filter
和mt-broker-controller
组件。
4.3.6. 使用 Administrator 视角创建代理
代理可与触发器结合使用,用于将事件源发送到事件 sink。事件从事件源发送到代理,作为 HTTP POST
请求。事件进入代理后,可使用触发器根据 CloudEvent 属性 进行过滤,并作为 HTTP POST
请求发送到事件 sink。
先决条件
- 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 列表中,选择 Broker。您将进入 Create Broker 页面。
- 可选:修改代理的 YAML 配置。
- 点 Create。
4.3.7. 后续步骤
- 配置事件交付参数,当事件无法发送到事件 sink 时。请参阅 配置事件交付参数的示例。