首页 文章

服务证书

提问于
浏览
0

从VM迁移到Kubernetes .

我们在多个VM上运行我们的服务 . 服务在多个VM上运行,并且在它们前面有VIP . 客户将访问VIP,VIP将路由流量到服务 . 在这里,我们使用SSL的SSL证书和使用HTTPS的VIP到VIP .

此处,服务将使用JKS文件部署到VM中 . 此JKS文件将具有用于公开HTTPS以及与启用SSL的数据库通信的证书 .

如何在Kubernetes集群中实现相同的功能?需要HTTPS用于VIP和服务,以及从服务到启用SSL的数据库的通信 .

1 回答

  • 1

    取决于你运行Kubernetes(内部部署,AWS,GKE,GCE等)的平台,你有几种方法可以做到,但我将描述一个适用于所有平台的解决方案 - 带有HTTPS终止的Ingress .

    因此,在Kubernetes中,您可以使用Ingress对象提供对集群内应用程序的访问 . 它可以提供负载 balancer ,HTTPS终止,路径路由等 . 在大多数情况下,您可以使用基于Nginx的Ingress控制器 . 此外,如果需要,它还提供TCP负载 balancer 和SSL直通 .

    要提供从用户到您的服务的路由,您需要:

    • 将您的应用程序部署为PodsService的组合 .

    • 部署Ingress controlle r,它将管理您的Ingress对象 .

    • 为您的证书创建secret .

    • 使用TLS设置创建一个 Ingress 对象,指向您的服务,让Ingress将您的 secret 与您的证书一起使用,如下所示:

    spec: tls: hosts: - foo.bar.com secretName: foo-secret

    • 现在,当您调用 foo.bar.com 地址时,Ingress使用基于FQDN的路由,并使用 service 对象在您的客户端和群集中的pod之间提供HTTPS连接,该对象知道您的pod的确切位置 . 你可以阅读它的工作原理herehere .

    如何在集群内的服务之间进行加密通信 - 您可以使用与 secrets 相同的方案为所有服务提供SSL密钥,并设置服务以使用应用程序的HTTPS endpoints 而不是HTTP . 从技术上讲,它与在没有Kubernetes的安装中使用https upstream相同,但是Nginx的所有配置都将根据您的 ServiceIngress 对象配置自动提供 .

相关问题