Cosa sono l'ingress e l'egress in Kubernetes?

Vista dall'alto di due persone sedute a un tavolo curvo

Autori

Stephanie Susnjara

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

Cosa sono l'ingress e l'egress in Kubernetes?

In Kubernetes, ingress ed egress si riferiscono al modo in cui il traffico di rete entra ed esce da un ambiente applicativo containerizzato cloud-native.

  • L'ingress determina il modo in cui gli utenti o i sistemi esterni raggiungono i servizi all'interno di un cluster Kubernetes.
  • L'egress definisce il modo in cui i servizi interni accedono ai sistemi esterni al cluster, come API, database o strumenti di terze parti.

Questi flussi di traffico sono fondamentali per l'esecuzione di applicazioni moderne all'interno dell'infrastruttura cloud. La loro gestione efficace supporta un'ampia gamma di casi d'uso, come l'indirizzamento del traffico dei clienti verso le app web o l'accesso sicuro alle API di terze parti.

Nel mondo odierno basato sul cloud computing, Kubernetes alimenta workload sempre più critici. Di conseguenza, la capacità granulare di controllare il traffico è diventata essenziale per mantenere le prestazioni, applicare le misure di sicurezza e soddisfare i requisiti di conformità.

Come funziona Kubernetes?

Kubernetes, nota anche come k8s o kube, è una piattaforma di orchestrazione di container che automatizza l'implementazione, il ridimensionamento e la manutenzione delle applicazioni per un pool di risorse. Invece di gestire direttamente i server, i team DevOps e IT utilizzano Kubernetes per eseguire applicazioni in container, ovvero unità software leggere e autonome che includono tutto il necessario per eseguire un'applicazione.

Secondo un report di CNCF, Kubernetes è il secondo progetto open source più grande al mondo (dopo Linux) e lo strumento di orchestrazione dei container primario per il 71% delle aziende Fortune 100.

Docker è lo strumento più utilizzato per creare immagini di container. In Kubernetes, i contenitori sono raggruppati in unità chiamate pod, che sono le unità implementabili più piccole e possono contenere uno o più contenitori. Kubernetes pianifica questi pod su un cluster di macchine note come nodi.

I pod e le relative risorse sono organizzati in namespace, che forniscono una separazione logica per la gestione di team, progetti o ambienti diversi all'interno dello stesso cluster. Kubernetes gestisce le funzionalità chiave dei cluster, come il bilanciamento del carico, il failover, la scalabilità e l'ingegneria della piattaforma, eliminando gran parte della complessità dell'infrastruttura di basso livello.

All'interno di un cluster Kubernetes, i servizi spesso devono comunicare tra loro e talvolta con sistemi esterni. Kubernetes gestisce e controlla il traffico in modo da isolare i componenti interni per migliorare le prestazioni e la sicurezza. Di conseguenza, sia il traffico in entrata che quello in uscita devono essere definiti, gestiti e configurati in modo esplicito.

Confronto tra ingress ed egress di Kubernetes

Nell'informatica di base, i termini ingress/egress si riferiscono al traffico in entrata rispetto a quello in uscita in una rete o in un sistema. L'ingress e l'egress di Kubernetes forniscono ai team della piattaforma un framework controllato per governare il modo in cui il traffico fluisce in entrata e in uscita dal cluster Kubernetes. Questo aspetto è essenziale per il funzionamento di ambienti di produzione sicuri e scalabili.

IBM Cloud

Red Hat OpenShift AI on IBM Cloud: implementa workload di AI

Usa le funzionalità AI con Red Hat OpenShift on IBM Cloud. Questo video spiega come creare, implementare e gestire i workload di AI in modo efficiente con una piattaforma di operazioni di apprendimento automatico scalabile.

Cos'è l'ingress in Kubernetes?

