从VM迁移到Kubernetes。
我们正在多个虚拟机上运行我们的服务。服务在多个VM上运行,并且在它们前面有VIP。客户将访问VIP,VIP将路由流量到服务。在这里,我们使用SSL的SSL证书和使用HTTPS的VIP到VIP。
此处服务将使用JKS文件部署到VM中。此JKS文件将具有用于公开HTTPS以及与启用SSL的数据库通信的证书。
如何在Kubernetes集群中实现相同的功能?需要HTTPS用于VIP和服务,以及从服务到启用SSL的数据库的通信。
答案 0 :(得分:1)
取决于您运行Kubernetes(内部部署,AWS,GKE,GCE等)的平台,您有多种方法可以实现,但我将介绍一种适用于所有平台的解决方案 - 使用HTTPS终止的Ingress它
因此,在Kubernetes中,您可以使用Ingress对象提供对群集内应用程序的访问。它可以提供负载平衡,HTTPS终止,路径路由等。在大多数情况下,您可以使用基于Nginx的Ingress控制器。此外,如果需要,它还提供TCP负载平衡和SSL直通。
要提供从用户到您的服务的路由,您需要:
Ingress
对象,指向您的服务,让Ingress将您的secret
与您的证书一起使用:
spec:
tls:
hosts:
- foo.bar.com
secretName: foo-secret
foo.bar.com
地址时,Ingress使用基于FQDN的路由,并使用service
对象在您的客户端和群集中的pod之间提供HTTPS连接,该对象知道您的pod的确切位置是。您可以阅读它的工作原理here和here。集群内服务之间的加密通信如何 - 您可以使用与secrets
相同的方案为所有服务提供SSL密钥,并设置服务以使用应用程序的HTTPS端点而不是HTTP。从技术上讲,它与在没有Kubernetes的安装中使用https upstream相同,但Nginx的所有配置都将根据您的Service
和Ingress
对象配置自动提供。