12.4.1 集群感知的服务路由

Istio 1.1中引入了集群感知的服务路由能力,在单一控制平面拓扑配置下,使用Istio的Split-horizon EDS(水平分割端点发现服务)功能可以通过其入口网关将服务请求路由到其他集群。基于请求源的位置,Istio能够将请求路由到不同的端点。

在该配置中,从一个集群中的Sidecar代理到同一集群中的服务的请求仍然被转发到本地服务IP。如果目标工作负载在其他集群中运行,则使用远程集群的网关IP来连接到该服务。

如图12-3所示,主集群cluster1运行全套的Istio控制平面组件,同时集群cluster2仅运行Istio Citadel、Sidecar Injector和Ingress网关。不需要VPN连接,不同集群中的工作负载之间也不需要直接网络访问。

从共享的根CA为每个集群的Citadel生成中间CA证书,共享的根CA启用跨不同集群的双向TLS通信。为了便于说明,我们将samples/certs目录下Istio安装中提供的示例根CA证书用于两个集群。在实际部署中,你可能会为每个集群使用不同的CA证书,所有CA证书都由公共根CA签名。

在每个Kubernetes集群中(包括示例中的集群cluster1与cluster2)使用以下命令为生成的CA证书创建Kubernetes密钥:


kubectl create namespace istio-system
kubectl create secret generic cacerts -n istio-system \
  --from-file=samples/certs/ca-cert.pem \
  --from-file=samples/certs/ca-key.pem \
  --from-file=samples/certs/root-cert.pem \
  --from-file=samples/certs/cert-chain.pem

图12-3 集群感知的服务路由