将集群添加到 Anthos Service Mesh On-Prem

本指南介绍如何设置含有多个 GKE on VMware 的 Anthos Service Mesh。您可以扩展此流程,将任意数量的集群整合到网格中。

多集群 Anthos Service Mesh 配置可以满足一些重要企业场景,例如扩缩、位置和隔离。如需了解详情,请参阅多集群用例。此外,您还应优化您的应用,以充分利用服务网格。如需了解详情,请参阅准备适用于 Anthos Service Mesh 的应用

如果您安装了先前版本的 Anthos Service Mesh,请参阅升级 Anthos Service Mesh GKE on VMware。此安装会在集群上启用支持的功能

使用要求

在开始之前,本指南假定您使用在本地安装 Anthos Service Mesh 中所述的步骤创建的新集群或现有集群。

  • 本指南的要求是对在本地安装 Anthos Service Mesh 中列出的要求的补充。

  • 集群上安装有 Anthos Service Mesh 1.8 或更高版本。请参阅在本地安装 Anthos Service Mesh 来安装集群或将其升级到所需版本。

    gkectl version

    如果您未安装 gkectl,请参阅 GKE On-Prem 下载

  • 所有集群都在 vSphere 上的 GKE On-Prem 上运行。

  • 您需要之前用于在集群上安装 Anthos Service Mesh 的配置软件包。如果需要其他副本,可以使用以下命令下载:

    kpt pkg get https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.8-asm .

    您无需在配置软件包中设置任何值。

安装东-西网关

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

    asm/istio/expansion/gen-eastwest-gateway.sh \
    --mesh mesh1 --cluster cluster1 --network network1 --revision asm-186-8 | \
    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}"
    

后续步骤