为Nginx Ingress配置自定义证书遇自签名证书错误求助
解决Nginx Ingress未使用指定证书的问题
核心问题排查与修复步骤
1. 修复Ingress配置的语法错误
你的Ingress配置中rules部分存在语法问题:host和http被拆分为两个独立的规则条目,导致Kubernetes无法正确识别域名与路径的关联,cert-manager也无法为目标域名匹配证书。
错误配置片段:
rules: - host: ro**-eu-**.names.domain.net - http: paths: - path: /* pathType: Prefix backend: service: name: ro**-eu-** port: number: 443
修正后的配置:
rules: - host: ro**-eu-**.names.domain.net http: paths: - path: /* pathType: Prefix backend: service: name: ro**-eu-** port: number: 443
2. 明确绑定已有Wildcard证书
由于你已经存在状态为Ready的wildcard-*-domain-net Secret,需要在Ingress的spec.tls部分手动指定该Secret,避免cert-manager尝试创建新证书(或无法关联已有证书):
spec: ingressClassName: public tls: - hosts: - ro**-eu-**.names.domain.net secretName: wildcard-*-domain-net # 关联已有的wildcard证书Secret rules: # 修正后的rules条目...
3. 验证cert-manager与ClusterIssuer状态
执行以下命令检查ClusterIssuer是否正常工作:
kubectl describe clusterissuer letsencrypt-cf-dns
确认Status字段为Ready,且Events中无错误信息(如DNS验证失败、API调用超时等)。
4. 检查Ingress的事件与关联状态
查看Ingress的事件日志,确认cert-manager是否成功关联证书:
kubectl describe ingress ro**-eu-** -n io***
重点关注Events部分,是否存在Successfully authorized certificate或类似提示;如果有错误,根据提示排查(如域名不匹配、Secret权限问题等)。
5. 强制重载Nginx Ingress Controller
即使日志显示配置已同步,手动重启控制器确保配置生效:
kubectl rollout restart deployment nginx-ingress-controller -n <你的Ingress控制器命名空间>
6. 验证证书生效
重启完成后,再次使用openssl命令检测:
openssl s_client -showcerts -connect ro**-eu-**.names.domain.net:443
检查返回的证书是否为你的Let's Encrypt wildcard证书。
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

