6.2. 指定监听程序类型


将内部监听程序的类型设置为 internal。对于外部监听程序,请从 route,loadbalancer,nodeport, 或 ingress 选择。您还可以配置 cluster-ip 侦听器,这是用于构建自定义访问机制的内部类型。

internal

您可以使用 tls 属性使用或不加密配置内部监听程序。

内部监听程序 配置示例

#...
spec:
  kafka:
    #...
    listeners:
      #...
      - name: plain
        port: 9092
        type: internal
        tls: false
      - name: tls
        port: 9093
        type: internal
        tls: true
        authentication:
          type: tls
    #...
Copy to Clipboard Toggle word wrap

route

配置外部监听程序,以使用 OpenShift Routes 和 HAProxy 路由器公开 Kafka。

为每个 Kafka 代理 pod 创建一个专用 Route。创建额外 Route 以作为 Kafka bootstrap 地址。Kafka 客户端可以使用这些 Routes 连接到端口 443 上的 Kafka。客户端通过端口 443 (默认路由器端口)连接,但流量会路由到您配置的端口,本例中为 9094

路由 监听程序配置示例

#...
spec:
  kafka:
    #...
    listeners:
      #...
      - name: external1
        port: 9094
        type: route
        tls: true
    #...
Copy to Clipboard Toggle word wrap

ingress

配置外部监听程序,以使用 Kubernetes IngressIngress NGINX Controller for Kubernetes 公开 Kafka。

为每个 Kafka 代理 pod 创建一个专用 Ingress 资源。创建额外的 Ingress 资源,以用作 Kafka bootstrap 地址。Kafka 客户端可以使用这些 Ingress 资源在端口 443 上连接到 Kafka。客户端通过端口 443 (默认控制器端口)连接,但流量会路由到您配置的端口,以下示例中为 9095

您必须使用 GenericKafkaListenerConfigurationBootstrapGenericKafkaListenerConfigurationBroker 属性指定 bootstrap 和 per-broker 服务使用的主机名。

ingress 侦听器配置示例

#...
spec:
  kafka:
    #...
    listeners:
      #...
      - name: external2
        port: 9095
        type: ingress
        tls: true
        authentication:
          type: tls
        configuration:
          bootstrap:
            host: bootstrap.myingress.com
          brokers:
          - broker: 0
            host: broker-0.myingress.com
          - broker: 1
            host: broker-1.myingress.com
          - broker: 2
            host: broker-2.myingress.com
  #...
Copy to Clipboard Toggle word wrap

注意

使用 Ingress 的外部监听程序当前只通过 Ingress NGINX Controller for Kubernetes 测试。

LoadBalancer

配置外部监听程序,以使用 Loadbalancer 类型 Service 来公开 Kafka。

为每个 Kafka 代理 pod 创建一个新的 loadbalancer 服务。创建了一个额外的负载均衡器来充当 Kafka bootstrap 地址。loadBalancers 侦听指定的端口号,本例中为端口 9094

您可以使用 loadBalancerSourceRanges 属性配置 源范围 来限制对指定 IP 地址的访问。

loadbalancer 侦听器配置示例

#...
spec:
  kafka:
    #...
    listeners:
      - name: external3
        port: 9094
        type: loadbalancer
        tls: true
        configuration:
          loadBalancerSourceRanges:
            - 10.0.0.0/8
            - 88.208.76.87/32
    #...
Copy to Clipboard Toggle word wrap

nodeport

配置外部监听程序,以使用 NodePort 类型 Service 来公开 Kafka。

Kafka 客户端直接连接到 OpenShift 的节点。创建额外的 NodePort 服务类型作为 Kafka bootstrap 地址。

为 Kafka 代理 pod 配置公告地址时,Apache Kafka 的 Streams 使用运行给定 pod 的节点的地址。

您可以使用 preferredNodePortAddressType 属性将 检查的第一个地址类型配置为节点地址

nodeport 侦听器配置示例

#...
spec:
  kafka:
    #...
    listeners:
      #...
      - name: external4
        port: 9095
        type: nodeport
        tls: false
        configuration:
          preferredNodePortAddressType: InternalDNS
    #...
Copy to Clipboard Toggle word wrap

注意

目前,在使用节点端口公开 Kafka 集群时不支持 TLS 主机名验证。

cluster-ip

配置内部监听程序,以使用每个代理的 ClusterIP 类型 Service 来公开 Kafka。

侦听器不使用无头服务及其 DNS 名称将流量路由到 Kafka 代理。在使用无头服务时,您可以使用这类监听程序公开 Kafka 集群。您可以将其与自定义访问机制一起使用,例如使用特定 Ingress 控制器或 OpenShift 网关 API 的机制。

为每个 Kafka 代理 pod 创建一个新的 ClusterIP 服务。该服务被分配一个 ClusterIP 地址,来作为带有每个代理端口号的 Kafka bootstrap 地址。例如,您可以将监听程序配置为通过带有 TCP 端口配置的 Nginx Ingress Controller 公开 Kafka 集群。

cluster-ip 侦听器配置示例

#...
spec:
  kafka:
    #...
    listeners:
      - name: clusterip
        type: cluster-ip
        tls: false
        port: 9096
    #...
Copy to Clipboard Toggle word wrap

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat