使用https和TLS保护Kubernetes集群中的内部服务通信

时间:2018-03-13 18:01:30

标签: ssl https kubernetes microservices

我正在研究一套微服务,我需要保护各个服务之间的通信(使用https + TLS)

服务部署具有使用指定的群集IP设置的服务对象。创建服务时,kube-dns会自动创建格式为* .cluster.local的DNS记录。问题是我不允许在我的组织中创建包含“本地”的SN的TLS证书。因此,我为服务创建的任何证书最终都会导致证书验证失败,因为SN与域名不匹配。我想做的是使用我自己的自定义域名(即servicename.cluster-internal.com)向kube-dns添加一个CNAME,该域名将返回* .cluster.local域,然后该域将解析为正确的ClusterIP 。我将创建SN设置为我的自定义域的证书,以便当服务尝试握手并建立安全连接时,证书验证不会失败。

我愿意接受其他方式,但我不想依赖其他类型的DNS提供商,或者不得不自己编写。

1 个答案:

答案 0 :(得分:0)

在我们以正确的方式解决问题之前,我们在集群中运行的服务中禁用了证书验证。我不推荐这种方法,但是这是一种更轻松的解锁方法。

我们通过自定义DNS解决了正确的方法。由于我们是使用ACS-Engine部署群集的,因此只需在cluster definition中使用一些更新的选项重新部署群集即可。

参见下文:

"kubernetesConfig": {
"kubeletConfig": {
    "--cluster-domain": "domain.you.own"
  }
}

这使我们能够在“ domain.you.own”中剪切证书,然后重新启用证书验证。