3.4. 在 Kamelet Binding 中将 Knative 目标连接到数据 sink
要将 Knative 目标连接到数据接收器,您可以创建一个 Kamelet Binding,如图 3.3 所示。
图 3.3 将 Knative 目标连接到数据接收器
Knative 目的地可以是 Knative 频道或 Knative 代理。
当您从频道发送数据时,该频道只有一个事件类型。您不需要在 Kamelet Binding 中为频道指定任何属性值。
当您从代理发送数据时,因为代理可以处理多个事件类型,所以您必须在 Kamelet Binding 中引用代理时为 type 属性指定一个值。
先决条件
您知道 Knative 频道的名称和类型,或者您要从中接收事件的代理名称。对于代理,您还知道要接收的事件类型。
此流程中的示例使用名为 mychannel 的 InMemoryChannel 频道,或名为 mybroker 和 coffee 事件(用于类型属性)的代理。这些是相同的示例目的地,用于接收从 Kamelet Binding 中数据源连接到 Knative 频道 的事件。
您知道,您想要添加到 Camel 集成和所需的实例参数中的 Kamelet。
此流程中的 Kamelet 示例是 Kamelet Catalog 中提供的
log-sink
Kamelet,对于测试和调试非常有用。指定的showStreams
参数来显示数据的消息正文。
流程
要将 Knative 频道连接到数据接收器,请创建一个 Kamelet Binding:
在您选择的编辑器中,创建一个具有以下基本结构的 YAML 文件:
apiVersion: camel.apache.org/v1alpha1 kind: KameletBinding metadata: name: spec: source: sink:
为 Kamelet Binding 添加一个名称。在本例中,名称是
knative-to-log
,因为绑定将 Knative 目的地连接到log-sink
Kamelet。apiVersion: camel.apache.org/v1alpha1 kind: KameletBinding metadata: name: knative-to-log spec: source: sink:
对于 Kamelet Binding 的源,请指定 Knative 频道或代理以及所需参数。
本例将 Knative 频道指定为源:
apiVersion: camel.apache.org/v1alpha1 kind: KameletBinding metadata: name: knative-to-log spec: source: ref: apiVersion: messaging.knative.dev/v1 kind: InMemoryChannel name: mychannel sink:
本例将 Knative 代理指定为源:
apiVersion: camel.apache.org/v1alpha1 kind: KameletBinding metadata: name: knative-to-log spec: source: ref: kind: Broker apiVersion: eventing.knative.dev/v1 name: default properties: type: coffee sink:
对于 Kamelet Binding 的 sink,请指定数据使用者 Kamelet(例如,
log-sink
Kamelet)并为 Kamelet 配置任何参数:apiVersion: camel.apache.org/v1alpha1 kind: KameletBinding metadata: name: knative-to-log spec: source: ref: apiVersion: messaging.knative.dev/v1 kind: InMemoryChannel name: mychannel sink: ref: apiVersion: camel.apache.org/v1alpha1 kind: Kamelet name: log-sink properties: showStreams: true
-
保存 YAML 文件(如
knative-to-log.yaml
)。 - 登录您的 OpenShift 项目。
将 Kamelet Binding 作为资源添加到 OpenShift 命名空间:
oc apply -f <kamelet binding filename>
例如:
oc apply -f knative-to-log.yaml
Camel K operator 使用
KameletBinding
资源生成并运行 Camel K 集成。构建可能需要几分钟时间。查看
KameletBinding
的状态:oc get kameletbindings
查看集成的状态:
oc get integrations
查看集成的日志:
kamel logs <integration> -n <project>
例如:
kamel logs knative-to-log -n my-camel-knative
在输出中,您应该看到 coffee 事件,例如:
[1] INFO [sink] (vert.x-worker-thread-1) {"id":254,"uid":"8e180ef7-8924-4fc7-ab81-d6058618cc42","blend_name":"Good-morning Star","origin":"Santander, Colombia","variety":"Kaffa","notes":"delicate, creamy, lemongrass, granola, soil","intensifier":"sharp"} [1] INFO [sink] (vert.x-worker-thread-2) {"id":8169,"uid":"3733c3a5-4ad9-43a3-9acc-d4cd43de6f3d","blend_name":"Caf? Java","origin":"Nayarit, Mexico","variety":"Red Bourbon","notes":"unbalanced, full, granola, bittersweet chocolate, nougat","intensifier":"delicate"}
要停止正在运行的集成,请删除相关的 Kamelet Binding 资源:
oc delete kameletbindings/<kameletbinding-name>
例如:
oc delete kameletbindings/knative-to-log
另请参阅