Un controller Kubernetes Ingress è un componente software specializzato che gestisce il traffico in entrata verso le applicazioni in esecuzione in ambienti Kubernetes, fungendo da ponte tra utenti esterni e servizi containerizzati.
Le aziende moderne fanno molto affidamento su applicazioni e workload distribuiti, costituiti da decine o centinaia di microservizi. Senza un'adeguata orchestrazione del traffico, ogni servizio richiederebbe il proprio endpoint pubblico, il che introdurrebbe problemi significativi di gestione e sicurezza.
Ad esempio, una piattaforma sanitaria potrebbe aver bisogno di punti di accesso separati per i portali dei pazienti, le dashboard dei fornitori, i sistemi di fatturazione e i report sulla conformità - un approccio che diventa costoso e complesso dal punto di vista operativo.
Un controller Kubernetes Ingress risolve questo problema fungendo da bilanciatore del carico e router di traffico intelligente nel punto di ingresso dell'applicazione. Stabilisce un percorso di traffico centralizzato per consentire agli utenti esterni di accedere ai servizi interni.
L'ecosistema Kubernetes offre vari controller Ingress, inclusi strumenti open source (ad esempio, NGINX, Traefik) disponibili su piattaforme come GitHub e soluzioni proprietarie progettate per soddisfare esigenze organizzative specifiche.
Newsletter di settore
Resta al passo con le tendenze più importanti e interessanti del settore relative ad AI, automazione, dati e oltre con la newsletter Think. Leggi l' Informativa sulla privacy IBM.
L'abbonamento sarà fornito in lingua inglese. Troverai un link per annullare l'iscrizione in tutte le newsletter. Puoi gestire i tuoi abbonamenti o annullarli qui. Per ulteriori informazioni, consulta l'Informativa sulla privacy IBM.
Inizialmente sviluppato da Google e donato alla Cloud Native Computing Foundation (CNCF) nel 2015, Kubernetes ora supporta l'infrastruttura IT essenziale per la maggior parte delle aziende Fortune 500, rendendo la gestione dei controller Ingress un elemento critico per le operazioni aziendali. Secondo un sondaggio del 2022, il 96% delle organizzazioni utilizza Kubernetes o sta valutando questa tecnologia per gli ambienti di produzione.1
Prima di Kubernetes, le applicazioni venivano in genere eseguite su server dedicati o macchine virtuali (VM), rendendo la scalabilità costosa e dispendiosa in termini di tempo. Kubernetes ha introdotto i container, unità leggere e portatili che impacchettano le applicazioni con tutte le relative dipendenze.
Kubernetes ha rivoluzionato i workflow DevOps e l'implementazione delle applicazioni introducendo l'orchestrazione dei container su larga scala. Questa piattaforma open source automatizza l'implementazione, il ridimensionamento e la gestione delle applicazioni containerizzate su infrastrutture distribuite, consentendo una collaborazione fluida tra i team di sviluppo e operativi.
Kubernetes organizza le applicazioni in pod, le unità distribuibili più piccole composte da uno o più container (in genere container Docker). Questi pod attraversano i nodi di lavoro all'interno dei cluster, mentre un piano di controllo coordina tutte le operazioni del cluster. I servizi forniscono identità di rete stabili per gruppi di pod, consentendo modelli di comunicazione affidabili.
I controller Ingress sono in genere implementati come pod specializzati che monitorano lo stato del cluster tramite l'API Kubernetes. Questi controller tengono traccia delle modifiche nelle risorse Ingress, ovvero oggetti di configurazione che definiscono le regole di indirizzamento del traffico, e aggiornano automaticamente le loro tabelle di routing per riflettere le nuove implementazioni delle applicazioni o gli aggiornamenti delle configurazioni.
Per capire come funzionano i controller Ingress, è essenziale comprendere Kubernetes Ingress), ovvero la risorsa API (o oggetto Ingress) che definisce le regole di routing che indirizzano il traffico esterno verso i servizi all'interno di un cluster Kubernetes.
Kubernetes Ingress è distinto dal termine generico ingress, che si riferisce al flusso di traffico di rete in entrata in un ambiente applicativo containerizzato cloud-native. In Kubernetes, Ingress si riferisce specificamente all'insieme di regole e configurazioni che gestiscono il modo in cui il traffico in entrata viene indirizzato ai diversi servizi. Invece, ingress in senso lato si riferisce semplicemente a qualsiasi traffico che entra in un sistema (al contrario dell'egress, che si riferisce al traffico che esce dal sistema).
Approfondimenti su ingress ed egress in Kubernetes.
Kubernetes Ingress offre un approccio dichiarativo alla gestione dell'accesso esterno ai servizi che si trovano in un cluster Kubernetes. Invece di esporre i singoli servizi (ad esempio, NodePort, LoadBalancer) direttamente su Internet, Ingress crea un livello di accesso controllato che indirizza in modo intelligente le richieste in base a più criteri. Questa funzionalità consente la gestione efficiente del traffico esterno verso i servizi, in genere esposto utilizzando ClusterIP all'interno del cluster Kubernetes.
Kubernetes Ingress funziona attraverso due componenti complementari.
Le risorse in ingresso (denominate anche risorse Kubernetes o oggetti API Kubernetes) definiscono le regole di routing. Sono definiti in YAML o JSON e specificano le regole di ingresso, i certificati SSL, i requisiti di autenticazione e le policy di traffico.
Ad esempio, gli utenti possono utilizzare il campo IngressClassName per determinare quale controller Ingress debba gestire la risorsa, consentendo la direzione del traffico verso un controller specifico quando esistono più controller in un cluster.
I controller Ingress sono componenti software che leggono e applicano le regole di configurazione, fungendo da proxy inversi con funzionalità avanzate di gestione del traffico.
I tradizionali bilanciatori di carico Layer 4, come quelli per i percorsi TCP, UDP e HTTP/HTTPS, distribuiscono il traffico basandosi esclusivamente su indirizzi IP e porte. Al contrario, un controller Kubernetes Ingress opera al livello 7 (il livello dell'applicazione), consentendo un routing più sofisticato.
Utilizzando l'API Kubernetes Ingress e caratteristiche come HTTPRoute, il controller Ingress prende decisioni di routing sulla base di attributi dettagliati specifici di HTTP come:
Queste decisioni si basano sulle regole di configurazione che determinano i criteri di routing e altri requisiti. I controller Ingress monitorano continuamente le modifiche a queste configurazioni, aggiornando automaticamente il comportamento di routing senza interventi manuali e garantendo una distribuzione del traffico e una gestione della sicurezza ottimali.
I cluster Kubernetes possono eseguire più controller Ingress contemporaneamente, ognuno dei quali gestisce diversi tipi di traffico o applicazioni. Ogni controller opera in base agli eventi, rispondendo alle modifiche nelle risorse Ingress leggendo specifiche, annotazioni e metadati, convertendoli quindi in istruzioni di routing eseguibili.
I controller Kubernetes Ingress esaminano le richieste in arrivo e prendono decisioni di routing in base a regole predefinite, come nomi host e nomi DNS. Gestiscono il traffico HTTP e HTTPS, eseguono la terminazione SSL e prendono decisioni intelligenti sul bilanciamento del carico su più istanze del servizio.
I controller Kubernetes Ingress monitorano continuamente l'API Kubernetes per rilevare eventuali modifiche alle risorse di ingresso nei namespace. Indipendentemente dal fatto che queste modifiche siano applicate tramite kubectl, pipeline CI/CD o altri strumenti (ad esempio, Helm, Terraform), il controller aggiorna automaticamente le regole di routing senza alcun intervento manuale o riavvio del servizio.
Integrata nella maggior parte dei controller Kubernetes Ingress, la funzionalità di bilanciamento del carico distribuisce le richieste in entrata su più istanze dello stesso servizio, garantendo prestazioni ottimali ed evitando che ogni singola istanza venga sovraccaricata.
I moderni controller Kubernetes Ingress includono sofisticate funzionalità di gestione SSL/TLS, come la terminazione TLS, il provisioning automatico dei certificati, il rinnovo e l'applicazione sicura delle comunicazioni.
I controller Kubernetes Ingress avanzati monitorano continuamente lo stato di salute dei servizi di backend e indirizzano automaticamente il traffico lontano dalle istanze in errore, al fine di garantire un'elevata disponibilità e una migliore esperienza dell'utente.
Le grandi organizzazioni utilizzano i controller Ingress per consolidare centinaia di applicazioni interne dietro punti di accesso unificati. Questo approccio riduce i costi dell'infrastruttura migliorando al contempo la sicurezza attraverso l'applicazione centralizzata delle policy. Un'azienda manifatturiera globale potrebbe indirizzare le richieste a diversi sistemi ERP regionali, applicazioni della supply chain e portali per i clienti attraverso un'unica implementazione del controller Ingress.
I team di sviluppo utilizzano i controller Ingress per creare ambienti separati per il test di nuove caratteristiche. I team possono configurare automaticamente nuovi ambienti di test e indirizzare il traffico giusto verso ciascuno di essi in base alla funzionalità che si sta sviluppando.
Le aziende utilizzano i controller Ingress per condividere in modo sicuro le API interne con partner e fornitori. Ogni organizzazione può avere autorizzazioni di accesso e limiti di utilizzo diversi, tutti gestiti tramite un unico sistema senza creare un'infrastruttura separata.
Le organizzazioni multinazionali implementano i controller Ingress come parte delle strategie globali di gestione del traffico, indirizzando gli utenti verso data center geograficamente ottimali, mantenendo al contempo policy di sicurezza e monitoraggio uniformi.
I settori regolamentati utilizzano i controller Ingress per implementare le registrazioni richieste, i controlli degli accessi (da aggiungere alla creazione della pagina) e le policy di governance dei dati. Tutti gli accessi esterni possono essere monitorati e verificati centralmente attraverso il livello Ingress.
La scelta del controller di ingresso Kubernetes appropriato dipende dai requisiti dell'organizzazione, dall'infrastruttura esistente e dalle funzionalità del team. Ogni implementazione offre vantaggi distinti per casi d'uso specifici:
Red Hat OpenShift on IBM Cloud è una OpenShift Container Platform (OCP) completamente gestita.
Le soluzioni basate su container eseguono e scalano workload containerizzati con sicurezza, innovazione open source e implementazione rapida.
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.