6.7. 部署 Kafka Bridge
Kafka Bridge 提供了一个 API,用于将基于 HTTP 的客户端与 Kafka 集群集成。
6.7.1. 在 OpenShift 集群中部署 Kafka Bridge
此流程演示了如何使用 Cluster Operator 将 Kafka Bridge 集群部署到 OpenShift 集群。
部署使用 YAML 文件来提供规格来创建 KafkaBridge
资源。
Apache Kafka 的流提供了 示例配置文件。在此过程中,我们使用以下示例文件:
-
examples/bridge/kafka-bridge.yaml
流程
将 Kafka Bridge 部署到 OpenShift 集群:
oc apply -f examples/bridge/kafka-bridge.yaml
检查部署的状态:
oc get pods -n <my_cluster_operator_namespace>
输出显示部署名称和就绪
NAME READY STATUS RESTARTS my-bridge-bridge-<pod_id> 1/1 Running 0
my-bridge
是 Kafka Bridge 集群的名称。标识创建的每个 pod 的 pod ID。
使用默认部署,您会安装单个 Kafka Bridge pod。
READY
显示就绪/预期的副本数。当STATUS
显示为Running
时,部署成功。
6.7.2. 将 Kafka Bridge 服务公开给本地机器
使用端口转发将 Apache Kafka Bridge 服务的流公开给您的 http://localhost:8080 上的本地机器。
端口转发仅适用于开发和测试目的。
流程
列出 OpenShift 集群中 pod 的名称:
oc get pods -o name pod/kafka-consumer # ... pod/my-bridge-bridge-<pod_id>
连接到端口
8080
上的 Kafka Bridge pod:oc port-forward pod/my-bridge-bridge-<pod_id> 8080:8080 &
注意如果本地计算机上的端口 8080 已经在使用,请使用备用 HTTP 端口,如
8008
。
API 请求现在从本地机器上的端口 8080 转发到 Kafka Bridge pod 中的端口 8080。
6.7.3. 在 OpenShift 之外访问 Kafka Bridge
部署后,Apache Kafka Bridge 的流只能被在同一 OpenShift 集群中运行的应用程序访问。这些应用程序使用 < ;kafka_bridge_name> -bridge-service
服务来访问 API。
如果要使 Kafka Bridge 可以被 OpenShift 集群外部运行的应用程序访问,您可以通过创建以下功能之一来手动公开它:
-
LoadBalancer
或NodePort
类型服务 -
Ingress
资源(仅限 Kubernetes) - OpenShift 路由(仅限 OpenShift)
如果您决定创建服务,请使用 < kafka_bridge_name>-bridge-service
服务 的选择器
中的标签来配置服务将流量路由到的 pod:
# ...
selector:
strimzi.io/cluster: kafka-bridge-name 1
strimzi.io/kind: KafkaBridge
#...
- 1
- OpenShift 集群中的 Kafka Bridge 自定义资源的名称。
6.7.4. Kafka Bridge 集群资源列表
以下资源由 OpenShift 集群中的 Cluster Operator 创建:
- <bridge_cluster_name>-bridge
- 用于创建 Kafka Bridge worker 节点 pod 的部署。
- <bridge_cluster_name>-bridge-service
- 公开 Kafka Bridge 集群的 REST 接口的服务。
- <bridge_cluster_name>-bridge-config
- 包含 Kafka Bridge acillary 配置的 ConfigMap,并由 Kafka 代理 pod 挂载为卷。
- <bridge_cluster_name>-bridge
- 为 Kafka Bridge worker 节点配置的 Pod Disruption Budget。