问题描述
场景:
- 在 1 个 Azure Kubernetes 服务 (AKS) 中,有 2 个 .NET 服务在运行:Service1 和 Service2
- Service1 和 Service2 都侦听 HTTP:80 和 HTTPS:443
- 两个服务都运行 Istio 和 Istio 代理
为确保同一集群中服务之间的流量加密, 使用双向 TLS,
Service1 是否需要调用 Service2 HTTPS:443 端点?
或
调用 Service2 HTTP:80 就足够了,其余的由 istio 处理?
解决方法
使用 Istio 时(除非您有非常严格的安全要求,这是不太可能的)应用程序通常不应启动 HTTPS 连接。
让 Istio 做自动 mTLS。实际上,当应用程序启动 HTTPS 时,您会失去 Istio 功能。
在这种情况下,流量在 Istio 外部被加密,您将失去遥测等功能,因为代理无法读取流量。
也可以让 Istio 为外部调用(网格外)发起 HTTPS 连接。这称为 TLS origination。但是,这需要一些配置和客户端库,它们本身启动 HTTPS 连接并不能使用