Ingress si riferisce al traffico in entrata da utenti o sistemi esterni verso un cluster Kubernetes, in genere tramite HTTP o HTTPS (entrambi eseguiti con il protocollo TCP). Anziché esporre ogni servizio direttamente a Internet, le organizzazioni definiscono le regole di ingress tramite una risorsa Ingress. Questa risorsa è in genere scritta in YAML, che indica a Kubernetes come indirizzare il traffico in base a criteri come percorsi URL o nomi di dominio.

Le regole di ingress vengono applicate da un ingress controller, ovvero un software (spesso basato su NGINX o un altro reverse proxy) che funge da punto di ingresso effettivo. Il controller riceve le richieste in arrivo, decrittografa il traffico se necessario e lo inoltra al servizio corretto all'interno del cluster.

Ad esempio, le regole di ingress potrebbero essere configurate per:

  • Indirizzare il traffico verso api.company.com a un servizio API back-end che gestisce le richieste di dati
  • Indirizzare il traffico verso app.company.com a un'applicazione front-end con cui gli utenti interagiscono
  • Gestire tutte le richieste HTTPS tramite un unico certificato TLS gestito al livello di ingress Kubernetes , semplificando la sicurezza e la gestione dei certificati.

Benefici dell'ingress in Kubernetes

  • Efficienza dei costi: Ingress consente a più servizi di condividere un unico load balancer esterno, il che riduce i costi dell'infrastruttura IT, specialmente negli ambienti di microservizi con molte applicazioni implementate in modo indipendente.
  • Operazioni semplificate: il routing centralizzato, la configurazione del dominio e la gestione dei certificati aiutano a ridurre la complessità amministrativa e a garantire la coerenza tra i servizi.
  • Sicurezza avanzata: la terminazione SSL/TLS per il traffico in ingresso avviene in un unico punto di controllo, mentre policy come la limitazione della velocità, l'autenticazione o i firewall delle applicazioni web possono essere applicate in modo uniforme. Questa configurazione aiuta a prevenire le minacce alla sicurezza più comuni, come l'accesso non autorizzato, applicando i controlli di sicurezza prima che il traffico raggiunga i servizi di backend.
  • Migliore scalabilità: Ingress supporta il routing basato su percorsi e nomi host, semplificando l'espansione dei servizi dietro un unico punto di ingresso flessibile. Ad esempio, il routing basato su percorsi API consente ai team di scalare i servizi in modo indipendente senza aggiungere nuove destinazioni esterne.

Confronto tra Ingress e tipi di servizio Kubernetes

Kubernetes fornisce diversi metodi integrati per esporre i servizi all'esterno del cluster. La risorsa Ingress funziona con determinati tipi di servizi, tuttavia offre un approccio più flessibile e centralizzato, soprattutto per il traffico basato sul web.

Ecco alcuni dei tipi di servizi più comuni:

  • ClusterIP espone i servizi solo all'interno del cluster. È utile per la comunicazione interna tra servizi, ma non è accessibile all'esterno.
  • NodePort apre una porta specifica su ogni nodo del cluster per esporre un servizio esternamente. Sebbene semplice, è inflessibile ed espone direttamente l'infrastruttura a livello di nodo, il che introduce problematiche operative e di sicurezza.
  • LoadBalancer offre un bilanciatore di carico gestito dal provider di cloud per ogni servizio. Questo funziona bene per l'accesso esterno, ma non è scalabile in modo efficiente, in quanto ogni nuovo servizio richiede il proprio bilanciatore di carico, il che aumenta la complessità e i costi.
  • L'API Gateway funge da gateway API e fornisce un routing del traffico e una gestione delle policy avanzati, flessibili ed estensibili, oltre alle tradizionali risorse Ingress.

Al contrario, la risorsa Ingress consente di accedere a più servizi tramite un singolo indirizzo IP esterno utilizzando regole di routing intelligenti, basate su nomi di dominio o percorsi. Centralizza la gestione HTTP(S) e il controllo del traffico, rendendolo una scelta ottimale per i workload di produzione.

Cos'è l'egress in Kubernetes?

