第 4 章 创建 OpenShift 路由以访问 Kafka 集群
创建 OpenShift 路由以访问 OpenShift 之外的 Kafka 集群。
此流程描述了如何在 OpenShift 环境外将 Kafka 集群公开给客户端。在 Kafka 集群公开后,外部客户端可以从 Kafka 集群生成和使用信息。
要创建 OpenShift 路由,route
监听程序添加到 OpenShift 上安装的 Kafka 集群的配置中。
OpenShift Route 地址包括 Kafka 集群的名称、侦听器的名称以及它在其中创建的命名空间的名称。例如,my-cluster-kafka-listener1-bootstrap-amq-streams-kafka
(<cluster_name>-kafka-<listener_name>-bootstrap-<namespace>)。请注意,地址的整个长度不超过 63 个字符的最大值。
先决条件
- 您已在 OpenShift 上创建 Kafka 集群。
-
您需要 OpenJDK
keytool
管理证书。 -
(可选)您可以使用 OpenShift
oc
CLI 工具执行一些步骤。
流程
- 在 Web 控制台中进入到 Operators > Installed Operators 页面,然后点 Red Hat Integration - AMQ Streams 来显示 Operator 详情。
- 选择 Kafka 页面来显示已安装的 Kafka 集群。
点您要配置的 Kafka 集群的名称查看其详情。
在这个示例中,我们使用名为
my-cluster
的 Kafka 集群。-
选择 Kafka 集群的
my-cluster
的 YAML 页面。 添加路由侦听器配置,以创建名为
listener1
的 OpenShift 路由。侦听器配置必须设置为
route
类型。您可以在 Kafka 配置中的listeners
中添加监听程序配置。外部路由监听程序配置
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster namespace: amq-streams-kafka spec: kafka: # ... listeners: # ... - name: listener1 port: 9094 type: route tls: true # ...
客户端通过端口 443 连接默认的路由器端口,但流量会被路由到您配置的端口,本例中为 9094。
- 保存更新的配置。
选择 Kafka 集群
my-cluster
的 Resources 页面,以查找客户端需要的连接信息。在 Resources 页面中,您将查找路由监听程序和您连接到 Kafka 集群所需的公共集群证书的详情。
-
点为 Kafka 集群创建的
my-cluster-kafka-listener1-bootstrap
路由名称来显示路由详情。 记录主机名。
主机名在 Kafka 客户端中使用端口 443 指定,作为连接到 Kafka 集群的 bootstrap 地址。
您还可以通过进入到 Networking > Routes 并选择
amq-streams-kafka
项目来找到 bootstrap 地址。或者,您可以使用
oc
工具提取 bootstrap 详情。提取 bootstrap 信息
oc get routes my-cluster-kafka-listener1-bootstrap -o=jsonpath='{.status.ingress[0].host}{"\n"}'
返回到 Resources 页面,然后点
my-cluster-cluster-ca-cert
的名称以显示用于访问 Kafka 集群的 secret 详情。ca.crt
证书文件包含 Kafka 集群的公共证书。您需要证书才能访问 Kafka 代理。
生成
ca.crt
公共证书文件的本地副本。您可以复制证书的详细信息,或使用 OpenShift
oc
工具提取证书。提取公共证书
oc extract secret/my-cluster-cluster-ca-cert --keys=ca.crt --to=- > ca.crt
使用
keytool
为公共集群证书创建本地信任存储。创建本地信任存储
keytool -keystore client.truststore.jks -alias CARoot -import -file ca.crt
出现提示时,创建用于访问 truststore 的密码。
truststore 在 Kafka 客户端中指定,用于身份验证对 Kafka 集群的访问。
现在,您已准备好开始发送和接收信息。