Cos'è un controller Kubernetes Ingress?

Vista verso l'alto di un edificio circolare

Autori

Stephanie Susnjara

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

Cos'è un controller Kubernetes Ingress?

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.

Le ultime notizie nel campo della tecnologia, supportate dalle analisi degli esperti

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.

Grazie per aver effettuato l'iscrizione!

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.

Cos'è Kubernetes?

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.

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'è Kubernetes Ingress?

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.

Risorse Ingress

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.

Controller Ingress

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.

Come funziona un controller Kubernetes Ingress?

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:

  • Percorsi URL e nomi di host
  • Intestazioni e metodi HTTP
  • Richiesta di contenuti e cookie
  • Token di autenticazione e contesto utente

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.

Funzioni chiave di un controller Kubernetes Ingress

Elaborazione delle richieste

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.

Gestione della configurazione

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.

Bilanciamento del carico

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.

Gestione TLS

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.

Controllo dello stato di salute

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.

Casi d'uso del controller Kubernetes Ingress

Consolidamento delle applicazioni

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.

Ambienti di sviluppo e staging

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.

Integrazione di partner e fornitori

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.

Distribuzione globale del traffico

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.

Requisiti di conformità e audit

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.

Benefici dei controller Kubernetes Ingress

  • Consolidamento dell'infrastruttura: le architetture tradizionali richiedono spesso bilanciatori di carico dedicati per ogni applicazione, il che comporta notevoli costi hardware e operativi. I controller Ingress consentono alle organizzazioni di consolidare più applicazioni dietro un'infrastruttura condivisa, riducendo i costi di bilanciamento del carico e migliorando l'utilizzo delle risorse.
  • Cicli di sviluppo accelerati: i team di sviluppo possono distribuire e testare nuove caratteristiche senza coinvolgere amministratori di rete o configurare bilanciatori di carico esterni. I controller Ingress supportano i workflow GitOps, in cui le modifiche al routing vengono gestite tramite il controllo della versione e le pipeline di implementazione automatizzate.
  • Osservabilità migliorata: per fornire una migliore osservabilità, i moderni controller Ingress forniscono dati di analytics dettagliati sui pattern di utilizzo delle applicazioni, sul comportamento degli utenti e sui rallentamenti delle prestazioni. Questa visibilità consente di prendere decisioni basate sui dati in merito alla pianificazione delle capacità, l'adozione delle funzionalità e l'ottimizzazione dell'esperienza utente.
  • Applicazione automatizzata della sicurezza: anziché configurare le politiche di sicurezza su più sistemi, le organizzazioni possono applicare l'autenticazione, l'autorizzazione, la limitazione della velocità, le regole WAF (Web Application Firewall) e la protezione dal DDoS (Distributed Denial-of-Service) tramite le politiche del controller Ingress. Gli aggiornamenti di sicurezza possono essere implementati istantaneamente su tutte le applicazioni.
  • Portabilità cloud: a differenza dei servizi di bilanciamento del carico specifici per il cloud, i controller Ingress forniscono funzionalità uniformi tra i diversi provider di cloud e l'infrastruttura on-premise. Le applicazioni possono essere migrate tra più ambienti senza modifiche all'architettura.
  • Funzionalità di scalabilità dinamica: i controller Ingress possono regolare automaticamente i modelli di routing in base alle condizioni del traffico in tempo reale, alla capacità di back-end e alle politiche configurate. Questa caratteristica consente una sofisticata modellazione del traffico che si adatta alle mutevoli condizioni aziendali.

Sfide dei controller Ingress

  • Considerazioni sulle prestazioni: tutto il traffico esterno fluisce attraverso i controller Ingress, il che li rende potenziali colli di bottiglia negli ambienti di produzione. Le organizzazioni devono pianificare attentamente la capacità, implementare un monitoraggio adeguato e progettare strategie di ridondanza per garantire un'elevata disponibilità.
  • Curva di apprendimento e sovraccarico operativo: i team devono sviluppare competenze nei concetti di rete Kubernetes, nella gestione della configurazione YAML e nella risoluzione dei problemi dei sistemi distribuiti, che possono richiedere una formazione significativa e un adeguamento operativo.

Opzioni del controller Kubernetes 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:

  • Controller NGINX Ingress: il controller NGINX Ingress (ingress-nginx), l'opzione più adottata, offre prestazioni di livello aziendale e ampie funzionalità di personalizzazione. L'ecosistema maturo di NGINX offre documentazione completa, opzioni di supporto commerciale e scalabilità comprovata.
  • Controller Traefik Ingress: Traefik è progettato per i moderni ambienti cloud-native, con particolare attenzione alla scoperta automatica dei servizi e alla facilità d'uso. Traefik eccelle negli ambienti dinamici in cui i servizi Kubernetes cambiano frequentemente, poiché offre l'integrazione con mesh di servizi e container registry.
  • Controller HAProxy Ingress: basato sul sistema di bilanciamento del carico HAProxy, standard di settore, il controller HAProxy Ingress offre prestazioni solide per scenari a traffico elevato. Questo controller supporta algoritmi avanzati di bilanciamento del carico, statistiche dettagliate e un controllo granulare del traffico.
  • Istio Gateway: in quanto parte della piattaforma completa di servizi mesh Istio , Istio Gateway offre funzionalità avanzate di gestione del traffico, sicurezza e osservabilità. Istio Gateway supporta anche funzionalità sofisticate, come traffic splitting, fault injection e tracciamento distribuito.
  • Soluzioni per provider di cloud: i principali provider di cloud offrono dei controller Ingress ottimizzati che si integrano profondamente con le loro piattaforme. Il controller AWS Load Balancer, Google Cloud Load Balancer, il controller Azure Application Gateway Ingress e IBM Cloud Application Load Balancer offrono una perfetta integrazione con i servizi cloud-native, la scalabilità automatica e la fatturazione semplificata.
  • Controller basati su Envoy: i controller Ingress basati sul proxy Envoy, tra cui Ambassador ed Emissary-Ingress, offrono una gestione del traffico ad alte prestazioni con caratteristiche di osservabilità avanzate. Queste soluzioni includono spesso autenticazione integrata, rate limiting e la funzionalità API gateway, il che le rende adatte alle organizzazioni che creano strategie complete di API management.
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.

Esplora Red Hat OpenShift Esplora Kubernetes