Panoramica
Puoi controllare il flusso del traffico di rete all'interno del tuo cluster GKE utilizzando il Reindirizzamento servizio di GKE. Puoi definire regole per indirizzare tipi specifici di traffico alle funzioni di rete che hai disegnato nel tuo cluster. Il Reindirizzamento servizio di GKE è simile al routing basato su criteri, in cui sostituisci il normale percorso del traffico di rete.
Terminologia e concetti
In questa pagina vengono utilizzati i seguenti concetti:
Funzione di servizio (SF)
Una funzione di servizio è un componente software che lavora sui pacchetti di dati ricevuti. Un livello di servizio può operare in qualsiasi livello del modello OSI a partire dal livello 2 (livello di collegamento dati).
Le funzioni di servizio possono essere categorizzate a grandi linee come segue:
- Firewall per la sicurezza
- Proxy per il controllo dell'accesso
- L'accelerazione WAN per migliorare la velocità,
- Deep Packet Inspection (DPI) per l'analisi dei contenuti
- Intercetta 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:
- Appliances per 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).
Service Function Chain (SFC)
La 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 agisce come una pipeline, in cui ogni funzione di servizio esegue un'attività specifica sul traffico prima di passarlo alla funzione successiva.
La catena di funzioni dei servizi (SFC) è chiamata anche catena di servizi (SC).
In Service Steering, l'oggetto ServiceFunctionChain
rappresenta una catena di funzioni di servizio (SFC).
Una Funzione di servizio opera indipendentemente da qualsiasi catena di funzioni di servizio. Servizio In genere la funzione non è a conoscenza di quali catene di funzioni di servizio fa parte.
Orientamento del servizio
Il Reindirizzamento servizio instrada i pacchetti alla funzione di servizio selezionata in un modo completamente trasparenti verso l'origine e la destinazione. A volte questo concetto viene definito "routing basato su criteri", "reindirizzamento del traffico" o "inoltro di funzioni di servizio". Service Steering raggiunge il routing trasparente utilizzando Geneve + incapsulamento NSH (vedi RFC 8926, RFC 8300, Geneve + NSH IETF Bozza).
Ecco alcune delle caratteristiche importanti del Service Steering:
- 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 il traffico di rete in entrata in modo uniforme tra questi Pod per evitare il sovraccarico di un singolo pod.
- Supporto dell'affinità del 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 basato su indirizzo IP di origine, porta di origine, IP di destinazione l'indirizzo IP, la porta di destinazione e il protocollo. La gestione del servizio garantisce che tutti i pacchetti all'interno dello stesso flusso vengano indirizzati in modo coerente allo stesso insieme di funzioni di servizio (hop).
- Attivare un percorso dati di ritorno simmetrico: un percorso dati di ritorno simmetrico indica che il traffico di risposta segue lo stesso percorso di ritorno all'origine del traffico di richiesta originale. Il Reindirizzamento servizio assicura questa simmetria, è importante per alcuni protocolli e applicazioni di rete.
Per qualsiasi traffico di rete sottoposto a indirizzamento in base al servizio, i pod di funzione di servizio intermedi gestiscono tutti i pacchetti di quel determinato 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 è esterno al cluster, la funzione di servizio finale richiama il traffico utilizzando uno dei due indirizzi di rete di origine una traduzione automatica (SNAT) o un proxy che agisce da intermediario.
Casi d'uso
Il Reindirizzamento servizio di GKE integra il routing basato su criteri 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 di nuova generazione (vNG-FW) e sistemi virtuali di rilevamento delle intrusioni (vIDS). Lo Steering dei servizi garantisce che il traffico venga instradato tramite queste CNF prima di raggiungere la destinazione prevista, fornendo un livello di protezione e controllo.
Fornitori di sicurezza gestiti (MSP):
Gli MSP possono utilizzare il Reindirizzamento servizio di GKE per instradare il traffico tramite le loro catene di servizi di sicurezza basate su 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).
Telecomunicazioni e reti 5G:
Service Steering gestisce i flussi di traffico per varie funzioni di rete all'interno di infrastrutture di telecomunicazioni e 5G. Puoi orchestrare router virtuali (vRouter), virtual session border controller (vSBC) e funzioni di rete di base 5G per garantire una gestione efficiente del traffico, il bilanciamento del carico e l'applicazione di criteri specifici 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: Reindirizzamento servizio GKE identifica ogni connessione di rete utilizzando un ID flusso univoco, un hash a 5 tuple tra indirizzo IP di origine, porta di origine, indirizzo IP di destinazione la porta di destinazione e il protocollo.
Garantisce l'affinità dei flussi: lo Steering dei servizi garantisce l'affinità dei flussi indirizzando tutti i pacchetti con lo stesso ID flusso attraverso lo stesso percorso delle funzioni di servizio (SF).
Modifica i pacchetti per creare nuovi flussi: se una funzione di servizio modifica uno dei campi di 5 tuple in un pacchetto. Ad esempio, la NAT 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 valore nuovo flusso per determinare il proprio percorso attraverso i restanti
Service Functions
, potrebbe prendere una strada diversa rispetto a quella originale.Gestisce i proxy e i NAT come due flussi: il traffico che passa attraverso i proxy o i NAT viene considerato come due flussi distinti: dalla sorgente al proxy/NAT e dal proxy/NAT alla destinazione. Il Reindirizzamento servizio non garantisce lo stesso percorso per queste due dei flussi.
Convalida l'indirizzo di origine: i servizi finanziari sono sempre soggetti all'indirizzo di origine. anche per il traffico non gestito 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 consentiti esplicitamente.
Mantiene la trasparenza dell'incapsulamento: Service Steering utilizza l'incapsulamento Geneve per il traffico tra le SF, ma i pod di funzioni di servizio non ne sono a conoscenza. I pacchetti vengono decapsulati prima di entrare nel pod semplificare lo sviluppo della funzione di servizio.
Connessioni esistenti
Quando crei un TrafficSelector
, il Reindirizzamento servizio lo applica automaticamente
a qualsiasi connessione esistente che soddisfi i criteri del selettore. Reindirizza
i pacchetti da queste connessioni alle funzioni di servizio appropriate. Il Servizio
La funzione stessa è responsabile della gestione di queste connessioni in-flight. R
l'approccio comune consiste nell'abbandonare i pacchetti e fare affidamento sul client per avviare una nuova
che poi si integra perfettamente nella catena di servizi
partendo da zero.
Ciclo di vita delle risorse
Le risorse TrafficSelector
e ServiceFunctionChain
sono state eliminate
subito dopo essere stati contrassegnati per l'eliminazione. Non sono presenti webhook o finalizer che impediscono o ritardano l'eliminazione delle risorse.
Traffico da pod a servizio
Il Reindirizzamento servizio esegue la selezione del traffico dopo la risoluzione del servizio
Indirizzo IP virtuale. Il traffico diretto a un servizio tramite il relativo ClusterIP può essere
è selezionato per il Reindirizzamento servizio se l'indirizzo IP del pod di destinazione rientra in
il CIDR specificato nel campo .egress.to.ipBlock
dopo l'IP virtuale
sia stato risolto.
Applicazione di NetworkPolicy
La gestione dei servizi non ignora NetworkPolicy
. Criterio in uscita all'origine
Il pod e il criterio in entrata nel pod di destinazione continuano a essere applicati al traffico selezionato
per il Reindirizzamento servizio. Tuttavia, non è soggetto all'applicazione di NetworkPolicy
all'ingresso o all'uscita di una funzione di servizio. Questo perché il traffico in entrata o
le regole in uscita di NetworkPolicy
sono ben definite per origine e destinazione
ma non i server di forwarding dei 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 proprio prodotto containerizzato su Google Cloud Marketplace e utilizzare le API Service Steering. Possono una guida al deployment basata sull'API integrata Kubernetes fornita gestite da GKE.
- Granularità Kubernetes: puoi controllare il traffico all'interno di Kubernetes in un cluster Kubernetes. Puoi classificare il traffico che vuoi indirizzare. Puoi selezionare i carichi di lavoro a cui vuoi applicare selettivamente il Reindirizzamento servizio.
- Bidirezionalità: la gestione dei servizi di GKE è di natura bidirezionale. Ciò significa che per un determinato flusso, il percorso di ritorno è simmetrico al percorso in avanti. Questo è importante quando il servizio Il deployment delle funzioni (SF) viene eseguito come gruppo di repliche. Ensure lo stesso flusso passa attraverso lo stesso set di repliche per mantenere statefulness.
- Supporto di più reti: la maggior parte delle Funzioni di servizio richiede più reti Interfacce dei pod per la separazione di Dataplane dal controllo e dalla gestione aereo. Alcune funzioni di servizio hanno più interfacce dell'architettura. La gestione dei servizi di GKE include l'integrazione con più reti sui pod. In questo modo, un utente può creare un Service Steering su una rete di pod specifica.
- Consegna di pacchetti non elaborati all'applicazione: Service Steering di GKE incapsula il pacchetto originale e lo consegna direttamente al pod. In questo modo non devi eseguire la decapsulazione e la tua applicazione può agire direttamente sul pacchetto originale.