第 4 章 访问 OpenShift 集群外的 Kafka


使用外部监听程序将 AMQ Streams Kafka 集群公开给 OpenShift 环境之外的客户端。

指定在外部监听器配置中公开 Kafka 的连接类型

  • nodeport 使用 NodePort 类型 Services
  • LoadBalancer 使用 Loadbalancer 类型 服务
  • Ingress 使用 Kubernetes IngressNGINX Ingress Controller 用于 Kubernetes
  • 路由 使用 OpenShift 路由和 HAProxy 路由器

有关监听器配置的更多信息,请参阅 通用KafkaListener 模式参考

如果要了解有关每种连接类型的代理和配件的更多信息,请参阅 Strimzi 中的访问 Apache Kafka

注意

只有在 OpenShift 中才支持 路由

4.1. 使用节点端口访问 Kafka

此流程描述了如何使用节点端口从外部客户端访问 AMQ Streams Kafka 集群。

要连接到代理,您需要 Kafka bootstrap 地址 的主机名和端口号,以及用于身份验证的证书。

先决条件

  • OpenShift 集群
  • 正在运行的 Cluster Operator

流程

  1. 配置一个 Kafka 资源,并将外部监听程序设置为 nodeport 类型。

    例如:

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    spec:
      kafka:
        # ...
        listeners:
          - name: external
            port: 9094
            type: nodeport
            tls: true
            authentication:
              type: tls
            # ...
        # ...
      zookeeper:
        # ...
    Copy to Clipboard Toggle word wrap
  2. 创建或更新资源。

    oc apply -f <kafka_configuration_file>
    Copy to Clipboard Toggle word wrap

    为每个 Kafka 代理创建 NodePort 类型服务,以及外部的 bootstrap service。bootstrap 服务将外部流量路由到 Kafka 代理。用于连接的节点地址会被传播到 Kafka 自定义资源 的状态

    在 secret <cluster _name> -cluster-ca-cert 中也创建了用于验证 kafka 代理身份的集群 CA 证书。

  3. 检索您用来从 Kafka 资源状态访问 Kafka 集群的 bootstrap 地址。

    oc get kafka <kafka_cluster_name> -o=jsonpath='{.status.listeners[?(@.name=="<listener_name>")].bootstrapServers}{"\n"}'
    Copy to Clipboard Toggle word wrap

    例如:

    oc get kafka my-cluster -o=jsonpath='{.status.listeners[?(@.name=="external")].bootstrapServers}{"\n"}'
    Copy to Clipboard Toggle word wrap
  4. 如果启用了 TLS 加密,提取代理证书颁发机构的公共证书。

    oc get secret KAFKA-CLUSTER-NAME-cluster-ca-cert -o jsonpath='{.data.ca\.crt}' | base64 -d > ca.crt
    Copy to Clipboard Toggle word wrap

    使用 Kafka 客户端中提取的证书配置 TLS 连接。如果您启用了任何身份验证,您也需要配置 SASL 或 TLS 身份验证。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat