【发布时间】:2021-11-14 06:49:08
【问题描述】:
我正在尝试将在 k8s 上运行的 Istio 服务网格从 http 转换为 https,但偶然发现了许多问题。我真的不明白这样做所需的所有步骤。
据我所知,有 2 种流量需要在网格中使用 TLS:
-
内部服务之间:通过 Istio 文档乱窜让我知道 Istio 会以某种方式自动配置服务之间的 mTLS,因此所有服务都可以安全地通信,而无需任何额外配置。但是,我仍然不明白他们是如何实现这个 mTLS 的。它与普通 TLS 有何不同,mTLS 在另一种流量(外部客户端到内部服务)中的作用是什么?
-
从外部的客户端到内部的服务:这就是我不知道该怎么做的地方。我知道为了让服务拥有 TLS,它需要由受信任的 CA 提供的 TLS 证书。但是,由于外部客户端不会直接与内部服务对话,而只能通过 Istio 入口网关。我需要为每个服务提供证书还是只为入口网关提供证书?我的所有服务现在都为
HTTP公开端口 80。我需要将它们全部转换为端口 443 和HTTPS还是只需要入口网关就足够了?
关于证书,如果我现在只使用自签名证书,我是否可以使用 openssl 创建证书和密钥并从中创建机密(可能在命名空间之间使用 kubed 同步),然后所有服务都使用相同的证书和钥匙?到处都建议我使用cert-manager。不过不知道值不值得?
如果有人能用一些插图解释一下,我将非常感激。
【问题讨论】:
标签: ssl kubernetes https kubernetes-ingress istio