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 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 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 suddivise in modo approssimativo nei seguenti modi:
- 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
- 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:
- Appliances per container
- Appliance virtuali
- Funzioni di rete virtualizzate (NFV)
- Funzioni di rete containerizzate (CNF)
- Funzioni di rete cloud-native (CNF)
In Service Steering, 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. La funzione del servizio in genere non è a conoscenza delle catene di funzioni dei servizi 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. A volte questo concetto viene definito "routing basato su criteri", "reindirizzamento del traffico" o "inoltro di funzioni di servizio". La gestione dei servizi realizza il routing trasparente utilizzando la capsula Geneva + NSH (consulta RFC 8926, RFC 8300, Geneve + NSH IETF Draft).
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 spesso vengono eseguite su più pod per scalabilità e affidabilità. Service Steering distribuisce il traffico di rete in arrivo in modo uniforme tra questi pod per evitare che un singolo pod si sovraccarichi.
- Supporto dell'affinità dei flussi a 5 tuple (tutti i hop intermedi devono essere stabili per un determinato flusso): un flusso a 5 tuple è un modo per identificare uno stream 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. Lo Steering dei servizi garantisce che tutti i pacchetti all'interno dello stesso flusso vengano indirizzati in modo coerente allo stesso insieme di funzioni di servizio (hop).
- Attivazione di 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. Service Steering garantisce questa simmetria, che è 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 percorso di ritorno attraverso la stessa catena di servizi. Se il traffico originale si trova al di fuori del cluster, la funzione di servizio finale della catena attira nuovamente a sé il traffico utilizzando la Network Address Translation (SNAT) di origine o un proxy, che funge da intermediario.
Casi d'uso
Il reindirizzamento servizio di GKE integra il routing basato su criteri nei tuoi cluster. In questo modo, vengono attivati i seguenti casi d'uso principali:
Servizi di sicurezza self-managed:
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). 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 servizi 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 delle 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: 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à 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: la procedura di selezione del traffico valuta il nuovo flusso per determinare il percorso attraverso gli altri
Service Functions
, potenzialmente seguendo un percorso diverso rispetto al flusso 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. La funzionalità di gestione dei servizi non garantisce lo stesso percorso per questi dueflussi.
Verifica l'indirizzo di origine: le SF sono sempre soggette alla verifica dell'indirizzo di origine, anche per il traffico non indirizzato da Service Steering. 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, semplificando lo sviluppo delle funzioni 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 da queste connessioni alle funzioni di servizio appropriate. È la stessa funzione Service
che gestisce queste connessioni in corso. Un approccio comune è 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 sono presenti 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 dei servizi se l'indirizzo IP del pod di destinazione rientra nell'intervallo CIDR specificato nel campo .egress.to.ipBlock
dopo la risoluzione dell'indirizzo IP virtuale.
Applicazione di NetworkPolicy
La gestione dei servizi non ignora NetworkPolicy
. I criteri di uscita nel pod di origine e di ingresso nel pod di destinazione continuano a essere applicati al traffico selezionato per lo Steering del servizio. 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 forwarder 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 fornire una guida al deployment basata sull'API integrata di Kubernetes fornita e gestita da GKE.
- Granularità Kubernetes:puoi controllare il traffico all'interno del tuo cluster Kubernetes. Puoi classificare il traffico che vuoi indirizzare. Puoi selezionare i carichi di lavoro a cui vuoi applicare selettivamente il Reindirizzamento servizio.
- Bidirezionalità: il Service Steering di GKE è di natura bidirezionale. Ciò significa che per un determinato flusso, il percorso di ritorno è simmetrico al percorso in avanti. Questo è importante quando le funzioni di servizio (SF) vengono implementate come gruppo di repliche. Assicurati che lo stesso flusso passi attraverso lo stesso set di repliche per mantenere lo stato.
- Supporto di più reti:la maggior parte delle funzioni di servizio richiede più interfacce di pod per separare il piano dati dal piano di controllo e gestione. Alcune funzioni di servizio hanno più interfacce nell'ambito della loro 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.