Informazioni sui gateway multi-cluster

Questo documento descrive il funzionamento dei gateway multi-cluster all'interno di Google Kubernetes Engine (GKE). I gateway multi-cluster sono una potente soluzione di networking che consente di gestire il traffico per i servizi di cui è stato eseguito il deployment in più cluster GKE.

Questo documento è rivolto ad architetti cloud e specialisti di networking che progettano e creano l'architettura della rete della propria organizzazione. Per scoprire di più sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei contenuti di Google Cloud , consulta Ruoli e attività comuni degli utenti di GKE Enterprise.

Panoramica

Il gateway multi-cluster viene configurato utilizzando le risorse dell'API Gateway di Kubernetes. Il GKE Gateway Controller controlla queste risorse (Gateway, HTTPRoute e TLSRoute) ed esegue automaticamente il provisioning e la manutenzione dell'infrastruttura di bilanciamento del caricoGoogle Cloud richiesta. 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 l'infrastruttura di bilanciamento del carico di Google Cloudper fornire un unico punto di accesso unificato per le tue applicazioni. Questo approccio presenta i seguenti vantaggi:

  • Semplifica la gestione
  • Migliora l'affidabilità
  • Abilita funzionalità di gestione avanzata 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 in fasi e strategie blu/verde, per eseguire il deployment delle modifiche in sicurezza. Per un controllo granulare, puoi utilizzare la corrispondenza basata su intestazioni per testare le modifiche con una piccola percentuale di traffico o suddividere il traffico in base al peso per spostare gradualmente le richieste tra diversi backend del cluster.

I gateway multi-cluster consentono anche di eseguire il mirroring del traffico, che invia una copia delle richieste degli utenti attivi a un nuovo servizio per testare le prestazioni senza influire sugli utenti. Per garantire l'affidabilità e prevenire i 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 tuoi servizi.

Per il traffico TLS che richiede la crittografia end-to-end senza terminare TLS sul bilanciatore del carico, i gateway multi-cluster supportano il routing basato su SNI con TLSRoute.

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 viene 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 API Gateway multi-cluster, come Gateway, HTTPRoute e TLSRoute, solo in questo cluster designato. Il controller GKE Gateway 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 ad alta affidabilità. In questo modo, gli aggiornamenti alle risorse dell'API Gateway possono essere riconciliati continuamente dal controller.

Il controller del gateway multi-cluster utilizza i servizi multi-cluster (MCS) per scoprire e accedere ai servizi Kubernetes in più cluster GKE all'interno di un parco risorse. MCS è una funzionalità di GKE che consente il Service Discovery e la connettività tra i servizi eseguiti in cluster GKE diversi 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 API MCS per raggruppare i pod in un unico servizio indirizzabile che si estende su più cluster.

In base alle configurazioni definite nelle risorse dell'API Gateway, il controller GKE Gateway fornisce un bilanciatore del carico delle applicazioni esterno o interno (per HTTPRoute) o un bilanciatore del carico di rete proxy (per TLSRoute). Questo bilanciatore del carico funge da frontend per la tua applicazione e distribuisce il traffico direttamente ai pod integri nel tuo parco risorse, indipendentemente dalla loro posizione.

I seguenti passaggi di alto livello descrivono la procedura per eseguire il deployment di un gateway multi-cluster:

  1. 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 una GatewayClass, che è un template 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, le 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 o di un bilanciatore del carico di rete proxy esterno regionale.
    • gke-l7-cross-regional-internal-managed-mc: esegue il provisioning di un bilanciatore del carico delle applicazioni interno tra regioni o di un bilanciatore del carico di rete proxy interno tra regioni.
    • gke-l7-rilb-mc: esegue il provisioning di un bilanciatore del carico delle applicazioni interno regionale o di un bilanciatore del carico di rete proxy interno regionale.
    • 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 quali listener di rete (porte e protocolli) esporre. Per saperne di più sulle classi di gateway supportate da GKE, consulta Servizi multi-cluster.

  2. Collega le risorse di route al gateway: le risorse di route definiscono il modo in cui il bilanciatore del carico instrada il traffico in entrata a servizi di backend specifici:

    • HTTPRoute: definisce il modo in cui il bilanciatore del carico instrada il traffico HTTP e HTTPS in base a nomi host, percorsi, intestazioni e parametri di ricerca. Supporta la suddivisione del traffico, il reindirizzamento delle richieste e il mirroring del traffico.
    • TLSRoute: definisce il modo in cui il bilanciatore del carico instrada il traffico TLS criptato in base al nome host SNI utilizzando il passthrough TLS (supportato nelle GatewayClass gke-l7-regional-external-managed-mc, gke-l7-rilb-mc e gke-l7-cross-regional-internal-managed-mc). Il bilanciatore del carico inoltra il traffico direttamente ai ServiceImport di backend senza decriptare il payload nel gateway.
  3. Crea il bilanciatore del carico: quando esegui il deployment delle risorse Gateway e Route, il controller GKE Gateway interpreta questi oggetti API e, a sua volta, configura dinamicamente l'infrastruttura di bilanciamento del carico Google Cloud necessaria. Il bilanciatore del carico indirizza quindi il traffico ai pod corretti, indipendentemente dal cluster in cui si trovano. Questo processo 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:

Architettura del gateway multi-cluster in GKE.
Figura: architettura del gateway multi-cluster

Il comportamento del bilanciatore del carico viene configurato in base alle regole definite nelle risorse HTTPRoute o TLSRoute. Quando il traffico degli utenti arriva all'indirizzo IP del bilanciatore del carico Google Cloud di cui è stato eseguito il provisioning (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 fluisce direttamente al pod ottimale nel cluster selezionato.

Passaggi successivi