本指南说明如何使用多个 GKE on VMware 和 GKE on Bare Metal 来设置 Anthos Service Mesh。您可以扩展此流程,将任意数量的集群整合到网格中。
本指南假定您已使用在本地安装 Anthos Service Mesh 中的步骤来安装 GKE on VMware 或 GKE on Bare Metal。如果您安装了先前版本的 Anthos Service Mesh,请参阅在本地升级 Anthos Service Mesh。本指南将集群描述为 network1
上的 cluster1
和 network2
上的 cluster2
。它还使用环境变量将集群上下文定义为 CTX_CLUSTER1
和 CTX_CLUSTER2
。
多集群 Anthos Service Mesh 配置可以满足一些重要企业场景,例如扩缩、位置和隔离。如需了解详情,请参阅多集群用例。此外,您还应优化您的应用,以充分利用服务网格。如需了解详情,请参阅准备适用于 Anthos Service Mesh 的应用。
使用要求
在开始之前,本指南假定您使用在本地安装 Anthos Service Mesh 中所述的步骤创建的新集群或现有集群。
本指南的要求是对在本地安装 Anthos Service Mesh 中列出的要求的补充。
您需要之前用于在集群上安装 Anthos Service Mesh 的配置软件包。如果需要其他副本,可以使用以下命令下载:
kpt pkg get \ https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.11 asm
安装东-西网关
在 cluster1 中安装专用于东-西流量的网关。默认情况下,此网关在互联网上为公开。生产系统可能需要额外的访问限制(例如防火墙规则),以防止外部攻击。
asm/istio/expansion/gen-eastwest-gateway.sh \ --mesh mesh1 --cluster cluster1 --network network1 --revision asm-1118-4 | \ istioctl --context="${CTX_CLUSTER1}" install -y -f -
在 cluster2 中安装专用于 cluster1 东-西流量的网关。
/asm/istio/expansion/gen-eastwest-gateway.sh \ --mesh mesh1 --cluster cluster2 --network network2 | \ istioctl --context="${CTX_CLUSTER2}" install -y -f -
公开服务
由于集群位于不同的网络中,因此您需要在这两个集群中的东-西网关上公开所有服务 (*.local
)。虽然此网关在互联网上为公开,但只有具有可信 mTLS 证书和工作负载 ID 的服务才能访问其背后的服务,就像它们位于同一网络上一样。
通过 cluster1 东-西网关公开服务。
kubectl --context="${CTX_CLUSTER1}" apply -n istio-system -f \ asm/istio/expansion/expose-services.yaml
通过 cluster2 东-西网关公开服务。
kubectl --context="${CTX_CLUSTER2}" apply -n istio-system -f \ asm/istio/expansion/expose-services.yaml
启用端点发现
在 cluster2 中安装远程密钥,提供对 cluster1 的 API 服务器的访问权限。
istioctl x create-remote-secret \ --context="${CTX_CLUSTER1}" \ --name=cluster1 | \ kubectl apply -f - --context="${CTX_CLUSTER2}"
在 cluster1 中安装远程密钥,提供对 cluster2 的 API 服务器的访问权限。
istioctl x create-remote-secret \ --context="${CTX_CLUSTER2}" \ --name=cluster2 | \ kubectl apply -f - --context="${CTX_CLUSTER1}"