4.3. 使用 ingress 访问 Kafka


此流程演示了如何使用 Nginx Ingress 从 OpenShift 外部的外部客户端访问 AMQ Streams Kafka 集群。

要连接到代理,您需要一个主机名(验证地址)用于 Ingress bootstrap 地址,以及用于身份验证的证书。

对于使用 Ingress 的访问,端口始终为 443。

TLS 透传

Kafka 通过 TCP 使用二进制协议,但 Kubernetes 的 NGINX Ingress Controller 设计为用于 HTTP 协议。要通过 Ingress 传递 Kafka 连接,AMQ Streams 使用 NGINX Ingress Controller 的 TLS 透传功能。确保在 NGINX Ingress Controller for Kubernetes 部署中启用了 TLS 透传。

由于它使用 TLS 透传功能,在使用 Ingress 公开 Kafka 时无法禁用 TLS 加密。

有关启用 TLS 透传的更多信息,请参阅 TLS 透传文档

先决条件

流程

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

    为 bootstrap 服务和 Kafka 代理指定 Ingress 主机。

    例如:

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    spec:
      kafka:
        # ...
        listeners:
          - name: external
            port: 9094
            type: ingress
            tls: true
            authentication:
              type: tls
            configuration: 
    1
    
              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
        # ...
      zookeeper:
        # ...
    Copy to Clipboard Toggle word wrap
    1
    bootstrap 服务和 Kafka 代理的 Ingress 主机。
  2. 创建或更新资源。

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

    为每个 Kafka 代理创建 ClusterIP 类型服务,以及额外的 bootstrap 服务。Ingress 控制器使用这些服务将流量路由到 Kafka 代理。还为每个服务创建一个 Ingress 资源,以使用 Ingress 控制器公开它们。Ingress 主机被传播到每个 服务的状态

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

    将您在 Kafka 客户端中的 配置和 端口 443 (BOOTSTRAP-HOST:443)中指定的 bootstrap 主机的地址作为 bootstrap 地址连接到 Kafka 集群。

  3. 提取代理证书颁发机构的公共证书。

    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