You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bitnami Kafka Helm Chart SSL域名验证失败(DNS/LoadBalancer场景)及优化咨询

解决Bitnami Kafka Helm Chart中TLS证书与advertisedListeners不匹配的问题

核心问题原因

Bitnami Kafka Helm Chart默认会自动抓取LoadBalancer的公网IP,以此生成advertised.listeners配置。但你的TLS证书绑定的是自定义域名,证书的主题备用名称(SAN)不包含该IP,导致客户端发起SSL握手时因域名/IP不匹配触发认证失败,错误信息如下:

org.apache.kafka.common.errors.SslAuthenticationException: SSL handshake failed
Caused by: javax.net.ssl.SSLHandshakeException: No subject alternative names matching IP address <ip> found

优雅解决方案:使用externalDomain参数自动生成正确配置

Bitnami Chart内置了externalDomain参数,无需手动编写完整的advertisedListeners,只需传入你的Kafka域名,Chart会自动生成匹配的advertised.listeners配置。

具体配置示例

在Helm values文件(或helm install/helm upgrade命令中)添加以下配置:

externalDomain: "your-kafka.example.com"
tls:
  enabled: true
  # 若使用cert-manager管理Let's Encrypt证书,补充证书相关配置:
  certManager:
    enabled: true
    issuer:
      name: "letsencrypt-prod"
      kind: "ClusterIssuer"

配置生效逻辑

当设置externalDomain后,Chart会根据你启用的协议(PLAINTEXT/SSL等)自动构建对应的advertised.listeners,例如:

  • 仅启用SSL时,生成SSL://your-kafka.example.com:9093
  • 同时启用PLAINTEXT和SSL时,生成PLAINTEXT://your-kafka.example.com:9092,SSL://your-kafka.example.com:9093

这样客户端获取到的advertised地址是绑定证书的域名,与证书的CN/SAN完全匹配,即可避免SSL握手失败问题。

验证配置正确性

部署完成后,可进入Kafka Pod查看server.properties中的配置:

kubectl exec -it <kafka-pod-name> -- cat /opt/bitnami/kafka/config/server.properties | grep advertised.listeners

输出应显示为你设置的域名,而非LoadBalancer的IP。

备选方案:手动指定advertisedListeners

如果需要更细粒度的控制(比如混合不同协议或端口),仍可手动设置advertisedListeners:

advertisedListeners:
  external:
    - "SSL://your-kafka.example.com:9093"

但externalDomain是更贴合Chart设计的优雅方式,能减少手动配置的复杂度。

内容的提问来源于stack exchange,提问作者SilverTear

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 03:52:46