A cura di Andrea Santonastasio, Senior Application Architect di Axiante
Le business application sono ormai centrali per l’efficienza e il successo delle aziende che si trovano ad affrontare le attuali incertezze dei mercati locali e globali. Nuovi sviluppi, ma soprattutto continui aggiornamenti sono una voce di costo importante e pertanto scegliere le tecnologie più idonee è quindi determinante per ottimizzare i processi aziendali nel tempo e tenere sotto controllo costi e risorse coinvolte.
Sin dalla loro introduzione, le tecnologie Kubernetes (K8s) hanno rivoluzionato il modo in cui le applicazioni vengono sviluppate, distribuite e gestite, soprattutto nei moderni ambienti cloud, ma non solo. I vantaggi sono evidenti, sia a livello di prestazioni sia in termini economici: riduzione dei tempi di sviluppo e rilascio applicativo, ottimizzazione dei costi, bilanciamento del carico, dimensionamento automatico, gestione dello stato, distribuzione continua del software.
Non è un caso, dunque, che Kubernetes sia ormai adottato in diverse realtà aziendali, perché permette di semplificare la gestione delle applicazioni in ambienti scalabili e ad alta disponibilità. Il tutto supportato da un ecosistema in rapida evoluzione, strumenti di monitoraggio, orchestrazione di servizi, gestione delle configurazioni e molto altro ancora. A oggi le tecnologie Kubernetes hanno raggiunto uno stato di maturità significativo e hanno dimostrato il proprio valore nell’orchestrazione di applicazioni containerizzate.
Networking e interoperabilità: i vantaggi di Kubernetes
Nel contesto di Kubernetes, il networking e l’interoperabilità sono due aspetti fondamentali per garantire il corretto funzionamento e la comunicazione tra i diversi componenti dell’orchestratore e delle applicazioni containerizzate. L’approccio alle soluzioni architetturali è, infatti, necessariamente differente da quelle tradizionali.
Kubernetes fornisce un modello di networking astratto che consente ai container – ambienti runtime completi e isolati che assicurano il funzionamento indipendentemente dall’hardware sottostante – di comunicare tra loro all’interno di un cluster. Questo modello astratto è implementato attraverso un componente chiamato “kube-proxy”, che gestisce la configurazione delle regole di rete e l’indirizzamento dei pacchetti per le comunicazioni intra-cluster.
Per implementare il networking in Kubernetes esistono diverse opzioni:
- Networking basato su CNI (Container Network Interface) – Kubernetes supporta l’interfaccia CNI, che consente di utilizzare plugin di rete specifici per configurare il networking dei container. Ogni nodo del cluster viene configurato con un plugin CNI che si occupa di gestire l’assegnazione degli indirizzi IP ai container e l’instradamento del traffico di rete.
- Networking basato su overlay – ogni nodo del cluster dispone di un’interfaccia di rete virtuale che viene utilizzata per instradare il traffico tra i container.
L’interoperabilità è, invece, essenziale per consentire alle applicazioni di comunicare con servizi esterni al cluster e con altre risorse di rete. Per comprendere i vantaggi offerti dalle tecnologie Kubernetes, vanno tenuti in considerazione alcuni concetti chiave:
- Servizi – Kubernetes fornisce il concetto di “servizio” per esporre le applicazioni all’interno di un cluster. I servizi Kubernetes possono essere configurati come servizi ClusterIP per l’esposizione interna all’interno del cluster, servizi NodePort per l’esposizione su una porta specifica su ogni nodo o servizi LoadBalancer per l’esposizione attraverso un bilanciatore di carico esterno.
- Ingress – L’API Ingress di Kubernetes consente di esporre le applicazioni HTTP e HTTPS su un indirizzo IP esterno e di gestire il routing del traffico in base a regole specifiche. Gli ingress controller, come NGINX Ingress Controller o Traefik, sono utilizzati per implementare l’Ingress nelle implementazioni Kubernetes.
- DNS – Kubernetes offre un servizio DNS interno che consente di risolvere i nomi dei servizi all’interno del cluster. È possibile utilizzare i nomi dei servizi Kubernetes per comunicare tra le applicazioni all’interno del cluster senza dover conoscere gli indirizzi IP specifici.
- Integrazione con servizi esterni – Kubernetes supporta l’integrazione con servizi esterni attraverso il concetto di “service discovery” e l’utilizzo di vari tipi di servizi, come quelli LoadBalancer o gli ExternalName, per puntare a risorse esterne al cluster.
In Kubernetes l’interoperabilità tra le applicazioni può, quindi, essere raggiunta attraverso una corretta configurazione di networking, l’uso dei servizi Kubernetes per l’esposizione delle applicazioni e l’integrazione con servizi esterni tramite meccanismi di service discovery.
Il disegno delle infrastrutture Kubernetes offre quindi una larga gamma di opzioni, oltre che diverse funzionalità per la gestione del networking e dell’interoperabilità all’interno del cluster e con sistemi esterni. Ecco perché si rivela fondamentale la scelta delle soluzioni e degli strumenti, che deve essere attentamente ritagliata sulle esigenze specifiche dell’ambiente, delle applicazioni di business e del livello di sicurezza richiesto.
L’approccio di Axiante alla containerizzazione K8s
Semplificare il processo di integrazione applicativa per le aziende è l’obiettivo perseguito da Axiante Digital, la business unit di Axiante specializzata nello sviluppo software e nella creazione di soluzioni digitali uniche per ogni realtà. Axiante mette a disposizione un bagaglio di competenze completo e suggerisce le soluzioni tecnologiche migliori per trarre valore dall’innovazione e sfruttare tutte le potenzialità offerte dai nuovi linguaggi software. Grazie alle esperienze maturate nei settori più diversi, i consulenti di Axiante sono in grado di seguire ogni azienda nello sviluppo di un vasto ambito applicativo.
La strategia viene studiata in sinergia con il team IT e il team business dell’azienda, valutando il parco applicativo esistente, gli obiettivi di crescita e i vincoli di budget. L’esperienza di Axiante aggiunge il valore di un progetto alla semplice scelta di una tecnologia, offrendo insieme al prodotto una consulenza applicativa fondamentale per il successo dell’iniziativa.