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类型。例如:
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: labels: app: my-cluster name: my-cluster namespace: myproject spec: kafka: # ... listeners: - name: external port: 9094 type: nodeport tls: true authentication: type: tls # ... # ... zookeeper: # ...创建或更新资源。
oc apply -f <kafka_configuration_file>在 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用于客户端连接的 bootstrap 地址传播到
Kafka资源的status。bootstrap 地址的状态示例
status: clusterId: Y_RJQDGKRXmNF7fEcWldJQ conditions: - lastTransitionTime: '2023-01-31T14:59:37.113630Z' status: 'True' type: Ready listeners: # ... - addresses: - host: ip-10-0-224-199.us-west-2.compute.internal port: 32650 bootstrapServers: 'ip-10-0-224-199.us-west-2.compute.internal:32650' certificates: - | -----BEGIN CERTIFICATE----- -----END CERTIFICATE----- name: external type: external observedGeneration: 2 # ...从
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提取集群 CA 证书。
oc get secret my-cluster-cluster-ca-cert -o jsonpath='{.data.ca\.crt}' | base64 -d > ca.crt将您的客户端配置为连接到代理。
-
指定 Kafka 客户端中的 bootstrap 主机和端口作为连接到 Kafka 集群的 bootstrap 地址。例如,
ip-10-0-224-199.us-west-2.compute.internal:32650。 将提取的证书添加到 Kafka 客户端的信任存储中,以配置 TLS 连接。
如果启用了客户端身份验证机制,您还需要在客户端上配置它。
-
指定 Kafka 客户端中的 bootstrap 主机和端口作为连接到 Kafka 集群的 bootstrap 地址。例如,
如果您使用自己的监听程序证书,请检查您是否需要将 CA 证书添加到客户端的信任存储配置中。如果是一个公共(外部)CA,您通常不需要添加它。