設定混合式網格

本頁說明如何為下列平台設定混合網格:

  • 混合式:GKE on Google Cloud 和 Google Distributed Cloud (僅限軟體) for VMware
  • 混合式:GKE on Google Cloud 和 Google Distributed Cloud (僅限軟體) for Bare Metal

按照這些操作說明設定兩個叢集後,您可以擴充這個程序,將任意數量的叢集併入網格。

必要條件

  • 所有叢集都必須註冊至同一個機群主專案
  • 所有 GKE 叢集都必須位於同一個網路的共用虛擬私有雲設定中。
  • 網格中的每個叢集都必須能連上叢集的 Kubernetes 控制層位址和閘道位址。您應允許 GKE 叢集所在的 Google Cloud 專案建立外部負載平衡類型。建議您使用授權網路VPC 防火牆規則來限制存取權。
  • 系統不支援私人叢集,包括 GKE 私人叢集。如果您使用內部部署叢集,包括 Google Distributed Cloud (僅限軟體) for VMware 和 Google Distributed Cloud (僅限軟體) for Bare Metal,則 Kubernetes 控制層位址和閘道位址必須可從 GKE 叢集中的 Pod 存取。建議您使用 CloudVPN,將 GKE 叢集的子網路連線至地端部署叢集的網路。
  • 如果使用 Istio CA,請為所有叢集使用相同的自訂根憑證。

事前準備

您需要存取網格中所有叢集的 kubeconfig 檔案。如要為 GKE 叢集建立新的 kubeconfig 檔案,請在終端機中匯出 KUBECONFIG 環境變數,並將檔案的完整路徑做為值,然後產生 kubeconfig 項目。

設定環境變數和預留位置

安裝東西向閘道時,您需要下列環境變數。

  1. 為專案編號建立環境變數。在下列指令中,將 FLEET_PROJECT_ID 替換為車隊主機專案的專案 ID。

    export PROJECT_NUMBER=$(gcloud projects describe FLEET_PROJECT_ID --format="value(projectNumber)")
    
  2. 建立網格 ID 的環境變數。

    export MESH_ID="proj-${PROJECT_NUMBER}"
    
  3. 為網路名稱建立環境變數。

    • GKE 叢集預設會使用叢集網路名稱:

      export NETWORK_1="PROJECT_ID-CLUSTER_NETWORK"

    • 其他叢集使用 default

      export NETWORK_2="default"

    請注意,如果您在其他叢集上安裝 Cloud Service Mesh,且 --network_id 的值不同,則應將相同的值傳遞至 NETWORK_2。

安裝東西向閘道

  1. 在 CLUSTER_1 (您的 GKE 叢集) 中安裝專用於 CLUSTER_2 (您的地端叢集) 的東西向流量閘道:

    asm/istio/expansion/gen-eastwest-gateway.sh \
        --mesh ${MESH_ID} \
        --network ${NETWORK_1}  \
        --revision asm-1246-9 | \
        ./istioctl --kubeconfig=PATH_TO_KUBECONFIG_1 install -y -f -
    

    請注意,這個閘道預設會在網際網路上公開。為防範外部攻擊,生產系統可能需要額外的存取限制,例如防火牆規則。

  2. 在 CLUSTER_2 中安裝專為 CLUSTER_1 東西向流量使用的閘道。

    asm/istio/expansion/gen-eastwest-gateway.sh \
        --mesh ${MESH_ID} \
        --network ${NETWORK_2} \
        --revision asm-1246-9 | \
        ./istioctl --kubeconfig=PATH_TO_KUBECONFIG_2 install -y -f -
    

公開服務

由於叢集位於不同網路上,您需要在兩個叢集的東西向閘道上公開所有服務 (\*.local)。雖然這個閘道在網際網路上公開,但只有具備可信任的 mTLS 憑證和工作負載 ID 的服務,才能存取閘道後方的服務,就像這些服務位於同一網路上一樣。

透過每個叢集的東西向閘道公開服務

    kubectl --kubeconfig=PATH_TO_KUBECONFIG_1 apply -n istio-system -f \
        asm/istio/expansion/expose-services.yaml
    kubectl --kubeconfig=PATH_TO_KUBECONFIG_2 apply -n istio-system -f \
        asm/istio/expansion/expose-services.yaml

啟用端點探索功能

執行 asmcli create-mesh 指令,啟用端點探索功能。這個範例只顯示兩個叢集,但您可以執行指令,在其他叢集上啟用端點探索功能,但須遵守 GKE Hub 服務限制

  ./asmcli create-mesh \
      FLEET_PROJECT_ID \
      PATH_TO_KUBECONFIG_1 \
      PATH_TO_KUBECONFIG_2

驗證多叢集連線

請參閱「插入補充 Proxy」。