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 implementato nel tuo 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 a qualsiasi livello del modello OSI a partire dal livello 2 (livello di collegamento dati).
Le funzioni di servizio possono essere suddivise in grandi linee nelle seguenti categorie:
- Firewall per la sicurezza
- Proxy per il controllo dell'accesso
- Accelerazione WAN per migliorare la velocità,
- Deep Packet Inspection (DPI) per l'analisi dei contenuti
- Intercettazione legale (LI) per sorveglianza e indagini
- Network Address Translator (NAT) per indirizzi IP privati e pubblici
- HTTP per l'arricchimento delle intestazioni
- Bilanciatori del carico per distribuire il traffico in modo efficiente
Le terminologie alternative per le funzioni di servizio includono:
- Apparecchiature per container
- Appliance virtuali
- Funzioni di rete virtualizzate (NFV)
- Funzioni di rete containerizzate (CNF)
- Funzioni di rete cloud-native (CNF)
Nel reindirizzamento del servizio, un oggetto Service rappresenta una funzione di servizio (SF).
Service Function Chain (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.
La catena di funzioni di servizio (SFC) è chiamata anche catena di servizi (SC).
Nel reindirizzamento del 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. La funzione di servizio in genere non è a conoscenza delle catene di funzioni di servizio di cui fa parte.
Reindirizzamento servizio
Service Steering instrada i pacchetti alla funzione di servizio selezionata in modo completamente trasparente per l'origine e la destinazione. Questo concetto è talvolta definito "routing basato su criteri", "reindirizzamento del traffico" o "inoltro della funzione di servizio". Il servizio di steering ottiene il routing trasparente utilizzando l'incapsulamento Geneve + NSH (vedi RFC 8926, RFC 8300, bozza IETF di Geneve + NSH).
Alcune delle caratteristiche importanti di Service Steering includono:
- Bilanciamento del carico tra i pod di backend di una Service Function: le Service Functions spesso vengono eseguite su più pod per scalabilità e affidabilità. Service Steering distribuisce il traffico di rete in entrata in modo uniforme tra questi pod per evitare che un singolo pod si sovraccarichi.
- 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 a indirizzo IP di origine, porta di origine, indirizzo IP di destinazione, porta di destinazione e protocollo. Service Steering garantisce 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 di ritorno simmetrico dei dati:un percorso di ritorno simmetrico dei dati significa che il traffico di risposta segue lo stesso percorso di ritorno alla sorgente del traffico di richiesta originale. Service Steering garantisce questa simmetria, che è importante per alcuni protocolli di rete e applicazioni.
Per qualsiasi traffico di rete sottoposto a steering del servizio, i pod della funzione di servizio intermedi gestiscono tutti i pacchetti di quel particolare traffico di rete, garantendo hop intermedi coerenti e una route prevedibile. Gli stessi pod di 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 indietro attraverso la stessa catena di servizi. Se il traffico originale è al di fuori del cluster, la funzione di servizio finale nella catena attira il traffico verso se stessa 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 tuoi cluster. Ciò consente i seguenti casi d'uso principali:
Servizi di sicurezza autogestiti:
Le organizzazioni possono costruire 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 servizio di steering garantisce che il traffico venga instradato attraverso queste CNF prima di raggiungere la destinazione prevista, fornendo un livello di protezione e controllo.
Fornitori 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. Ciò consente loro di offrire soluzioni di sicurezza complete, tra cui Secure Web Gateway (SWG), SASE (Secure Access Service Edge) e funzionalità SD-WAN (Software-Defined Wide Area Network).
Telecomunicazioni e reti 5G:
Service Steering gestisce i flussi di traffico per varie funzioni di rete all'interno delle infrastrutture di telecomunicazioni e 5G. Puoi orchestrare router virtuali (vRouter), session border controller virtuali (vSBC) e funzioni di rete core 5G per garantire una gestione efficiente del traffico, il bilanciamento del carico e l'applicazione di norme specifiche di sicurezza o qualità del servizio.
Come funziona il reindirizzamento dei servizi
Questa sezione descrive il funzionamento dei vari componenti di Service Steering.
Funzione di servizio
Identifica il flusso di traffico di rete: GKE Service Steering 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.
Garantisce l'affinità di flusso: Service Steering garantisce l'affinità di flusso indirizzando tutti i pacchetti con lo stesso ID flusso attraverso lo stesso percorso di Service Functions (SF).
Modifica i pacchetti per creare nuovi flussi: se una funzione di servizio modifica uno dei campi della 5-tupla in un pacchetto. Ad esempio, NAT che modifica l'indirizzo IP di origine, creando un nuovo flusso.
Seleziona il traffico per i nuovi flussi: il processo di selezione del traffico valuta il nuovo flusso per determinare il suo percorso attraverso i
Service Functions
rimanenti, 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. Service Steering non garantisce lo stesso percorso per questi due flussi.
Convalida l'indirizzo di origine: gli SF sono sempre soggetti alla convalida dell'indirizzo di origine, anche per il traffico non indirizzato dal Service Steering. Se una funzione di servizio avvia 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: Service Steering utilizza l'incapsulamento Geneve per il traffico tra le SF, ma i pod delle funzioni 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
, Service Steering lo applica automaticamente
a tutte le connessioni esistenti che corrispondono ai criteri del selettore. reindirizza
i pacchetti di queste connessioni alle funzioni di servizio appropriate. La funzione
del servizio è responsabile della gestione di queste connessioni in volo. 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
subito dopo essere state contrassegnate per l'eliminazione. Non esistono webhook o
finalizer che impediscono o ritardano l'eliminazione delle risorse.
Traffico da pod a servizio
Service Steering 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 lo steering del 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 del servizio non bypassa NetworkPolicy
. I criteri di uscita nel pod di origine e i criteri di entrata nel pod di destinazione vengono comunque applicati al traffico selezionato per il Service Steering. Tuttavia, non è soggetto all'applicazione di NetworkPolicy
all'ingresso o all'uscita di una funzione di servizio. Questo perché le regole di ingresso o
di uscita di NetworkPolicy
sono ben definite per i pod di origine e di destinazione, ma non per i router di pacchetti.
Vantaggi
L'adozione del Reindirizzamento servizio di GKE, unita alla transizione alle tecnologie cloud native, offre i seguenti vantaggi:
- Offerta del marketplace:le terze parti possono offrire il proprio prodotto in contenitori su Google Cloud Marketplace e utilizzare le API Service Steering. 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 indirizzare. Puoi selezionare i carichi di lavoro in cui vuoi applicare selettivamente il Reindirizzamento servizio.
- Bidirezionalità: lo steering dei servizi di GKE è bidirezionale. Ciò significa che per un determinato flusso, il percorso di ritorno è simmetrico al percorso di andata. Ciò è importante quando le Service Functions (SF) vengono implementate come gruppo di repliche. Assicurati che lo stesso flusso passi attraverso lo stesso set di repliche per mantenere la statefulness.
- 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. Service Steering di GKE include l'integrazione con Multi-Network on Pods. In questo modo, un utente può creare un Service Steering su una rete pod specifica.
- Raw Packet Delivery to Application: il servizio Service Steering di GKE incapsula il pacchetto originale e lo consegna direttamente al pod. In questo modo non devi eseguire alcuna decapsulamento e la tua applicazione può agire direttamente sul pacchetto originale.