我们在 Kubernetes 中运行大量应用程序,并使用 HAProxy 和使用 LetsEncrypt 生成的证书在 pod 内处理 TLS 终止。
这对于来自 Kubernetes 集群外部的流量非常有效,因为请求使用证书中指定的域名。
然而,对于使用服务名称的内部通信 - 使用像 https:///这样的 url - url 的主机部分不再匹配证书中定义的内容,从而导致失败。
有没有办法让 Kubernetes 的 dns 系统将完整的域名解析到特定的服务,这样它就不会被路由到集群之外?
最佳答案
我可以想到您可以采用的几个选项:
如果您信任集群网络的安全性,则可以让仅传输集群的请求通过 http 而不是 https 运行。
您可以使用 SNI 让您的 HAProxy 实例为内部请求提供不同的证书。 .您需要一种方法来生成和分发内部证书,但它允许您向客户端提供与 Kubernetes 服务名称匹配的证书。
继续解析 FQDN,而不用担心将请求路由出去然后返回到集群中。这实际上与即将构建到 Kubernetes 集群联合中的跨集群服务发现/联合功能没有什么不同。
实际上没有办法注入(inject)/覆盖外部 FQDN 解析以返回内部服务 IP。
关于ssl - 内部将域名解析为 Kubernetes 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37834230/