13.5. 使用节点端口访问 Kafka
使用节点端口从 OpenShift 集群外部客户端访问 AMQ Streams Kafka 集群。
要连接到代理,您可以为 Kafka bootstrap 地址指定主机名和端口号,以及用于 TLS 加密的证书。
该流程显示基本的 nodeport 侦听器配置。您可以使用监听程序属性启用 TLS 加密(tls)并指定客户端身份验证机制(身份验证)。使用 配置属性 添加额外的配置。例如,您可以在 nodeport 监听器中使用以下配置属性:
preferredNodePortAddressType- 指定作为节点地址检查的第一个地址类型。
externalTrafficPolicy- 指定服务是否将外部流量路由到节点本地端点还是集群范围的端点。
nodePort- 覆盖 bootstrap 和代理服务的分配的节点端口号。
有关监听器配置的更多信息,请参阅 GenericKafkaListener 模式参考。
先决条件
- 正在运行的 Cluster Operator
在此过程中,Kafka 集群名称是 my-cluster。侦听器的名称是 external4。
流程
配置一个
Kafka资源,并将外部监听程序设置为nodeport类型。例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建或更新资源。
oc apply -f <kafka_configuration_file>
oc apply -f <kafka_configuration_file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 secret
my-cluster-cluster-ca-cert中创建用于验证 kafka 代理身份的集群 CA 证书。为每个 Kafka 代理以及外部 bootstrap 服务创建
NodePort类型服务。为 bootstrap 和代理创建的节点端口服务
NAME TYPE CLUSTER-IP PORT(S) my-cluster-kafka-external4-0 NodePort 172.30.55.13 9094:31789/TCP my-cluster-kafka-external4-1 NodePort 172.30.250.248 9094:30028/TCP my-cluster-kafka-external4-2 NodePort 172.30.115.81 9094:32650/TCP my-cluster-kafka-external4-bootstrap NodePort 172.30.30.23 9094:32650/TCP
NAME TYPE CLUSTER-IP PORT(S) my-cluster-kafka-external4-0 NodePort 172.30.55.13 9094:31789/TCP my-cluster-kafka-external4-1 NodePort 172.30.250.248 9094:30028/TCP my-cluster-kafka-external4-2 NodePort 172.30.115.81 9094:32650/TCP my-cluster-kafka-external4-bootstrap NodePort 172.30.30.23 9094:32650/TCPCopy to Clipboard Copied! Toggle word wrap Toggle overflow 用于客户端连接的 bootstrap 地址传播到
Kafka资源的status。bootstrap 地址的状态示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从
Kafka资源的状态中检索可用于访问 Kafka 集群的 bootstrap 地址。oc get kafka my-cluster -o=jsonpath='{.status.listeners[?(@.name=="external4")].bootstrapServers}{"\n"}' ip-10-0-224-199.us-west-2.compute.internal:32650oc get kafka my-cluster -o=jsonpath='{.status.listeners[?(@.name=="external4")].bootstrapServers}{"\n"}' ip-10-0-224-199.us-west-2.compute.internal:32650Copy to Clipboard Copied! Toggle word wrap Toggle overflow 提取集群 CA 证书。
oc get secret my-cluster-cluster-ca-cert -o jsonpath='{.data.ca\.crt}' | base64 -d > ca.crtoc get secret my-cluster-cluster-ca-cert -o jsonpath='{.data.ca\.crt}' | base64 -d > ca.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将您的客户端配置为连接到代理。
-
指定 Kafka 客户端中的 bootstrap 主机和端口作为连接到 Kafka 集群的 bootstrap 地址。例如,
ip-10-0-224-199.us-west-2.compute.internal:32650。 将提取的证书添加到 Kafka 客户端的信任存储中,以配置 TLS 连接。
如果启用了客户端身份验证机制,您还需要在客户端中配置它。
-
指定 Kafka 客户端中的 bootstrap 主机和端口作为连接到 Kafka 集群的 bootstrap 地址。例如,
如果您使用自己的监听程序证书,请检查您是否需要将 CA 证书添加到客户端的信任存储配置中。如果它是一个公共(外部)CA,通常不需要添加它。