L'egress si riferisce al traffico in uscita, quando i servizi all'interno del cluster devono comunicare con destinazioni o sistemi di traffico esterni (ad esempio, API, cloud service, database e così via). Sebbene Kubernetes consenta il traffico in uscita senza restrizioni per impostazione predefinita, questa policy aperta è raramente adatta per gli ambienti di produzione.

In genere, le organizzazioni vogliono controllare e monitorare quali servizi possono connettersi agli endpoint esterni, sia per motivi di sicurezza che di conformità. Ad esempio, un'azienda retail potrebbe volere che il suo servizio di pagamento raggiunga solo i gateway di pagamento approvati e blocchi tutte le altre destinazioni.

Come gestire l'egress in Kubernetes

Kubernetes offre diversi metodi per gestire in modo efficace e sicuro l'egress. Implementando questi controlli, le organizzazioni possono garantire che solo il traffico autorizzato possa fluire verso le reti esterne, migliorando così la sicurezza e la conformità.

Policy di rete

Le politiche di rete Kubernetes possono limitare i pod autorizzati a effettuare connessioni in uscita e specificare gli indirizzi o i domini che possono raggiungere, spesso utilizzando la notazione CIDR per gli intervalli IP. Queste politiche supportano modelli zero-trust, consentendo solo comunicazioni esplicitamente autorizzate. Le regole di egress all'interno di queste politiche di rete definiscono le restrizioni del traffico in uscita, controllando a quali pod di destinazioni esterne possono accedere.

Gateway di egress

I gateway di egress, spesso implementati come parte di una rete di servizi, possono indirizzare tutto il traffico in uscita attraverso un punto di controllo monitorato, consentendo un controllo avanzato del traffico, la crittografia e l'osservabilità.

Nodi di egress dedicati

I nodi di uscita dedicati o i gateway NAT possono essere utilizzati anche per centralizzare e registrare le connessioni in uscita, fornendo tracciabilità e un migliore isolamento delle prestazioni.

Benefici dell'egress in Kubernetes

  • Solida protezione dei dati: le policy di rete di egress aiutano a limitare il traffico in uscita, riducendo il rischio di fughe di dati o di servizi compromessi che si connettono a endpoint esterni dannosi.
  • Conformità: il controllo del traffico di egress di Kubernetes assicura che i workload sensibili soddisfino i requisiti normativi, limitando le connessioni agli endpoint approvati e fornendo visibilità sugli audit.
  • Migliore controllo dei costi: la gestione del traffico di egress aiuta a prevenire addebiti imprevisti per il cloud, dovuti a chiamate in uscita incontrollate o a trasferimenti di dati di grandi dimensioni.
  • Osservabilità migliorata: la gestione del traffico di egress offre visibilità sui sistemi esterni su cui si basano le applicazioni, supportando la gestione dei fornitori, il debug e l'identificazione delle dipendenze dei servizi esterni.
Soluzioni correlate
IBM Red Hat OpenShift

Red Hat OpenShift on IBM Cloud è una OpenShift Container Platform (OCP) completamente gestita.

Esplora Red Hat OpenShift
Soluzioni container

Le soluzioni basate su container eseguono e scalano workload containerizzati con sicurezza, innovazione open source e implementazione rapida.

Esplora i container
Servizi di consulenza cloud 

Sblocca nuove funzionalità e promuovi l'agilità aziendale con i servizi di consulenza cloud di IBM. Scopri come creare insieme soluzioni, accelerare la trasformazione digitale e ottimizzare le prestazioni attraverso strategie di hybrid cloud e partnership di esperti.

Servizi cloud
Fai il passo successivo

Inizia con una piattaforma Red Hat OpenShift completamente gestita o esplora la flessibilità dell'ecosistema Kubernetes di IBM Cloud. Accelera il processo di sviluppo e distribuzione con soluzioni scalabili e sicure, su misura per le tue esigenze.

  1. Esplora Red Hat OpenShift
  2. Esplora Kubernetes