非扁平网络场景下,基于开源istio治理CCE多集群

💡 原文中文,约11900字,阅读约需29分钟。
📝

内容提要

该文章介绍了基于开源istio治理CCE多集群的非扁平网络场景,通过istio-eastwestgateway解决了网格跨网络访问的难题。文章详细介绍了方案的背景、方案简介以及跨网络多控制面网格环境搭建的步骤,同时还介绍了跨集群的服务访问、跨集群的灰度发布和地域负载均衡的验证方法。

🔎

延伸解读

非扁平网络方案的核心机制

文章指出,非扁平网络方案的关键在于istio-eastwestgateway东西向网关。当客户端工作负载请求其他集群的服务时,流量会先被转发到目标集群的入口网关,再由网关转发到工作负载容器。这一过程依赖Split Horizon EDS技术,istiod根据调用方与Endpoint的网络标签决定是否将Endpoint地址转换为网关地址,从而实现跨网络通信。

多控制面配置的注意事项

在多控制面模型中,每个集群都需要安装istio,并配置相同的meshID和不同的clusterName、network。istiod需要访问remote集群的apiserver,因此需要为每个集群的apiserver绑定公网地址,并通过kubeconfig生成secret供istiod使用。此外,跨集群mTLS要求共享root CA,各集群的CA证书需由root CA签发。

灰度发布与地域负载均衡的交互

文章提醒,当同时使用灰度发布和地域负载均衡时,VirtualService通常作用于不同集群,而DestinationRule作用于同一集群的不同Endpoint。流量会先按灰度规则分发到不同版本的服务,再考虑地域负载均衡。如果不同region的集群部署了不同版本的服务,从其中一个region的客户端访问时,流量可能按灰度规则分发到不同region,从而忽略地域负载均衡,容易引起误解。

跨集群访问的限制与安全

跨集群访问时,只有注入了istio-proxy的实例才能接收跨网络流量,且访问方式仅支持serviceName:port,不能通过podIP或clusterIP访问。东西向网关虽然公开在互联网上,但背后的服务只能被拥有可信mTLS证书和工作负载ID的服务访问。生产环境可能需要添加防火墙规则来防止外部攻击。

❓

Q&A

什么是istio-eastwestgateway,它的作用是什么?

istio-eastwestgateway是一个关键技术,解决了网格跨网络访问的难题,能够将流量从一个集群转发到另一个集群的入口网关。

如何在非扁平网络中部署多个集群?

在非扁平网络中,可以通过为每个集群指定网络环境,并在安装istio时配置相应的网络标识来实现多集群部署。

跨集群流量是如何被识别并转发的?

跨集群流量通过network标识进行识别,istiod会根据调用方及Endpoint的网络标签决定是否进行Endpoint地址转换。

如何实现跨集群的灰度发布?

跨集群的灰度发布需要在每个集群中配置相同的VirtualService和DestinationRule,以确保流量治理规则的一致性。

地域负载均衡是如何配置的?

地域负载均衡通过DestinationRule配置实现,允许在不同地域的集群间进行故障转移,确保流量的可预测性。

在跨网络多控制面网格中有哪些注意事项?

注意事项包括只有注入了istio-proxy的实例才能接受跨网络流量,以及灰度发布和地域负载均衡的配置需谨慎,以避免流量分发误解。

🏷️

标签

➡️

继续阅读