我正在处理一组微服务,我需要保护各个服务之间的通信(使用httpsTLS)
服务部署设置了一个服务对象,并分配了集群IP。当创建服务时,库贝-dns会自动创建格式为*. club.local的DNS记录。问题是我不允许在我的组织中使用包含“本地”的SN创建TLS证书。因此,我为服务创建的任何证书最终都会失败证书验证,因为SN与域名不匹配。我想做的是使用我自己的自定义域名(即servicename.cluster-internal.com)向库贝-dns添加CNAME,该域名将返回*.club.local域,然后解析为正确的ClusterIP。我将创建SN设置为自定义域的证书,以便在服务尝试握手和建立安全连接时证书验证不会失败。
我对其他方法持开放态度,但我不希望依赖于其他类型的DNS提供程序,也不希望自己编写。
在我们以正确的方式解决这个问题之前,我们在集群中运行的服务中禁用了证书验证。我不推荐这种方法,但这是一种更容易解除屏蔽的方法。
我们通过自定义DNS解决了这个问题。由于我们使用ACS引擎部署集群,因此只需在集群定义中使用一些更新的选项重新部署集群。
见下文:
"kubernetesConfig": {
"kubeletConfig": {
"--cluster-domain": "domain.you.own"
}
}
这使我们能够在“domain.you. own”中剪切证书并重新打开证书验证。