Questa guida spiega come configurare un mesh multi-cluster per le seguenti piattaforme:
- GKE su VMware
- Google Distributed Cloud Virtual for Bare Metal
- GKE su AWS
- Amazon EKS
Questa guida mostra come configurare due cluster, ma puoi estendere questo processo per incorporare un numero qualsiasi di cluster nel tuo mesh.
Prima di iniziare
Questa guida presuppone che tu abbia installato Anthos Service Mesh utilizzando asmcli install
. Devi avere asmcli
e il pacchetto di configurazione che asmcli
scarica nella directory specificata in --output_dir
quando hai eseguito asmcli install
.
Se devi effettuare la configurazione, segui i passaggi descritti in
Inizia per:
- Installare gli strumenti richiesti
- Scarica
asmcli
- Concedi le autorizzazioni di amministratore del cluster
- Convalida il progetto e il cluster
Devi accedere ai file kubeconfig per tutti i cluster che stai configurando nel mesh.
Configurazione delle variabili di ambiente e dei segnaposto
Quando installi il gateway est-ovest, sono necessarie le seguenti variabili di ambiente.
Crea una variabile di ambiente per il numero di progetto. Nel seguente comando, 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 mesh.
export MESH_ID="proj-${PROJECT_NUMBER}"
Crea variabili di ambiente per i nomi dei cluster nel formato richiesto da
asmcli
:export CLUSTER_1="cn-FLEET_PROJECT_ID-global-CLUSTER_NAME_1" export CLUSTER_2="cn-FLEET_PROJECT_ID-global-CLUSTER_NAME_2"
Installa il gateway est-ovest
Nei seguenti comandi:
Sostituisci
CLUSTER_NAME_1
eCLUSTER_NAME_2
con i nomi dei tuoi cluster.Sostituisci
PATH_TO_KUBECONFIG_1
ePATH_TO_KUBECONFIG_2
con i file kubeconfig per i tuoi cluster.
Mesh CA
Installa un gateway in cluster1 dedicato al traffico est-ovest verso
$CLUSTER_2
. Per impostazione predefinita, questo gateway sarà pubblico su Internet. I sistemi di produzione potrebbero richiedere limitazioni di accesso aggiuntive, ad esempio le regole firewall, per evitare attacchi esterni.asm/istio/expansion/gen-eastwest-gateway.sh \ --mesh ${MESH_ID} \ --cluster ${CLUSTER_1} \ --network default \ --revision asm-1118-4 | \ istioctl --kubeconfig=PATH_TO_KUBECONFIG_1 install -y --set spec.values.global.pilotCertProvider=kubernetes -f -
Installa in
$CLUSTER_2
un gateway dedicato al traffico est-ovest per$CLUSTER_1
.asm/istio/expansion/gen-eastwest-gateway.sh \ --mesh ${MESH_ID} \ --cluster ${CLUSTER_2} \ --network default \ --revision asm-1118-4 | \ istioctl install --kubeconfig=PATH_TO_KUBECONFIG_2 -y --set spec.values.global.pilotCertProvider=kubernetes -f -
CA Istio
Installa un gateway in cluster1 dedicato al traffico est-ovest verso
$CLUSTER_2
. Per impostazione predefinita, questo gateway sarà pubblico su Internet. I sistemi di produzione potrebbero richiedere limitazioni di accesso aggiuntive, ad esempio le regole firewall, per evitare attacchi esterni.asm/istio/expansion/gen-eastwest-gateway.sh \ --mesh ${MESH_ID} \ --cluster ${CLUSTER_1} \ --network default \ --revision asm-1118-4 | \ istioctl --kubeconfig=PATH_TO_KUBECONFIG_1 install -y -f -
Installa in
$CLUSTER_2
un gateway dedicato al traffico est-ovest per$CLUSTER_1
.asm/istio/expansion/gen-eastwest-gateway.sh \ --mesh ${MESH_ID} \ --cluster ${CLUSTER_2} \ --network default \ --revision asm-1118-4 | \ istioctl --kubeconfig=PATH_TO_KUBECONFIG_2 install -y -f -
Servizi di esposizione
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 sottostanti sono accessibili solo ai servizi con un certificato mTLS attendibile e un ID carico di lavoro, proprio come se si trovassero sulla stessa rete.
Esponi i servizi tramite il gateway est-ovest per
CLUSTER_NAME_1
.kubectl --kubeconfig=PATH_TO_KUBECONFIG_1 apply -n istio-system -f \ asm/istio/expansion/expose-services.yaml
Esponi i servizi tramite il gateway est-ovest per
CLUSTER_NAME_2
.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 consentire il rilevamento degli endpoint su altri cluster, in base al numero massimo consentito di cluster che puoi aggiungere al tuo parco risorse.
./asmcli create-mesh \
FLEET_PROJECT_ID \
PATH_TO_KUBECONFIG_1 \
PATH_TO_KUBECONFIG_2