ssl - 内部将域名解析为 Kubernetes 服务

标签 ssl dns kubernetes lets-encrypt

我们在 Kubernetes 中运行大量应用程序,并使用 HAProxy 和使用 LetsEncrypt 生成的证书在 pod 内处理 TLS 终止。

这对于来自 Kubernetes 集群外部的流量非常有效,因为请求使用证书中指定的域名。

然而,对于使用服务名称的内部通信 - 使用像 https:///这样的 url - url 的主机部分不再匹配证书中定义的内容,从而导致失败。

有没有办法让 Kubernetes 的 dns 系统将完整的域名解析到特定的服务,这样它就不会被路由到集群之外?

最佳答案

我可以想到您可以采用的几个选项:

  1. 如果您信任集群网络的安全性,则可以让仅传输集群的请求通过 http 而不是 https 运行。

  2. 您可以使用 SNI 让您的 HAProxy 实例为内部请求提供不同的证书。 .您需要一种方法来生成和分发内部证书,但它允许您向客户端提供与 Kubernetes 服务名称匹配的证书。

  3. 继续解析 FQDN,而不用担心将请求路由出去然后返回到集群中。这实际上与即将构建到 Kubernetes 集群联合中的跨集群服务发现/联合功能没有什么不同。

实际上没有办法注入(inject)/覆盖外部 FQDN 解析以返回内部服务 IP。

关于ssl - 内部将域名解析为 Kubernetes 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37834230/

相关文章:

dns - 什么是保证不可解析(但有效)的 URL?

kubernetes - 在哪里可以下载OpenShift 4 CodeReady容器VirtualBox crcbundle文件?

elasticsearch - 如何从 minikube 连接到主机上安装的 elasticsearch(本地开发和 kvm2)

c# - 如何为 IIS 创建自己的证书颁发机构?

ssl - Heroku:搭载安全

关于反向代理到 TLS 微服务的 Spring Gateway 问题

mysql - 使用 DNS 名称在两个 VM 之间进行通信

security - 使用 Open ID(例如在 Firefox 中)时 Google App Engine 安全警告的原因?

dns - 我可以使用 dig 同时查找 NS 和 A

Jenkins Kubernetes Serviceaccount 无法列出 Pod