7.4. 使用节点端口访问 Kafka


使用节点端口从 OpenShift 集群外的外部客户端访问 AMQ Streams Kafka 集群。

要连接到代理,您可以为 Kafka bootstrap 地址指定主机名和端口号,以及用于 TLS 加密的证书。

该流程显示基本的 nodeport 侦听器配置。您可以使用监听程序属性启用 TLS 加密(tls)并指定客户端身份验证机制(身份验证)。使用 配置属性 添加额外的配置。例如,您可以将以下配置属性用于 nodeport 侦听器:

preferredNodePortAddressType
指定作为节点地址检查的第一个地址类型。
externalTrafficPolicy
指定服务是否将外部流量路由到节点本地还是集群范围的端点。
nodePort
覆盖 bootstrap 和 broker 服务的分配的节点端口号。

如需有关监听器配置的更多信息,请参阅 GenericKafkaListener 模式参考

先决条件

  • 正在运行的 Cluster Operator

在此过程中,Kafka 集群名称为 my-cluster。侦听器的名称是 外部

流程

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

    例如:

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    metadata:
      labels:
        app: my-cluster
      name: my-cluster
      namespace: myproject
    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

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

    为每个 Kafka 代理以及外部 bootstrap 服务创建 NodePort 类型服务。

    为 bootstrap 和代理创建的节点端口服务

    NAME                                 TYPE      CLUSTER-IP      PORT(S)
    my-cluster-kafka-external-0          NodePort  172.30.55.13    9094:31789/TCP
    my-cluster-kafka-external-1          NodePort  172.30.250.248  9094:30028/TCP
    my-cluster-kafka-external-2          NodePort  172.30.115.81   9094:32650/TCP
    my-cluster-kafka-external-bootstrap  NodePort  172.30.30.23    9094:32650/TCP
    Copy to Clipboard Toggle word wrap

    用于客户端连接的 bootstrap 地址传播到 Kafka 资源的 status

    bootstrap 地址的状态示例

    status:
      clusterId: Y_RJQDGKRXmNF7fEcWldJQ
      conditions:
        - lastTransitionTime: '2023-01-31T14:59:37.113630Z'
          status: 'True'
          type: Ready
      listeners:
        # ...
        - addresses:
            - host: ip-10-0-224-199.us-west-2.compute.internal
              port: 32650
          bootstrapServers: 'ip-10-0-224-199.us-west-2.compute.internal:32650'
          certificates:
            - |
              -----BEGIN CERTIFICATE-----
    
              -----END CERTIFICATE-----
          name: external
          type: external
      observedGeneration: 2
     # ...
    Copy to Clipboard Toggle word wrap

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

    oc get kafka my-cluster -o=jsonpath='{.status.listeners[?(@.name=="external")].bootstrapServers}{"\n"}'
    
    ip-10-0-224-199.us-west-2.compute.internal:32650
    Copy to Clipboard Toggle word wrap
  4. 提取集群 CA 证书。

    oc get secret my-cluster-cluster-ca-cert -o jsonpath='{.data.ca\.crt}' | base64 -d > ca.crt
    Copy to Clipboard Toggle word wrap
  5. 将您的客户端配置为连接到代理。

    1. 指定 Kafka 客户端中的 bootstrap 主机和端口作为连接到 Kafka 集群的 bootstrap 地址。例如,ip-10-0-224-199.us-west-2.compute.internal:32650
    2. 将提取的证书添加到 Kafka 客户端的信任存储中,以配置 TLS 连接。

      如果启用了客户端身份验证机制,您还需要在客户端上配置它。

注意

如果您使用自己的监听程序证书,请检查您是否需要将 CA 证书添加到客户端的信任存储配置中。如果是一个公共(外部)CA,您通常不需要添加它。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat