【发布时间】:2021-01-20 05:25:02
【问题描述】:
我想在 kubernetes 集群中运行的不同服务之间实现 TLS 相互身份验证,我发现 Istio 是一个很好的解决方案,可以在不更改任何代码的情况下实现这一目标。
我正在尝试使用 Istio sidecar 注入在集群内运行的服务之间进行 TLS 相互身份验证。
- 外部流量通过 nginx 入口控制器进入网格。我们希望继续使用它而不是 Istio 入口控制器(我们希望做出尽可能少的更改)。
- 当 Istio Sidecar 注入被禁用时,服务之间能够正常通信。但是,一旦我在应用程序的命名空间中启用了 sidecar,应用程序就无法再为请求提供服务(我猜传入的请求会被 envoy sidecar 代理丢弃)。
我想做什么:
- 在 namespace-2(nginx 入口控制器、服务 1 和服务 2)上启用 istio sidecar 代理注入,以便所有服务通过 TLS 相互身份验证相互通信。
我不想做的事:
- 在 nginx 入口控制器上启用 istio sidecar 代理注入(我不想对其进行任何更改,因为它用作多个其他工作负载的前端)。
几周以来,我一直在努力让它工作,但没有成功。社区的任何帮助将不胜感激。
【问题讨论】:
-
这几周你已经尝试了什么?您是否尝试将 istio injection 仅在 namespace-2 中与
kubectl label namespace namespace-2 istio-injection=enabled联系起来? -
我在 namespace-2 上打开了 sidecar 注入,但在 namespace-1 上没有打开。由于 nginx 入口控制器有多个其他入口资源,我不想受到影响。
-
我的目标是至少在 service-1 和 service-2 之间启用 TLS 相互身份验证。如果您有除 istio 之外的任何解决方案,可以在不更改服务代码的情况下实现,我也想探索一下。谢谢
-
AFAIK 如果你在 namespace-2 中启用了注入,那么这里的服务已经启用了 mTLS。从 istio 1.5.0 开始默认启用它。查看here 了解有关服务之间的 mtls 如何工作的更多信息。
标签: kubernetes google-cloud-platform google-kubernetes-engine istio envoyproxy