設定混合式網格

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

  • 混合式: Google Cloud 適用於 VMware 的 GKE 和 Google Distributed Cloud (僅限軟體)
  • 混合型: Google Cloud 和 Google Distributed Cloud (僅限軟體) 適用於裸機

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

事前準備

  • 所有叢集都必須註冊至同一個機群主機專案
  • 所有 GKE 叢集都必須位於同一個網路的共用虛擬私有雲設定中。
  • 叢集的 Kubernetes 控制層位址和閘道位址必須可從網格中的每個叢集存取。 Google Cloud GKE 叢集所在的專案應允許建立外部負載平衡類型。建議您使用授權網路虛擬私有雲防火牆規則限制存取權。
  • 系統不支援私人叢集,包括 GKE 私人叢集。如果您使用內部部署叢集,包括 VMware 適用的 Google Distributed Cloud (僅限軟體) 和 bare metal 適用的 Google Distributed Cloud (僅限軟體),則 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-1253-8 | \
        ./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-1253-8 | \
        ./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」。