第 4 章 访问 OpenShift 集群外的 Kafka
使用外部监听程序将 AMQ Streams Kafka 集群公开给 OpenShift 环境之外的客户端。
指定在外部监听器配置中公开 Kafka 的连接类型。
-
nodeport使用NodePort类型Services -
LoadBalancer使用Loadbalancer类型服务 -
Ingress使用 KubernetesIngress和 NGINX Ingress Controller 用于 Kubernetes -
路由使用OpenShift路由和 HAProxy 路由器
有关监听器配置的更多信息,请参阅 通用KafkaListener 模式参考。
如果要了解有关每种连接类型的代理和配件的更多信息,请参阅 Strimzi 中的访问 Apache Kafka。
只有在 OpenShift 中才支持 路由
4.1. 使用节点端口访问 Kafka 复制链接链接已复制到粘贴板!
此流程描述了如何使用节点端口从外部客户端访问 AMQ Streams Kafka 集群。
要连接到代理,您需要 Kafka bootstrap 地址 的主机名和端口号,以及用于身份验证的证书。
先决条件
- OpenShift 集群
- 正在运行的 Cluster Operator
流程
配置一个
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 为每个 Kafka 代理创建
NodePort类型服务,以及外部的 bootstrap service。bootstrap 服务将外部流量路由到 Kafka 代理。用于连接的节点地址会被传播到 Kafka 自定义资源的状态。在 secret <cluster
_name> -cluster-ca-cert 中也创建了用于验证 kafka 代理身份的集群CA 证书。检索您用来从
Kafka资源状态访问 Kafka 集群的 bootstrap 地址。oc get kafka <kafka_cluster_name> -o=jsonpath='{.status.listeners[?(@.name=="<listener_name>")].bootstrapServers}{"\n"}'oc get kafka <kafka_cluster_name> -o=jsonpath='{.status.listeners[?(@.name=="<listener_name>")].bootstrapServers}{"\n"}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
oc get kafka my-cluster -o=jsonpath='{.status.listeners[?(@.name=="external")].bootstrapServers}{"\n"}'oc get kafka my-cluster -o=jsonpath='{.status.listeners[?(@.name=="external")].bootstrapServers}{"\n"}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果启用了 TLS 加密,提取代理证书颁发机构的公共证书。
oc get secret KAFKA-CLUSTER-NAME-cluster-ca-cert -o jsonpath='{.data.ca\.crt}' | base64 -d > ca.crtoc get secret KAFKA-CLUSTER-NAME-cluster-ca-cert -o jsonpath='{.data.ca\.crt}' | base64 -d > ca.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 Kafka 客户端中提取的证书配置 TLS 连接。如果您启用了任何身份验证,您也需要配置 SASL 或 TLS 身份验证。