服务证书

时间:2018-03-18 05:48:52

标签: kubernetes

从VM迁移到Kubernetes。

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

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

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

1 个答案:

答案 0 :(得分:1)

取决于您运行Kubernetes(内部部署,AWS,GKE,GCE等)的平台,您有多种方法可以实现,但我将介绍一种适用于所有平台的解决方案 - 使用HTTPS终止的Ingress它

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

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

  1. 将您的应用程序部署为PodsService的组合。
  2. 部署Ingress controlle r,它将管理您的Ingress对象。
  3. 为您的证书创建secret
  4. 使用TLS设置创建一个Ingress对象,指向您的服务,让Ingress将您的secret与您的证书一起使用:
  5. spec: tls: hosts: - foo.bar.com secretName: foo-secret

    1. 现在,当您调用foo.bar.com地址时,Ingress使用基于FQDN的路由,并使用service对象在您的客户端和群集中的pod之间提供HTTPS连接,该对象知道您的pod的确切位置是。您可以阅读它的工作原理herehere
    2. 集群内服务之间的加密通信如何 - 您可以使用与secrets相同的方案为所有服务提供SSL密钥,并设置服务以使用应用程序的HTTPS端点而不是HTTP。从技术上讲,它与在没有Kubernetes的安装中使用https upstream相同,但Nginx的所有配置都将根据您的ServiceIngress对象配置自动提供。