Panoramica
Puoi controllare il flusso del traffico di rete all'interno del cluster GKE utilizzando il Reindirizzamento servizio di GKE. Puoi definire regole per indirizzare tipi specifici di traffico alle funzioni di rete che hai eseguito il deployment nel cluster. Il Reindirizzamento servizio di GKE è simile al routing basato su criteri, in cui sostituisci il percorso normale del traffico di rete.
Terminologia e concetti
Questa pagina utilizza i seguenti concetti:
Funzione di servizio (SF)
Una funzione di servizio è un componente software che opera sui pacchetti di dati ricevuti. Un livello di servizio può operare su qualsiasi livello del modello OSI a partire dal livello 2 (livello di collegamento dati).
Le funzioni di servizio possono essere suddivise in grandi categorie:
- Firewall per la sicurezza
- Proxy per il controllo dell'accesso
- Accelerazione WAN per migliorare la velocità
- Ispezione approfondita dei pacchetti (DPI) per l'analisi dei contenuti
- Intercettazione legale (LI) per la sorveglianza e le indagini
- Network Address Translator (NAT) per indirizzi IP privati e pubblici
- HTTP per l'arricchimento delle intestazioni
- Bilanciatori del carico per la distribuzione efficiente del traffico
Le terminologie alternative per le funzioni di servizio includono:
- Appliance container
- Appliance virtuali
- Funzioni di rete virtualizzate (NFV)
- Funzioni di rete containerizzate (CNF)
- Funzioni di rete cloud-native (CNF)
Nel Reindirizzamento servizio, un oggetto Service rappresenta una funzione di servizio (SF).
Catena di funzioni di servizio (SFC)
Una catena di funzioni di servizio (SFC) è una serie di funzioni di servizio come firewall, proxy o bilanciatori del carico collegati tra loro per elaborare il traffico di rete in un ordine specifico. Questa catena funge da pipeline, in cui ogni funzione di servizio esegue un'attività specifica sul traffico prima di passarlo alla funzione successiva.
Una catena di funzioni di servizio (SFC) è detta anche catena di servizi (SC).
Nel Reindirizzamento servizio, l'oggetto ServiceFunctionChain rappresenta una catena di funzioni di servizio (SFC).
Una funzione di servizio opera indipendentemente da qualsiasi catena di funzioni di servizio. In genere, una funzione di servizio non è a conoscenza delle catene di funzioni di servizio di cui fa parte.
Reindirizzamento servizio
Il Reindirizzamento servizio instrada i pacchetti alla funzione di servizio selezionata in modo completamente trasparente per l'origine e la destinazione. Questo concetto viene talvolta definito "routing basato su criteri", "reindirizzamento del traffico" o "inoltro della funzione di servizio". Il Reindirizzamento servizio ottiene il routing trasparente utilizzando l'incapsulamento Geneve + NSH (vedi RFC 8926, RFC 8300, Geneve + NSH IETF Draft).
Alcune delle caratteristiche importanti del Reindirizzamento servizio includono:
- Bilanciamento del carico tra i pod di backend di una funzione di servizio: le funzioni di servizio vengono spesso eseguite su più pod per scalabilità e affidabilità. Il Reindirizzamento servizio distribuisce uniformemente il traffico di rete in entrata tra questi pod per evitare che un singolo pod diventi sovraccarico.
- Supporto dell'affinità di flusso a 5 tuple (tutti gli hop intermedi devono essere stabili per un determinato flusso): un flusso a 5 tuple è un modo per identificare un flusso specifico di traffico di rete in base all'indirizzo IP di origine, alla porta di origine, all'indirizzo IP di destinazione, alla porta di destinazione e al protocollo. Il Reindirizzamento servizio contribuisce a garantire che tutti i pacchetti all'interno dello stesso flusso vengano indirizzati in modo coerente allo stesso insieme di funzioni di servizio (hop).
- Abilitazione di un percorso dati di ritorno simmetrico: un percorso dati di ritorno simmetrico significa che il traffico di risposta segue lo stesso percorso di ritorno all'origine del traffico di richiesta originale. Il Reindirizzamento servizio contribuisce a garantire questa simmetria, importante per alcuni protocolli e applicazioni di rete.
Per qualsiasi traffico di rete reindirizzato dal servizio, i pod della funzione di servizio intermedia gestiscono tutti i pacchetti di quel particolare traffico di rete, garantendo hop intermedi coerenti e un percorso prevedibile. Gli stessi pod della funzione di servizio ricevono il traffico di ritorno per garantire un flusso di traffico simmetrico. Se il traffico originale viene inviato a una destinazione all'interno dello stesso cluster, il traffico di ritorno trova automaticamente un modo per tornare attraverso la stessa catena di servizi. Se il traffico originale si trova al di fuori del cluster, la funzione di servizio finale nella catena attira il traffico verso di sé utilizzando la conversione dell'indirizzo di rete di origine (SNAT) o un proxy, che funge da intermediario.
Casi d'uso
Il Reindirizzamento servizio di GKE integra il routing basato su criteri nei cluster. Ciò consente i seguenti casi d'uso principali:
Servizi di sicurezza autogestiti:
Le organizzazioni possono creare la propria infrastruttura di sicurezza utilizzando funzioni di rete containerizzate (CNF) come firewall virtuali (vFW), firewall virtuali di nuova generazione (vNG-FW) e sistemi di rilevamento delle intrusioni virtuali (vIDS). Il Reindirizzamento servizio contribuisce a garantire che il traffico venga instradato attraverso queste CNF prima di raggiungere la destinazione prevista, fornendo un livello di protezione e controllo.
Provider di servizi di sicurezza gestiti (MSP):
I MSP possono utilizzare il Reindirizzamento servizio di GKE per instradare il traffico attraverso le loro catene di servizi di sicurezza basate sul cloud. In questo modo possono offrire soluzioni di sicurezza complete, tra cui gateway web sicuri (SWG), SASE (Secure Access Service Edge) e funzionalità SD-WAN (Software-Defined Wide Area Network).
Reti di telecomunicazioni e 5G:
Il Reindirizzamento servizio gestisce i flussi di traffico per varie funzioni di rete all'interno delle infrastrutture di telecomunicazioni e 5G. Puoi orchestrare router virtuali (vRouter), controller di confine di sessione virtuali (vSBC) e funzioni di rete core 5G per garantire una gestione efficiente del traffico, il bilanciamento del carico e l'applicazione di policy di sicurezza o di qualità del servizio specifiche.
Come funziona il Reindirizzamento servizio
Questa sezione descrive il funzionamento dei vari componenti del Reindirizzamento servizio.
Funzione di servizio
Identifica il flusso di traffico di rete: il Reindirizzamento servizio di GKE identifica ogni connessione di rete utilizzando un ID flusso univoco, un hash a 5 tuple dell'indirizzo IP di origine, della porta di origine, dell'indirizzo IP di destinazione, della porta di destinazione e del protocollo del pacchetto.
Contribuisce a garantire l'affinità di flusso: il Reindirizzamento servizio contribuisce a garantire l'affinità di flusso indirizzando tutti i pacchetti con lo stesso ID flusso attraverso lo stesso percorso di funzioni di servizio (SF).
Modifica i pacchetti per creare nuovi flussi: se una funzione di servizio modifica uno dei campi a 5 tuple in un pacchetto. Ad esempio, NAT che modifica l'indirizzo IP di origine, crea un nuovo flusso.
Seleziona il traffico per i nuovi flussi: il processo di selezione del traffico valuta il nuovo flusso per determinarne il percorso attraverso le
Service Functionsrimanenti, potenzialmente seguendo un percorso diverso rispetto al flusso originale.Gestisce proxy e NAT come due flussi: il traffico tramite proxy o NAT viene considerato come due flussi separati: dall'origine al proxy/NAT e dal proxy/NAT alla destinazione. Il Reindirizzamento servizio non garantisce lo stesso percorso per questi due flussi.
Convalida l'indirizzo di origine: le funzioni di servizio sono sempre soggette alla convalida dell'indirizzo di origine, anche per il traffico non reindirizzato dal Reindirizzamento servizio. Se una funzione di servizio genera un nuovo flusso con un indirizzo IP di origine non corrispondente, i pacchetti vengono eliminati a meno che non siano esplicitamente consentiti.
Mantiene la trasparenza dell'incapsulamento: il Reindirizzamento servizio utilizza l'incapsulamento Geneve per il traffico tra le funzioni di servizio, ma i pod della funzione di servizio non ne sono a conoscenza. I pacchetti vengono decapsulati prima di entrare nel pod, semplificando lo sviluppo della funzione di servizio.
Connessioni esistenti
Quando crei un TrafficSelector, il Reindirizzamento servizio lo applica automaticamente a tutte le connessioni esistenti che corrispondono ai criteri del selettore. Reindirizza i pacchetti da queste connessioni alle funzioni di servizio appropriate. La funzione di servizio stessa è responsabile della gestione di queste connessioni in transito. Un approccio comune consiste nell'eliminare i pacchetti e fare affidamento sul client per avviare una nuova connessione, che poi si integra perfettamente nella catena di servizi fin dall'inizio.
Ciclo di vita delle risorse
Le risorse TrafficSelector e ServiceFunctionChain vengono eliminate immediatamente dopo essere state contrassegnate per l'eliminazione. Non esistono webhook o finalizzatori che impediscano o ritardino l'eliminazione delle risorse.
Traffico da pod a servizio
Il Reindirizzamento servizio esegue la selezione del traffico dopo aver risolto l'indirizzo IP virtuale del servizio. Il traffico indirizzato a un servizio utilizzando il relativo ClusterIP può essere selezionato per il Reindirizzamento servizio se l'indirizzo IP del pod di destinazione rientra nel CIDR specificato nel campo .egress.to.ipBlock dopo la risoluzione dell'indirizzo IP virtuale.
Applicazione di NetworkPolicy
Il Reindirizzamento servizio non bypassa NetworkPolicy. La policy in uscita nel pod di origine e la policy in entrata nel pod di destinazione si applicano ancora al traffico selezionato per il Reindirizzamento servizio. Tuttavia, non è soggetto all'applicazione di NetworkPolicy in entrata o in uscita da una funzione di servizio. Questo perché le regole in entrata o in uscita di NetworkPolicy sono ben definite per i pod di origine e di destinazione, ma non per gli inoltratori di pacchetti.
Vantaggi
L'adozione del Reindirizzamento servizio di GKE, insieme alla transizione alle tecnologie cloud-native, offre i seguenti vantaggi:
- Offerta del Marketplace: le terze parti possono offrire il loro prodotto containerizzato su Google Cloud Marketplace e utilizzare le API del Reindirizzamento servizio. Possono fornire una guida al deployment basata sull'API integrata di Kubernetes fornita e gestita da GKE.
- Granularità di Kubernetes: puoi controllare il traffico all'interno del cluster Kubernetes. Puoi classificare il traffico che vuoi reindirizzare. Puoi selezionare i carichi di lavoro in cui vuoi applicare selettivamente il Reindirizzamento servizio.
- Bidirezionalità: il Reindirizzamento servizio di GKE è bidirezionale. Ciò significa che, per un determinato flusso, il percorso di ritorno è simmetrico rispetto al percorso di andata. Questo è importante quando le funzioni di servizio (SF) vengono eseguite il deployment come gruppo di repliche. Assicurati che lo stesso flusso passi attraverso lo stesso insieme di repliche per mantenere lo stato.
- Supporto multi-rete: la maggior parte delle funzioni di servizio richiede più interfacce pod per la separazione del piano dati dal piano di controllo e gestione. Alcune funzioni di servizio hanno più interfacce come parte della loro architettura. Il Reindirizzamento servizio di GKE include l'integrazione con la multi-rete sui pod. In questo modo, un utente può creare un Reindirizzamento servizio su una rete pod specifica.
- Distribuzione di pacchetti non elaborati all'applicazione: il Reindirizzamento servizio di GKE incapsula il pacchetto originale e lo distribuisce direttamente al pod. In questo modo non devi eseguire alcuna decapsulazione e la tua applicazione può agire direttamente sul pacchetto originale.