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