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

3
我正在开发一组微服务,需要保护各个服务之间的通信(使用https + TLS)。
服务部署使用Service对象,并分配了一个Cluster IP。当创建服务时,kube-dns会自动创建格式为*.cluster.local的DNS记录。问题在于,我所在的机构不允许我创建包含“local”的SN TLS证书。因此,我为服务创建的任何证书都将因SN与域名不匹配而无法通过证书验证。我想做的是向kube-dns添加一个CNAME,使用我的自定义域名(例如servicename.cluster-internal.com),返回*.cluster.local域名,然后解析到正确的ClusterIP。我将使用设置为我的自定义域的SN创建证书,这样当服务尝试握手并建立安全连接时,证书验证将不会失败。
我可以接受其他方法来完成这个任务,但我更愿意不依赖其他类型的DNS提供商或编写自己的DNS服务。

你找到答案了吗? - Pedro Henrique
你找到解决方案了吗? - praveen.chandran
1个回答

0

在我们正确解决问题之前,我们在运行集群中的服务中禁用了证书验证。我不建议采用这种方法,但这是一种更容易的解除阻塞的方式。

我们通过自定义 DNS 来正确解决了这个问题。由于我们使用 ACS-Engine 部署集群,只需要在集群定义中更新一些选项,重新部署集群即可。

请参见下文:

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接