提问人:Dr.Gonzo 提问时间:11/16/2023 最后编辑:Dr.Gonzo 更新时间:11/19/2023 访问量:61
Kubernates、Ingress 控制器和证书
Kubernates, Ingress controller and certificate
问:
早上好, 我的问题是部署我的应用程序。在解释我的问题之前,我给你一个背景:
- 我有.net rest api应用程序
- 我的应用程序范围是为最终用户制作中间件而不是另一个应用程序(MotherAPP)
- 我的应用程序向我的 SPA 应用公开 REST API(面向最终用户)
- 我的应用程序公开了 2 个 SOAP 服务,以允许 MotherAPP 向我发送通知
现在,MotherAPP强制我为这个SOAP服务创建自签名证书。这样一来,与MotherAPP之间的通信是安全的。我的证书有公用名 (CN):xxxxxxx(CN 名称是从 MotherAPP 强制的。我无法更改它)
我想在 kubernates/docker 上部署我的应用程序。
我的问题是:
- 我构建了我的“部署”。此时此刻只有一个副本
- 我构建了我的 clusterIP 服务以将我的 POD 暴露到集群中
- 我想公开两个入口控制器。一个用于我的 API,带有我的域提供商的证书,另一个用于自签名证书。
我安装了 nginx 控制器,但似乎不可能构建一个入口控制器,其主机与证书的通用名称不同。Ingress Controller 不返回该证书。nginx 返回的错误是:
“X509:证书对任何名称都无效,但希望匹配 [主机]”
如何使用我的自签名证书在外部公开我的集群?
我希望找到我的想法的解决方案或替代方案
更新:我尝试安装 minikube,并按照谷歌步骤创建入口控制器和入口 [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”
答:
您能否尝试此注释 nginx.ingress.kubernetes.io/proxy-ssl-name 然后放置自签名证书的 CN。确保您还使用注释 nginx.ingress.kubernetes.io/proxy-ssl-verify 然后设置为“关闭”。
如果这些注解不起作用,您也可以点击此链接作为有关如何将自签名证书配置为 nginx-ingress 的指南。该链接使用 nginx-ingress 和自签名证书作为此配置的示例。
我想我有点理解你想要实现的目标。请阅读下面的内容。
我想公开两个入口控制器。一个用于我的 API,带有我的域提供商的证书,另一个用于自签名证书。
您很少需要两个 Ingress Controller。您很可能需要一个 Ingress Controller 和两个 Ingress 资源。您可以在此处找到有关差异的解释。此外,这里是 Ingress Class 官方文档的链接。
拥有 Ingress Controller 后,需要创建 TLS Kubernetes 密钥并部署 Ingress 资源。您需要在入口 TLS 配置中指定密钥名称。可以在 Ingress 的官方 Kubernetes 文档中找到示例。
评论