我遇到了以下问题。我是GCP/Cloud的新手,我已经在GKE中创建了一个集群,并在那里部署了我们的应用程序,在集群中安装了nginx作为POD,我们公司有一个授权的SSL证书,我已经在GCP中的证书中上传了该证书。
在DNS服务中,我已经创建了一个与入口IP匹配的A记录。当我在浏览器中调用URL时,它仍然显示网站仍然不安全,并显示消息“Kubernetes入口控制器假证书”。
我使用了以下指南https://cloud.google.com/load-balancing/docs/ssl-certificates/self-managed-certs#console_1
但是,我无法执行步骤3“将SSL证书与目标代理相关联”,因为它要求“URLMap”,而我无法在GCP控制台中找到它。
有没有人像我一样经历过同样的问题或者如果有人帮助我,那就太好了。
谢谢你,祝你好运!
3条答案
按热度按时间sr4lhrrt1#
我能够通过向ingress-nginx-controller部署添加一个额外的参数来解决这个问题。
对于上下文:我的TLS密钥位于默认名称空间中,名为
letsencrypt-secret-prod
,因此我想将其添加为Nginx控制器的默认SSL证书。我的第一个解决方案是编辑Nginx控制器的
deployment.yaml
,并在containers[0].args
列表的末尾添加以下行:这使得yaml的那一部分看起来像这样:
但我用的是掌舵图:
ingress-nginx/ingress-nginx
,所以我希望这个配置在那个图表的values.yaml
文件中,这样我就可以在以后必要的时候升级它。因此,在阅读值文件时,我替换了属性:
controller.extraArgs
,看起来像这样:为此:
这会重新启动部署,并将参数放在正确的位置。
现在我可以使用入口而不需要为每个入口指定
tls.secretName
,这太棒了。下面是一个使用HTTPS的示例入口:
kx5bkwkv2#
您可以将您的SSL/TLS证书保存到K8s secret中,并将其附加到入口。
您需要在入口配置TLS块,不要忘记在入口添加
ingress.class
详细信息如欲了解更多信息,请访问:https://medium.com/avmconsulting-blog/how-to-secure-applications-on-kubernetes-ssl-tls-certificates-8f7f5751d788
您可能会在浏览器中看到类似以下的内容:
这来自入口控制器和附加到入口或入口控制器的错误证书默认假证书**。
qyzbxkaa3#
另外,不要忘记检查主题可选名称是否确实包含与CN相同的值。如果不包含,证书无效,因为行业已不再使用CN。现在刚学到这一点