1.2.3. 在 Kamelet Binding 中连接源和接收器组件
在 Kamelet Binding 中,您可以连接 source 和 sink 组件。
此流程中的示例使用以下 Kamelets,如图 1.2 所示:
-
示例源 Kamelet 称为
coffee-source
。这个简单的 Kamelet 从网站目录检索有关 coffee 类型的随机生成的数据。它有一个参数(句点
-整数值
),用于决定检索 coffee 数据的频率(以秒为单位)。不需要该参数,因为有一个默认值(1000 秒)。 -
sink Kamelet 示例名为
log-sink
。它检索数据并将其输出到日志文件中。log-sink
Kamelet 在 Kamelet 目录中提供。
图 1.2: Kamelet Binding 示例
先决条件
- 您已了解如何创建和编辑 Camel K 集成。
- Red Hat Integration - Camel K operator 已安装在 OpenShift 命名空间或集群上,并下载了 Red Hat Integration Camel K CLI 工具,如安装 Camel K 所述。
- 您知道您要添加到 Camel K 集成中的 Kamelets 及其所需的实例参数。
Kamelet 目录中提供了您要使用的 Kamelet。
在本例中,Kamelet 目录中提供了
log-sink
Kamelet。如果要在本示例中使用 source Kamelet,将coffee-source
代码 复制并保持到一个名为coffee-source.kamelet.yaml
的本地文件中,然后运行以下命令将其添加到 Kamelet 目录中:oc apply -f coffee-source.kamelet.yaml
流程
- 登录到您的 OpenShift 集群。
打开安装 Camel K operator 的工作项目。如果您以 cluster-mode 安装 Camel K operator,它将可供集群上的任何项目使用。
例如,要打开名为
my-camel-k-project
的现有项目:oc project my-camel-k-project
使用以下选项之一创建新的 Kamelet Binding:
-
使用
kamel bind
命令创建并运行 Kamelet Binding (这对于命令行定义相关的简单 Kamelet Bindings 很有用) 创建一个 YAML 文件来定义 Kamelet Binding,然后使用
oc apply
命令来运行它(当 Kamelet Binding 配置更为复杂时,此选项很有用)。使用 kamel bind 命令创建一个新的 Kamelet Binding
使用以下
kamel bind
语法指定 source 和 sink Kamelets 和任何配置参数:kamel bind <kamelet-source> -p “<property>=<property-value>” <kamelet-sink> -p “<property>=<property-value>”
例如:
kamel bind coffee-source -p “source.period=5000” log-sink -p "sink.showStreams=true"
Camel K 操作器生成
KameletBinding
资源并运行对应的 Camel K 集成。使用 YAML 文件创建一个新的 Kamelet Binding
在您选择的编辑器中,创建具有以下结构的 YAML 文件:
apiVersion: camel.apache.org/v1alpha1 kind: KameletBinding metadata: name: spec: source: sink:
为 Kamelet Binding 添加名称。
在本例中,名称为
coffee-to-log
,因为绑定将coffee-source
Kamelet 连接到log-sink
Kamelet。apiVersion: camel.apache.org/v1alpha1 kind: KameletBinding metadata: name: coffee-to-log spec: source: sink:
指定 source Kamelet (如
coffee-source
)并为 Kamelet 配置任何参数。注: 在本例中,参数在 Kamelet Binding 的 YAML 文件中定义。另外,您还可以在属性文件、ConfigMap 或 Secret 中配置 Kamelet 的参数,如 配置 Kamelet 实例参数 中所述。
apiVersion: camel.apache.org/v1alpha1 kind: KameletBinding metadata: name: coffee-to-log spec: source: ref kind: Kamelet apiVersion: camel.apache.org/v1alpha1 name: coffee-source properties: period: 5000 sink:
指定 sink Kamelet (如
log-sink
),并为 Kamelet 配置任何参数。使用log-sink
Kamelet 的可选showStreams
参数来显示消息正文。apiVersion: camel.apache.org/v1alpha1 kind: KameletBinding metadata: name: coffee-to-log spec: source: ref: kind: Kamelet apiVersion: camel.apache.org/v1alpha1 name: coffee-source properties: period: 5000 sink: ref: kind: Kamelet apiVersion: camel.apache.org/v1alpha1 name: log-sink properties: showStreams: true
-
保存 YAML 文件(例如
coffee-to-log.yaml
)。 将
KameletBinding
作为资源添加到 OpenShift 命名空间中:oc apply -f <kamelet-binding>.yaml
例如:
oc apply -f coffee-to-log.yaml
Camel K operator 使用
KameletBinding
资源生成并运行 Camel K 集成。
-
使用
查看 Kamelet Binding 的状态:
oc get kameletbindings
-
查看对应的集成状态:
oc get integrations
查看输出:
要从命令行查看日志,请打开终端窗口,然后输入以下命令:
kamel log <integration-name>
例如,如果集成名称为
coffee-to-log
,请使用以下命令:kamel log coffee-to-log
查看 OpenShift Web 控制台中的日志:
- 选择 Workloads > Pods。
单击 Camel K integration's pod 的名称,然后单击 Logs。
您应该看到类似以下示例的 coffee 事件列表:
INFO [log-sink-E80C5C904418150-0000000000000001] (Camel (camel-1) thread #0 - timer://tick) {"id":7259,"uid":"a4ecb7c2-05b8-4a49-b0d2-d1e8db5bc5e2","blend_name":"Postmodern Symphony","origin":"Huila, Colombia","variety":"Kona","notes":"delicate, chewy, black currant, red apple, star fruit","intensifier":"balanced"}
要停止集成,请删除 Kamelet Binding:
oc delete kameletbindings/<kameletbinding-name>
例如:
oc delete kameletbindings/coffee-to-log
后续步骤
(可选):
- 添加 action Kamelets 作为中介步骤,如 将操作添加到 Kamelet Binding 所述。
- 向 Kamelet Binding 添加错误处理,如将错误处理程序策略添加到 Kamelet Binding 所述。