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