Questo documento descrive il funzionamento dei gateway multi-cluster in Google Kubernetes Engine (GKE). I gateway multi-cluster sono una potente soluzione di rete che consente di gestire il traffico per i servizi di cui è stato eseguito il deployment in più cluster GKE.
Questo documento è rivolto agli architetti cloud e agli specialisti di Networking che progettano e realizzano l'architettura della rete della propria organizzazione. Per saperne di più sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei Google Cloud contenuti, consulta Ruoli e attività comuni degli utenti di GKE Enterprise tasks.
Panoramica
Il gateway multi-cluster viene configurato utilizzando le risorse dell'API Gateway di Kubernetes. Il controller Gateway di GKE monitora queste risorse (Gateway, HTTPRoute) ed esegue automaticamente il provisioning e la manutenzione dell'infrastruttura di bilanciamento del carico globale richiesta Google Cloud . Questa infrastruttura fornisce una gestione avanzata del traffico per i servizi di cui è stato eseguito il deployment in più cluster GKE all'interno di un parco risorse. I gateway multi-cluster utilizzano Google Cloud's infrastruttura di bilanciamento del carico globale per fornire un unico punto di ingresso unificato per le applicazioni. Questo approccio offre i seguenti vantaggi:
- Semplifica la gestione
- Migliora l'affidabilità
- Abilita funzionalità avanzate di gestione del traffico
Funzionalità di gestione del traffico
I gateway multi-cluster offrono funzionalità avanzate per gestire il traffico su più cluster. Puoi implementare strategie di routing sofisticate, come implementazioni graduali e strategie blu/verde, per eseguire il deployment delle modifiche in sicurezza. Per un controllo granulare, puoi utilizzare la corrispondenza basata sull'intestazione per testare le modifiche con una piccola percentuale di traffico o suddividere il traffico in base al peso per spostare gradualmente le richieste tra i diversi backend dei cluster.
I gateway multi-cluster consentono anche di eseguire il mirroring del traffico, che invia una copia delle richieste degli utenti live a un nuovo servizio per testare le prestazioni senza influire sugli utenti. Per garantire l'affidabilità ed evitare sovraccarichi, i gateway multi-cluster supportano il failover basato sull'integrità e il bilanciamento del carico basato sulla capacità, che distribuisce le richieste in base alla capacità definita dei servizi.
Come funziona il gateway multi-cluster
Tutti i cluster GKE che partecipano a una configurazione di gateway multi-cluster devono essere registrati in un parco risorse. Un parco risorse fornisce un raggruppamento logico di cluster, che consente una gestione e una comunicazione coerenti tra i cluster. Un cluster GKE all'interno del parco risorse è designato come cluster di configurazione.
Il cluster di configurazione funge da punto di controllo centralizzato per la configurazione del gateway multi-cluster. Esegui il deployment di tutte le risorse dell'API Gateway multi-cluster, come Gateway e HTTPRoute, solo in questo cluster designato.
Il controller Gateway di GKE monitora il server API Kubernetes del cluster di configurazione per queste risorse.
Per scegliere un cluster di configurazione, prendi in considerazione un cluster regionale o un altro cluster GKE a elevata disponibilità. In questo modo, gli aggiornamenti delle risorse dell'API Gateway possono essere riconciliati continuamente dal controller.
Il controller del gateway multi-cluster utilizza i servizi multi-cluster (MCS) per rilevare e accedere ai servizi Kubernetes in più cluster GKE all'interno di un parco risorse. MCS è una funzionalità di GKE che consente Service Discovery e connettività tra i servizi eseguiti in diversi cluster GKE all'interno di un parco risorse.
MCG utilizza MCS per scoprire quali servizi sono disponibili in quali cluster per instradare il traffico esterno ai servizi. Il controller MCG utilizza le risorse dell'API MCS per raggruppare i pod in un singolo servizio indirizzabile che si estende su più cluster.
In base alle configurazioni definite nelle risorse dell'API Gateway, il controller Gateway di GKE fornisce un bilanciatore del carico delle applicazioni esterno o un bilanciatore del carico delle applicazioni interno. Questo bilanciatore del carico funge da frontend per l'applicazione e distribuisce il traffico direttamente ai pod integri nel parco risorse, indipendentemente dalla loro posizione.
I seguenti passaggi di alto livello descrivono la procedura per eseguire il deployment di un gateway multi-cluster:
Definisci un gateway: in una configurazione di gateway multi-cluster, crei una risorsa Gateway che definisce il punto di ingresso per il traffico nel cluster di configurazione. La risorsa Gateway specifica un GatewayClass, ovvero un modello per un tipo specifico di bilanciatore del carico, ad esempio un bilanciatore del carico delle applicazioni esterno globale o un bilanciatore del carico delle applicazioni interno regionale. In GKE, i seguenti GatewayClass eseguono il deployment di gateway multi-cluster:
gke-l7-global-external-managed-mc: esegue il provisioning di un bilanciatore del carico delle applicazioni esterno globale.gke-l7-regional-external-managed-mc: esegue il provisioning di un bilanciatore del carico delle applicazioni esterno regionale.gke-l7-cross-regional-internal-managed-mc: esegue il provisioning di un bilanciatore del carico delle applicazioni interno.gke-l7-rilb-mc: esegue il provisioning di un bilanciatore del carico delle applicazioni interno.gke-l7-gxlb-mc: esegue il provisioning di un bilanciatore del carico delle applicazioni classico.
Il gateway definisce anche il modo in cui il bilanciatore del carico ascolta il traffico in entrata specificando i listener di rete (porte e protocolli) da esporre. Per ulteriori informazioni sulle classi di gateway supportate da GKE, consulta Servizi multi-cluster.
Collega HTTPRoute al gateway: le risorse HTTPRoute definiscono il modo in cui il traffico HTTP/S in entrata viene instradato a servizi di backend specifici. Le HTTPRoute sono collegate alle risorse Gateway e specificano regole basate su nomi host, percorsi, intestazioni e altro ancora. HTTPRoute supporta anche funzionalità avanzate di gestione del traffico come la suddivisione del traffico e il mirroring del traffico.
Crea il bilanciatore del carico: quando esegui il deployment delle risorse Gateway e HTTPRoute, il controller Gateway di GKE interpreta questi oggetti API e, a sua volta, configura dinamicamente l'infrastruttura di bilanciamento del carico necessaria. Google Cloud Il bilanciatore del carico indirizza quindi il traffico ai pod corretti, indipendentemente dal cluster in cui si trovano i pod. Questa procedura fornisce un modo altamente efficiente e scalabile per instradare il traffico.
Flusso di traffico
Il seguente diagramma illustra il funzionamento di un gateway multi-cluster come bilanciatore del carico centralizzato per le applicazioni eseguite su due cluster GKE in regioni diverse:
Il comportamento del bilanciatore del carico viene configurato in base alle regole definite nelle risorse HTTPRoute. Quando il traffico utente arriva all'indirizzo IP del bilanciatore del carico di cui è stato eseguito il provisioning Google Cloud (come definito dalla risorsa Gateway), il bilanciatore del carico, che è un proxy gestito da Google, instrada il traffico. Questo proxy (un proxy Google Front End (GFE) o un proxy regionale) indirizza il traffico all'endpoint del servizio di backend appropriato all'interno del cluster GKE corretto, in base ai seguenti criteri:
- Controlli di integrità
- Regole di suddivisione del traffico
- Capacità
Il traffico viene indirizzato direttamente al pod ottimale nel cluster selezionato.
Passaggi successivi
- Scopri come abilitare i gateway multi-cluster.
- Leggi una panoramica sul funzionamento dei gateway in GKE.