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

如何在Bitnami Kafka中使用Let's Encrypt证书及排障

使用Bitnami Kafka Helm Chart配置SASL_TLS+Let's Encrypt证书的连接问题

我们通过Let's Encrypt和cert-manager签发证书,使用Bitnami Kafka Helm Chart的sasl_tls机制,将生成的证书创建为Secret传入Chart的existingSecrets参数后,用KafkaJS连接Kafka broker时设置ssl: true,出现以下错误:

KafkaJSConnectionError: Connection error: unable to verify the first certificate

详细操作步骤

  • 开启Kafka Chart外部访问,配置端口9094:
    externalAccess.enabled: true
    externalAccess.autoDiscovery.enabled: true
    externalAccess.service.type: LoadBalancer
    externalAccess.service.ports.external: 9094
    externalAccess.service.domain: ""
    
  • 将LoadBalancer的IP绑定到域名xyz.com
  • 为xyz.com通过Let's Encrypt签发证书,生成tls.crt和tls.key文件
  • 重命名证书文件并创建Secret:
    kubectl create secret generic kafka-tls-0 --from-file=tls.crt=kafka-0.tls.crt --from-file=tls.key=kafka-0.tls.key
    
  • 修改Chart的TLS配置:
    tls.type: pem
    tls.pemChainIncluded: true
    tls.existingSecrets: ["kafka-tls-0"]
    
  • 应用配置启动broker
  • 在KafkaJS客户端中,尝试用ip:9094或xyz.com:9094作为broker地址,设置ssl: true连接

用户问题

  • 上述流程是否正确?有没有方向错误?
  • 报错原因是什么?是不是证书链配置错误?
  • 有没有其他Helm Chart可以实现该需求?

后续问题

  • 若配置成功,如何确保证书自动续期?是系统自动管理还是需要维护脚本?

问题解答

  1. 流程正确性与方向问题
    整体方向没问题,但存在几个细节疏漏:
  • 绑定域名时,必须确保xyz.com的DNS记录指向LoadBalancer的公网IP,且能正常解析
  • 创建Secret时,Bitnami Kafka的PEM格式证书要求tls.crt必须包含完整证书链(包括Let's Encrypt的中间证书),仅传入域名叶子证书会导致证书链不完整
  • 客户端连接必须使用xyz.com:9094,不能用IP:Let's Encrypt证书绑定域名,用IP连接会触发证书域名不匹配,同时引发证书链验证失败
  1. 报错原因
    大概率是证书链不完整:Let's Encrypt签发的证书需要搭配中间证书才能被客户端信任。如果tls.crt仅包含域名的叶子证书,未包含Let's Encrypt的中间证书(如R3证书),客户端无法完成证书链验证,就会抛出unable to verify the first certificate错误。
    另外,若客户端用IP而非域名连接,也会触发该错误(证书域名与连接地址不匹配,客户端拒绝信任)。

  2. 替代Helm Chart
    可考虑以下选项:

  • Strimzi Kafka Operator:原生支持Kubernetes上的Kafka部署,内置cert-manager与Let's Encrypt集成,证书管理、SASL_TLS配置更自动化,无需手动处理Secret和证书链
  • Confluent Platform Helm Charts:官方提供的Chart,对TLS、SASL的配置更精细化,适合企业级场景,但配置复杂度稍高

后续问题解答

若使用cert-manager签发Let's Encrypt证书,证书自动续期由cert-manager自动管理,无需额外脚本:

  • cert-manager会定期检查证书有效期(默认过期前30天),自动发起续期请求
  • 续期成功后,对应Secret会被自动更新
  • Bitnami Kafka Chart会监听Secret变化,自动重载证书(部分版本可能需要重启broker,建议验证Chart的证书热重载支持)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 06:50:27