7.5. 使用 loadbalancers 访问 Kafka
使用 loadbalancers 从 OpenShift 集群外的外部客户端访问 AMQ Streams Kafka 集群。
要连接到代理,您可以为 Kafka bootstrap 地址指定主机名和端口号,以及用于 TLS 加密的证书。
该流程显示基本的 loadbalancer
侦听器配置。您可以使用监听程序属性启用 TLS 加密(tls
)并指定客户端身份验证机制(身份验证
)。使用 配置属性
添加额外的配置。例如,您可以将以下配置属性用于 loadbalancer
侦听程序:
loadBalancerSourceRanges
- 将流量限制为指定的 CIDR 列表(Classless Inter-Domain Routing)范围。
externalTrafficPolicy
- 指定服务是否将外部流量路由到节点本地还是集群范围的端点。
loadBalancerIP
- 在创建 loadbalancer 时请求特定的 IP 地址。
如需有关监听器配置的更多信息,请参阅 GenericKafkaListener
模式参考。
先决条件
- 正在运行的 Cluster Operator
在此过程中,Kafka 集群名称为 my-cluster
。侦听器的名称是 外部
。
流程
配置一个
Kafka
资源,并将外部监听程序设置为loadbalancer
类型。例如:
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 验证 kafka 代理的身份的集群 CA 证书也会在 secret
my-cluster-cluster-ca-cert
中创建。为每个 Kafka 代理创建
loadbalancer
类型服务和负载均衡器,以及外部 bootstrap 服务。为 bootstrap 和代理创建的 LoadBalancer 服务和负载均衡器
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 用于客户端连接的 bootstrap 地址传播到
Kafka
资源的status
。bootstrap 地址的状态示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 用于客户端连接的 DNS 地址会传播到每个 loadbalancer
服务的状态
。bootstrap loadbalancer 的状态示例
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"}' a8d4a6fb363bf447fb6e475fc3040176-36312313.us-west-2.elb.amazonaws.com:9095
oc get kafka my-cluster -o=jsonpath='{.status.listeners[?(@.name=="external")].bootstrapServers}{"\n"}' a8d4a6fb363bf447fb6e475fc3040176-36312313.us-west-2.elb.amazonaws.com:9095
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 地址。例如,
a8d4a6fb363bf447fb6e475fc3040176-36312313.us-west-2.elb.amazonaws.com:9095
。 将提取的证书添加到 Kafka 客户端的信任存储中,以配置 TLS 连接。
如果启用了客户端身份验证机制,您还需要在客户端上配置它。
-
指定 Kafka 客户端中的 bootstrap 主机和端口作为连接到 Kafka 集群的 bootstrap 地址。例如,
如果您使用自己的监听程序证书,请检查您是否需要将 CA 证书添加到客户端的信任存储配置中。如果是一个公共(外部)CA,您通常不需要添加它。