設定混合式網格
本頁面說明如何為下列平台設定混合網格:
- 混合式: 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 項目。
設定環境變數和預留位置
安裝東西向閘道時,您需要下列環境變數。
建立專案編號的環境變數。請在以下指令中,將 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-8 | \ ./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-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」。