官方多控制面部署流程
https://istio.io/docs/setup/install/multicluster/gateways/
多集群相关配置(平台级别)
部署之后跟多集群相关的配置有以下三种
1.Gateway
istio-multicluster-ingressgateway:作用是允许.local后缀的流量进来
istio-multicluster-egressgateway
2.DestinationRule
istio-multicluster-destinationrule:作用是.local流量出去的时候,使用tmls协议
3.EnvoyFilter
istio-multicluster-ingressgateway:作用是把.local后缀的流量在进来的时候,把后缀替换成.svc.cluster.local
按照自定义的规则
例如有三个集群gzone(global zone), uzone1, uzone2,统一的服务部署在gzone上,uzone1和uzone2都需要访问gzone, 此时只需要执行以下三个步骤:
1.所有集群istio-multicluster-ingressgateway的host字段只需要填上自己所在的集群后缀
例如gzone的gw,hosts字段改为 *.gzone
2.uzone1和uzone2新建立一个destinationrule, istio-multicluster-dr-gzone
3.gzone的新建一个envoyfilter, 实现把后缀.gzone换成.svc.cluster.local
总结
A集群访问B集群,A集群叫做本端,B集群叫对端则平台级需要配置:
本端:
- 只需要新建一个DestinationRule,带通配符,指明协议
对端:
- GateWay:需要指明本集群后缀
- EnvoyFilter:需要做本集群后缀到local的转换
原理
//todo
看Gateway\DR\EF在envoy config中的作用位置
应用级别
//todo
当然想要两个集群通信成功,仅仅是平台级别配置是不够的,还需要一些应用级别的配置,例如VirtualService\Serviceentry\DestinationRule这些