【问题标题】:Securing internal service communication in a Kubernetes cluster with https and TLS使用 https 和 TLS 保护 Kubernetes 集群中的内部服务通信
【发布时间】:2018-08-22 02:32:57
【问题描述】:

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

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

我对其他方法持开放态度,但我不希望依赖其他类型的 DNS 提供商或必须自己编写。

【问题讨论】:

  • 你找到答案了吗?
  • 您找到解决方案了吗?

标签: ssl https kubernetes microservices


【解决方案1】:

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

我们通过自定义 DNS 以正确的方式解决了这个问题。由于我们使用 ACS-Engine 部署集群,因此只需使用 cluster definition 中的一些更新选项重新部署我们的集群。

见下文:

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

这使我们能够削减“domain.you.own”中的证书并重新启用证书验证。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-26
    • 1970-01-01
    • 2018-08-14
    • 1970-01-01
    • 2018-12-17
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多