設定混合式網格
本頁說明如何為下列平台設定混合網格:
- 混合式: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 項目。
設定環境變數和預留位置
安裝東西向閘道時,您需要下列環境變數。
為專案編號建立環境變數。在下列指令中,將 FLEET_PROJECT_ID 替換為車隊主機專案的專案 ID。
export PROJECT_NUMBER=$(gcloud projects describe FLEET_PROJECT_ID --format="value(projectNumber)")
建立網格 ID 的環境變數。
export MESH_ID="proj-${PROJECT_NUMBER}"
為網路名稱建立環境變數。
GKE 叢集預設會使用叢集網路名稱:
export NETWORK_1="PROJECT_ID-CLUSTER_NETWORK"
其他叢集使用
default
:export NETWORK_2="default"
請注意,如果您在其他叢集上安裝 Cloud Service Mesh,且
--network_id
的值不同,則應將相同的值傳遞至 NETWORK_2。
安裝東西向閘道
在 CLUSTER_1 (您的 GKE 叢集) 中安裝專用於 CLUSTER_2 (您的地端叢集) 的東西向流量閘道:
asm/istio/expansion/gen-eastwest-gateway.sh \ --mesh ${MESH_ID} \ --network ${NETWORK_1} \ --revision asm-1253-11 | \ ./istioctl --kubeconfig=PATH_TO_KUBECONFIG_1 install -y -f -
請注意,這個閘道預設會在網際網路上公開。為防範外部攻擊,生產系統可能需要額外的存取限制,例如防火牆規則。
在 CLUSTER_2 中安裝專為 CLUSTER_1 東西向流量使用的閘道。
asm/istio/expansion/gen-eastwest-gateway.sh \ --mesh ${MESH_ID} \ --network ${NETWORK_2} \ --revision asm-1253-11 | \ ./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」。