Configura un mesh ibrido
Questa pagina spiega come configurare un mesh ibrido per le piattaforme seguenti:
- Ibrido: GKE su Google Cloud e Google Distributed Cloud (solo software) per VMware
- Ibrido: GKE su Google Cloud e Google Distributed Cloud (solo software) per bare metal
Seguendo queste istruzioni, configuri due cluster, ma puoi estendere questo processo per incorporare qualsiasi numero di cluster nel tuo mesh.
Prerequisiti
- Tutti i cluster devono essere registrati nello stesso progetto host del parco risorse.
- Tutti i cluster GKE devono trovarsi in una configurazione VPC condiviso sulla stessa rete.
- L'indirizzo del control plane Kubernetes del cluster e l'indirizzo del gateway devono essere raggiungibili da ogni cluster nel mesh. Il progetto Google Cloud in cui si trovano i cluster GKE deve essere autorizzato a creare tipi di bilanciamento del carico esterni. Ti consigliamo di utilizzare le reti autorizzate e le regole firewall VPC per limitare l'accesso.
- I cluster privati, inclusi i cluster privati GKE, non sono supportati. Se utilizzi cluster on-premise, inclusi Google Distributed Cloud (solo software) per VMware e Google Distributed Cloud (solo software) per bare metal, l'indirizzo del control plane Kubernetes e l'indirizzo del gateway devono essere raggiungibili dai pod nei cluster GKE. Ti consigliamo di utilizzare CloudVPN per connettere la subnet del cluster GKE alla rete del cluster on-premise.
- Se utilizzi Istio CA, utilizza lo stesso certificato radice personalizzato per tutti i cluster.
Prima di iniziare
Devi avere accesso ai file kubeconfig per tutti i cluster che stai configurando nel mesh. Per il cluster GKE, per creare un nuovo file kubeconfig per il cluster, puoi esportare KUBECONFIG env con il percorso completo del file come valore nel terminale e generare la voce kubeconfig.
Configura le variabili di ambiente e i segnaposto
Quando installi il gateway est-ovest, hai bisogno delle seguenti variabili di ambiente.
Crea una variabile di ambiente per il numero di progetto. Nel comando seguente, sostituisci FLEET_PROJECT_ID con l'ID progetto del progetto host del parco risorse.
export PROJECT_NUMBER=$(gcloud projects describe FLEET_PROJECT_ID --format="value(projectNumber)")Crea una variabile di ambiente per l'identificatore del mesh.
export MESH_ID="proj-${PROJECT_NUMBER}"Crea variabili di ambiente per i nomi delle reti.
I cluster GKE utilizzano per impostazione predefinita il nome della rete del cluster:
export NETWORK_1="PROJECT_ID-CLUSTER_NETWORK"
Altri cluster utilizzano
default:export NETWORK_2="default"
Tieni presente che se hai installato Cloud Service Mesh su altri cluster con valori diversi per
--network_id, devi passare gli stessi valori a NETWORK_2.
Installa il gateway est-ovest
Installa un gateway in CLUSTER_1 (il tuo cluster GKE) dedicato al traffico est-ovest a CLUSTER_2 (il tuo cluster on-premise):
asm/istio/expansion/gen-eastwest-gateway.sh \ --mesh ${MESH_ID} \ --network ${NETWORK_1} \ --revision asm-1311-19 | \ ./istioctl --kubeconfig=PATH_TO_KUBECONFIG_1 install -y -f -Tieni presente che questo gateway è pubblico su internet per impostazione predefinita. I sistemi di produzione potrebbero richiedere ulteriori limitazioni di accesso, ad esempio regole firewall, per impedire attacchi esterni.
Installa un gateway in CLUSTER_2 dedicato al traffico est-ovest per CLUSTER_1.
asm/istio/expansion/gen-eastwest-gateway.sh \ --mesh ${MESH_ID} \ --network ${NETWORK_2} \ --revision asm-1311-19 | \ ./istioctl --kubeconfig=PATH_TO_KUBECONFIG_2 install -y -f -
Esporre servizi
Poiché i cluster si trovano su reti separate, devi esporre tutti i servizi (\*.local) sul gateway est-ovest in entrambi i cluster. Sebbene questo gateway sia pubblico su internet, i servizi che si trovano dietro possono essere accessibili solo da servizi con un certificato mTLS e un ID workload attendibili, proprio come se si trovassero sulla stessa rete.
Esponi i servizi tramite il gateway est-ovest per ogni cluster
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
Abilita il rilevamento degli endpoint
Esegui il comando asmcli create-mesh per abilitare il rilevamento degli endpoint. Questo esempio mostra solo due cluster, ma puoi eseguire il comando per abilitare il rilevamento degli endpoint su cluster aggiuntivi, in base al limite di servizio di GKE Hub.
./asmcli create-mesh \
FLEET_PROJECT_ID \
PATH_TO_KUBECONFIG_1 \
PATH_TO_KUBECONFIG_2
Verifica la connettività multi-cluster
Vedi Inserimento di proxy sidecar.