为什么浏览器中Kubernetes证书仍显示DNS Name=ingress.local?
根因说明
手动创建的TLS Secret未被Gitlab Ingress正确引用,Gitlab Helm Chart默认启用内置自签证书生成逻辑,默认证书的主题备用名称为ingress.local,因此浏览器访问时返回的不是你生成的包含nip.io域名的证书,触发不安全连接提示。
修复步骤
- 确认Secret命名空间匹配
Gitlab如果安装在独立命名空间(默认一般为gitlab),需要保证TLS Secret和Gitlab部署在同一个命名空间,否则Ingress无法读取Secret内容。若之前创建在错误命名空间,执行以下命令重建:# 替换尖括号内的占位符为实际值 kubectl delete secret tls <secret-name> -n <原错误命名空间> kubectl create secret tls <secret-name> --key server-key.pem --cert server.crt -n gitlab - 安装/升级Gitlab时指定自定义证书配置
执行helm命令时新增以下参数,关闭内置证书生成逻辑,指定使用你提前创建的Secret:# 首次安装用install,已安装的话用upgrade helm upgrade --install gitlab gitlab/gitlab \ -n gitlab \ --set global.hosts.domain=<ip-address>.nip.io \ --set global.ingress.tls.secretName=<secret-name> \ --set certmanager.install=false \ --set global.ingress.configureCertmanager=false - 验证配置生效
执行以下命令查看Ingress的TLS配置,确认返回的Secret名称和你创建的一致:kubectl get ingress -n gitlab -o yaml | grep secretName - 验证访问
清理浏览器缓存或者打开无痕模式访问ip-address.nip.io,查看证书详情确认主题备用名称已包含你配置的nip.io相关域名即可正常访问。
内容的提问来源于stack exchange,提问作者floormind
相关产品推荐
相关产品推荐

