11.7. Kafka 侦听程序证书

您可以为以下类型的监听程序提供自己的服务器证书和私钥:

  • 用于 OpenShift 集群内部通信的内部 TLS 侦听器
  • 外部监听程序(路由负载均衡器、 入口节点端口 类型),它们启用了 TLS 加密,用于 Kafka 客户端和 Kafka 代理之间的通信

这些用户提供的证书称为 Kafka 侦听程序证书

为外部监听程序提供 Kafka 侦听程序证书可让您利用现有安全基础架构,如组织的私有 CA 或公共 CA。Kafka 客户端将使用 Kafka 侦听程序证书而不是由集群 CA 或客户端 CA 签名的证书连接到 Kafka 代理。

在需要时,您必须手动更新 Kafka 侦听程序证书。

11.7.1. 提供您自己的 Kafka 侦听程序证书

此流程演示了如何配置监听程序以使用您自己的私钥和服务器证书,称为 Kafka 侦听程序证书

您的客户端应用程序应使用 CA 公钥作为可信证书,以验证 Kafka 代理的身份。

先决条件

  • OpenShift 集群。
  • Cluster Operator 正在运行。
  • 对于每个侦听器,由外部 CA 签名的兼容服务器证书。

流程

  1. 创建包含私钥和服务器证书的 Secret

    oc create secret generic my-secret --from-file=my-listener-key.key --from-file=my-listener-certificate.crt
  2. 编辑集群的 Kafka 资源。配置侦听器,以在 configuration.brokerCertCertChainAndKey 属性中使用您的 Secret、证书文件和私钥文件。

    启用 TLS 加密的负载均衡器 外部监听程序配置示例

    # ...
    listeners:
      - name: plain
        port: 9092
        type: internal
        tls: false
      - name: external
        port: 9094
        type: loadbalancer
        tls: true
        authentication:
          type: tls
        configuration:
          brokerCertChainAndKey:
            secretName: my-secret
            certificate: my-listener-certificate.crt
            key: my-listener-key.key
    # ...

    TLS 侦听器的配置示例

    # ...
    listeners:
      - name: plain
        port: 9092
        type: internal
        tls: false
      - name: tls
        port: 9093
        type: internal
        tls: true
        authentication:
          type: tls
        configuration:
          brokerCertChainAndKey:
            secretName: my-secret
            certificate: my-listener-certificate.crt
            key: my-listener-key.key
    # ...

  3. 应用新配置以创建或更新资源:

    oc apply -f kafka.yaml

    Cluster Operator 会启动 Kafka 集群的滚动更新,该更新会更新监听器的配置。

    注意

    如果您在已由 TLS 或外部监听器使用的 Secret 中更新 Kafka 侦听程序证书,还会启动滚动更新。