在本地设置多集群网格

本指南说明如何使用多个 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 上的 cluster1network2 上的 cluster2。它还使用环境变量将集群上下文定义为 CTX_CLUSTER1CTX_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.10-asm asm
    

安装东-西网关

  1. 在 cluster1 中安装专用于东-西流量的网关。默认情况下,此网关在互联网上为公开。生产系统可能需要额外的访问限制(例如防火墙规则),以防止外部攻击。

    asm/istio/expansion/gen-eastwest-gateway.sh \
    --mesh mesh1 --cluster cluster1 --network network1 --revision asm-1106-2 | \
    istioctl --context="${CTX_CLUSTER1}" install -y -f -
    
  2. 在 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 的服务才能访问其背后的服务,就像它们位于同一网络上一样。

  1. 通过 cluster1 东-西网关公开服务。

    kubectl --context="${CTX_CLUSTER1}" apply -n istio-system -f \
    asm/istio/expansion/expose-services.yaml
    
  2. 通过 cluster2 东-西网关公开服务。

    kubectl --context="${CTX_CLUSTER2}" apply -n istio-system -f \
    asm/istio/expansion/expose-services.yaml
    

启用端点发现

  1. 在 cluster2 中安装远程密钥,提供对 cluster1 的 API 服务器的访问权限。

    istioctl x create-remote-secret \
    --context="${CTX_CLUSTER1}" \
    --name=cluster1 | \
    kubectl apply -f - --context="${CTX_CLUSTER2}"
    
  2. 在 cluster1 中安装远程密钥,提供对 cluster2 的 API 服务器的访问权限。

    istioctl x create-remote-secret \
    --context="${CTX_CLUSTER2}" \
    --name=cluster2 | \
    kubectl apply -f - --context="${CTX_CLUSTER1}"
    

后续步骤