Istio mTLS疑问:Sidecar与容器通信及K8s端口配置
Istio Sidecar 通信相关问题解答
问题1:IngressGateway TLS透传+网格内强制mTLS时,流量如何传递?
当IngressGateway启用TLS透传时,Gateway不会对流量做TLS解密,加密流量会直接转发到后端应用的Sidecar。后续的处理逻辑分两种情况:
- 若你在VirtualService或DestinationRule中配置了让Sidecar终止TLS,Sidecar会解密流量,然后以非加密的方式将请求转发给主容器;
- 若未配置Sidecar终止TLS,加密流量会被原样透传给主容器,由主容器自行完成TLS解密。
需要注意:网格内强制mTLS是Sidecar之间的通信加密规则,和Ingress的TLS透传属于不同层面的配置,二者互不影响——mTLS保证的是服务网格内部服务间的通信安全,而Ingress透传是外部流量进入网格后的处理逻辑。
问题2:是否必须在K8s Service中暴露非SSL端口?
不是必须的,具体取决于你的流量处理策略:
- 如果你的应用仅监听SSL端口,且希望Sidecar将加密流量直接透传给主容器(不做TLS终止),那么K8s Service只需要暴露对应的SSL端口即可,Sidecar会直接把加密流量转发到主容器的SSL端口;
- 如果让Sidecar负责终止TLS,那么主容器可以只监听非SSL端口,此时Service暴露非SSL端口即可;当然你也可以同时暴露SSL和非SSL端口,根据实际业务需求调整。
简单来说,Sidecar与主容器之间的通信是否加密,完全由你的TLS配置策略决定,并非必须使用非SSL端口。
内容的提问来源于stack exchange,提问作者santosh2000
相关产品推荐
相关产品推荐

