我们在Kubernetes中运行了很多应用程序,并使用HAProxy和使用LetsEncrypt生成的证书在Pod中处理TLS终止。
这适用于来自Kubernetes集群外部的流量,因为请求使用证书中指定的域名。
但是对于使用服务名称的内部通信 - 使用类似https:///的网址 - 网址的主机部分不再与证书中定义的内容相匹配,从而导致失败。
有没有办法让Kubernetes的DNS系统将完整域名解析为特定服务,因此它不会在集群外部路由?
答案 0 :(得分:1)
我可以想到你可以追求的几个选择:
如果您信任群集网络的安全性,则可以通过http而不是https来传输仅运行群集的请求。
您可以让您的HAProxy实例使用SNI为内部请求提供不同的证书。您需要一种生成和分发内部证书的方法,但它允许您向客户端提供与Kubernetes服务名称匹配的证书。
继续解析FQDN,不用担心将请求路由出来然后再回到群集中。这实际上与即将建立的Kubernetes集群联合中的跨集群服务发现/联合功能没有什么不同。
实际上没有办法注入/覆盖外部FQDN解析以返回内部服务IP。