nginx Kubernates、Ingress控制器和证书

bvk5enib  于 12个月前  发布在  Nginx
关注(0)|答案(2)|浏览(225)

早上好,我的问题是我的应用程序的部署。在解释我的问题之前,我给予你一个上下文:

  • 我有.net rest API应用程序
  • 我的应用程序的范围是使一个中间件的最终用户与另一个应用程序(母亲应用程序)
  • 我的应用程序将REST API公开给我的SPA应用程序(供最终用户使用)
  • 我的应用程序暴露2 SOAP服务,以允许MotherAPP向我发送通知

现在,MotherAPP强迫我为这个SOAP服务创建自签名证书。这样,MotherAPP和我之间的通信通道是安全的。我的证书有通用名(CN):xxxxxxx(CN名称是从MotherAPP强制的。我不能更改它)
我想在Kubernates/Docker上部署我的应用程序。
我的问题是:

  • 我建立我的“部署”。在这一刻只有一个副本
  • 我构建我的clusterIP服务,以将我的POD暴露到群集中
    *我想公开两个入口控制器,一个是我的API,使用我的域提供商的证书,另一个使用自签名证书。

我安装了nginx控制器,但似乎不可能构建一个主机与证书的通用名称不同的入口控制器。入口控制器不返回该证书。从nginx返回的错误是:

“x509:证书对任何名称都无效,但希望与[主机]匹配"

如何使用我的自签名证书对外公开我的群集?
我希望能找到我的想法的解决方案或替代方案

**更新:**我尝试安装minikube,我按照谷歌的步骤创建ingress控制器和ingress [minikube指南][1]

当我添加证书和注解以绕过公共名称检查时,入口控件将返回默认的Kubernates证书。
用于绕过检查的注解为:

  • nginx.ingress.kubernetes.io/proxy-ssl-verify:“关闭”
  • nginx.ingress.kubernetes.io/proxy-ssl-server-name:“fe.com“
  • nginx.ingress.kubernetes.io/proxy-ssl-name:“fe.com“
lymnna71

lymnna711#

你可以尝试这个注解nginx.ingress.kubernetes.io/proxy-ssl-name然后放置你的自签名证书的CN。确保你也使用注解nginx.ingress.kubernetes.io/proxy-ssl-verify然后设置为“off”。
如果这些注解不起作用,您也可以按照此link作为如何将自签名证书配置到nginx-ingress的指导。该链接使用nginx-ingress和自签名证书作为此配置的示例。

uqjltbpv

uqjltbpv2#

我想我大概明白你想达到什么目的了。请阅读下面的内容。
我想公开两个入口控制器。一个是我的API与我的域提供商的证书,另一个是自签名证书。
你很少需要两个Ingress Controller。你很可能需要一个Ingress Controller和两个Ingress资源。你可以找到关于here差异的解释。此外,这里是Ingress Class的官方文档a link
一旦你有了Ingress Controller,你需要创建一个TLS Kubernetes secret并部署一个Ingress资源。你需要在Ingress TLS配置中指定secret名称。可以在Ingress的官方Kubernetes文档中找到一个示例。

相关问题