3.4. 使用 OpenShift 路由访问 Kafka


此流程描述了如何使用路由从 OpenShift 外部的外部客户端访问 AMQ Streams Kafka 集群。

要连接到代理,您需要路由 bootstrap 地址 的主机名以及用于 TLS 加密的证书。

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

先决条件

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

步骤

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

    例如:

    apiVersion: kafka.strimzi.io/v1beta1
    kind: Kafka
    metadata:
      labels:
        app: my-cluster
      name: my-cluster
      namespace: myproject
    spec:
      kafka:
        # ...
        listeners:
          - name: listener1
            port: 9094
            type: route
            tls: true
            # ...
        # ...
      zookeeper:
        # ...
    Copy to Clipboard Toggle word wrap
    警告

    OpenShift Route 地址包含 Kafka 集群的名称、侦听器的名称以及在其中创建的命名空间的名称。例如,my -cluster-kafka-listener1-bootstrap-myproject (CLUSTER-NAME-kafka-LISTENER-NAME-bootstrap-NAMESPACE)。请注意,地址的长度不超过 63 个字符的最大限制。

  2. 创建或更新资源。

    oc apply -f KAFKA-CONFIG-FILE
    Copy to Clipboard Toggle word wrap

    为每个 Kafka 代理和外部 bootstrap 服务 创建 ClusterIP 类型服务。服务将流量从 OpenShift 路由路由到 Kafka 代理。同时也为每个服务创建一个 OpenShift Route 资源,以利用 HAProxy 负载平衡器公开它们。用于连接的 DNS 地址会传播到每个 服务的状态

    也使用与 Kafka 资源相同的名称来创建用于验证 kafka 代理身份的集群 CA 证书。

  3. 从 Kafka 资源 的状态检索可用于访问 Kafka 集群的 bootstrap 服务地址。

    oc get kafka KAFKA-CLUSTER-NAME -o=jsonpath='{.status.listeners[?(@.type=="external")].bootstrapServers}{"\n"}'
    Copy to Clipboard Toggle word wrap
  4. 提取代理认证机构的公共证书。

    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