Configurazione di un mesh multi-cluster al di fuori di Google Cloud

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:

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.

  1. 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)")
    
  2. Crea una variabile di ambiente per l'identificatore mesh.

    export MESH_ID="proj-${PROJECT_NUMBER}"
    
  3. 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 e CLUSTER_NAME_2 con i nomi dei tuoi cluster.

  • Sostituisci PATH_TO_KUBECONFIG_1 e PATH_TO_KUBECONFIG_2 con i file kubeconfig per i tuoi cluster.

Mesh CA

  1. 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 -
    
  2. 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

  1. 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 -
    
  2. 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.

  1. 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
    
  2. 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