osixia/openldap Helm Chart配置TLS证书及挂载不生效问题咨询
问题根因
配置不生效是几个常见配置错误共同导致的:
- 同时配置了
customTLS和tls两个TLS配置段,不同版本的openldap Helm Chart仅支持其中一组参数,同时配置会触发参数冲突,导致证书配置未被正确读取 - 注释了
LDAP_TLS_CRT_FILENAME、LDAP_TLS_KEY_FILENAME、LDAP_TLS_CA_CRT_FILENAME三个环境变量,osixia/openldap容器默认会找ldap.crt、ldap.key作为证书文件,而cert-manager生成的Kubernetes TLS Secret默认的证书key是tls.crt、tls.key,文件名不匹配导致容器无法识别你提供的证书 - 手动配置的hostPath挂载与Chart自动生成的证书挂载逻辑冲突,且Windows本地路径在k3s集群中存在路径映射问题,反而导致证书目录被覆盖
- 重复定义了
LDAP_BASE_DN参数,可能引发环境变量读取异常 - 若之前已经启动过服务,持久化卷中已经留存了自动生成的自签证书,再次启动时会复用旧数据不会重新读取配置
修正方案
1. 清理旧部署残留
先卸载现有部署并清理持久化卷数据,避免旧证书残留影响:
helm uninstall <你的openldap release名称> kubectl delete pvc -l app.kubernetes.io/name=openldap
2. 修正values.yaml配置
调整后的核心配置段如下,其余配置保持不变即可:
# 仅保留customTLS配置段,删除额外的tls配置段 customTLS: enabled: true secret: "blaklabz-io-tls" # 你的cert-manager生成的tls类型secret名称 CA: enabled: true secret: "<你的CA证书所在generic secret名称>" # 确保该secret中存在ca.crt的key # 删除原有的extraVolumes、extraVolumeMounts配置段,Chart开启customTLS后会自动挂载证书 env: LDAP_ORGANISATION: "Blaklabz" LDAP_DOMAIN: "blaklabz.io" LDAP_BACKEND: "hdb" LDAP_REQCERT: "allow" LDAP_BASE_DN: "dc=blaklabz,dc=io" # 删掉重复的定义,仅保留一行 # 取消这三个变量的注释,和secret中的证书key对应 LDAP_TLS_CRT_FILENAME: "tls.crt" LDAP_TLS_KEY_FILENAME: "tls.key" LDAP_TLS_CA_CRT_FILENAME: "ca.crt" LDAP_TLS_ENFORCE: "false" LDAP_TLS_VERIFY_CLIENT: "never"
3. 重新部署
用修正后的values重新安装服务:
helm install <你的release名称> <openldap chart源> -f values.yaml
验证方法
部署完成后进入Pod检查证书:
kubectl exec -it <openldap pod名> -- bash ls /container/run/service/slapd/assets/certs/ # 查看证书内容确认是你自己的通配符证书,不是自动生成的自签证书 openssl x509 -in /container/run/service/slapd/assets/certs/tls.crt -text -noout
用ldaps协议测试连通性即可确认配置生效。
内容的提问来源于stack exchange,提问作者bL4ck4d1n
相关产品推荐
相关产品推荐

