7.2. 配置监听程序以连接到 Kafka 代理
使用监听程序进行与 Kafka 代理的客户端连接。AMQ Streams 提供了一个通用的 GenericKafkaListener
模式,它带有通过 Kafka
资源配置监听程序的属性。GenericKafkaListener
提供了灵活的监听程序配置方法。您可以指定属性来配置 内部监听程序 以在 OpenShift 集群内连接,或 外部监听程序 用于在 OpenShift 集群外部连接。
指定在监听器配置中公开 Kafka 的 连接类型
。选择的类型取决于您的要求,以及您的环境和基础架构。支持以下监听程序类型:
- 内部监听程序
-
在同一 OpenShift 集群内连接的
内部
-
cluster-ip
使用每个代理ClusterIP
服务公开 Kafka
-
在同一 OpenShift 集群内连接的
- 外部监听程序
-
NodePort
使用 OpenShift 节点上的端口 -
LoadBalancer
使用负载均衡器服务 -
ingress
使用 KubernetesIngress
和 Ingress NGINX Controller for Kubernetes (仅限 Kubernetes) -
route
使用 OpenShiftRoute
和默认的 HAProxy 路由器(仅限 OpenShift)
-
不要在 OpenShift 上使用 ingress
,改为使用 route
类型。Ingress NGINX Controller 仅适用于 Kubernetes。路由类型
只在 OpenShift 中被支持。
内部
类型的监听程序配置使用无头服务和提供给代理 pod 的 DNS 名称。您可能需要将 OpenShift 网络加入到外部网络。在这种情况下,您可以配置 内部
类型监听程序(使用 useServiceDnsDomain
属性),以便不使用 OpenShift 服务 DNS 域(通常为 .cluster.local
)。您还可以配置基于每个代理的 ClusterIP
服务的 Kafka 集群的 cluster-ip
类型。当您无法通过无头服务路由或者您希望纳入自定义访问机制时,这个选项是一个实用的选项。例如,您可以在为特定 Ingress 控制器或 OpenShift 网关 API 构建自己的类型的外部监听程序时使用此监听程序。
外部监听程序从需要不同身份验证机制的网络处理对 Kafka 集群的访问。您可以使用指定的连接机制(如 loadbalancer 或 route)为 OpenShift 环境外部访问配置外部监听程序。例如,负载均衡器可能不适用于某些基础架构,如裸机,节点端口提供更好的选项。
每个监听器都定义为 Kafka
资源中的一个数组。
侦听器配置示例
您可以根据需要配置多个监听程序,只要它们的名称和端口是唯一的。您还可以使用身份验证为安全连接配置监听程序。
如果要了解更多有关每种连接类型的 pros 和 cons,请参阅在 Strimzi 中访问 Apache Kafka。
如果您在使用外部监听程序时需要扩展 Kafka 集群,可能会触发所有 Kafka 代理的滚动更新。这取决于配置。