Panoramica
Il Kubernetes Java™ Client è una libreria client che permette di utilizzare il linguaggio di programmazione Java per interfacciarsi con Kubernetes. Realizzato a partire dall'API REST Kubernetes, il client Java offre l'accesso programmatico a Kubernetes e consente di creare, modificare ed eliminare tutta una serie di risorse all'interno dei cluster Kubernetes, di estendere i deployment, di eseguire comandi e di monitorare gli eventi.
Kubernetes è una piattaforma open source per l'orchestrazione dei container che permette di automatizzare il deployment, la gestione e la scalabilità delle applicazioni containerizzate. Le librerie client per Kubernetes sono in grado di gestire attività quali l'autenticazione e di semplificare la scrittura di applicazioni che utilizzano l'API Kubernetes.
Il primo e il più utilizzato framework client è il Kubernetes Go Client ufficiale, chiamato client-go. Client-go viene utilizzato da Kubernetes ma anche da altre distribuzioni e piattaforme, come ad esempio Red Hat® OpenShift. Tra i client più diffusi sono presenti librerie client sia ufficiali che sviluppate dalla community per i diversi linguaggi di programmazione. I client Java per Kubernetes sviluppati dalla community sono numerosi ma il Kubernetes Java Client è la libreria client ufficiale di cui si occupa il Kubernetes API Machinery Special Interest Group.
Perché utilizzare il Kubernetes Java Client?
Negli ultimi anni gli sviluppatori hanno lasciato le architetture monolitiche in favore di applicazioni cloud native più versatili. Nel tentativo di modernizzare le applicazioni Java esistenti, molte organizzazioni passano a modelli di deployment cloud. Ma Java cloud native, un componente essenziale per la modernizzazione delle applicazioni Java, spesso richiede l'utilizzo di piattaforme per l'orchestrazione dei container, come Kubernetes, che permettono di ottimizzare il deployment, la gestione e la scalabilità delle applicazioni.
Le applicazioni containerizzate non devono necessariamente comunicare con l'API Kubernetes, ma sono molti gli scenari di utilizzo in cui serve eseguire chiamate API per svolgere determinate attività. Chi desidera adottare un approccio in autonomia alla gestione dei cluster Kubernetes, anziché affidarsi a piattaforme come Red Hat OpenShift e a componenti come Red Hat Advanced Cluster Management for Kubernetes, può utilizzare il Kubernetes Java Client ufficiale per i seguenti scenari di utilizzo:
- Gestione delle applicazioni
- Scalabilità e scalabilità automatica
- Monitoraggio, notifica e registrazione
- Introduzione del deployment continuo
- Estensione dell'API Kubernetes con operatori personalizzati
- Amministrazione dei cluster
- Gestione del cloud ibrido
Dato che Kubernetes e molti dei suoi strumenti e delle sue librerie sono scritti in Golang, per passare allo sviluppo cloud native con Kubernetes le aziende, che non dispongono di sviluppatori specializzati in questo linguaggio, hanno bisogno di investire sulla formazione del personale o assumere nuove risorse. Per le aziende che hanno già applicazioni Java o sviluppatori specializzati nel linguaggio Java all'interno dell'organico, l'utilizzo del Kubernetes Java Client evita di dover formare il team su un nuovo linguaggio di programmazione e semplifica il passaggio allo sviluppo cloud native.
Risorse da Red Hat
Quali sono le alternative al Kubernetes Java Client?
Il Kubernetes Java Client ufficiale può sembrare la scelta migliore per gli sviluppatori Java, ma non è l'unico strumento a disposizione degli utenti per semplificare la gestione dei cluster Kubernetes.
API REST Kubernetes e kubectl
L'API REST Kubernetes funge da front end per il piano di controllo di Kubernetes e si può utilizzare per gestire, creare e configurare i cluster Kubernetes. È possibile interagire con l'API utilizzando kubectl, lo strumento a riga di comando di Kubernetes, per eseguire chiamate API o per gestire le risorse di Kubernetes e si può accedere direttamente all'API REST utilizzando un client http, come curl o Wget.
Fabric8 Java Client
Il Fabric8 Java Client è una libreria client gestita dalla community ed è la prima libreria Java per Kubernetes. Si differenzia dal Kubernetes Java Client ufficiale perché offre un robusto linguaggio specifico di dominio (DSL), una vasta gamma di estensioni e il supporto per le risorse personalizzate senza richiedere l'aggiunta di dipendenze supplementari.
Operatori Kubernetes
Un operatore Kubernetes è un controller personalizzato specifico per un'applicazione che utilizza l'API Kubernetes e kubectl per creare, configurare e gestire le applicazioni. A differenza della maggior parte dei controller, gli operatori Kubernetes sfruttano conoscenze specifiche del dominio o dell'applicazione per automatizzare l'intero ciclo di vita delle applicazioni containerizzate e semplificare quindi il deployment e la scalabilità dei processi alla base di queste applicazioni.
Altre librerie di terze parti
Il Fabric8 Java Client e il Kubernetes Java Client ufficiale sono le librerie Java per Kubernetes più diffuse, ma non sono le uniche opzioni disponibili. Tra gli altri client Java ricordiamo l'Amdatu Labs Java Client per il framework OSGI e il YAKC Java Client per Kubernetes.
Gli sviluppatori specializzati in altri linguaggi di programmazione possono optare per client non basati su Java. Esistono librerie ufficiali e di terze parti per numerosi linguaggi di programmazione, tra cui C, dotnet, Haskell, Javascript, Perl, Python, Ruby, ecc.
Perché scegliere Red Hat?
Kubernetes è una piattaforma open source per l'orchestrazione dei container molto efficiente, ma non offre la possibilità di integrare altri componenti come ad esempio funzionalità per la rete, lo storage, il monitoraggio e le pratiche CI/CD; tutti elementi essenziali per chi desidera sviluppare le applicazioni più rapidamente. Red Hat OpenShift, basato sulla tecnologia Kubernetes, offre invece una piattaforma per l'orchestrazione dei container di livello enterprise che incorpora tutti i componenti di cui sopra e permette quindi di accelerare la distribuzione delle applicazioni containerizzate.
Gli utenti possono utilizzare il Kubernetes Java Client ufficiale e qualsiasi altra libreria per Kubernetes, esistono però anche altri client che consentono di sfruttare le risorse supplementari e gli endpoint API aggiunti da Red Hat OpenShift. Come nel caso dei client per Kubernetes, anche le librerie client API REST per OpenShift sono disponibili per Java e per molti altri linguaggi di programmazione.
Oltre a offrire la sua competenza ed esperienza in merito alla tecnologia dei container, Red Hat aiuta le aziende a superare le complessità legate alla modernizzazione delle applicazioni perché permette loro di automatizzare la gestione dell'infrastruttura grazie all'utilizzo sinergico delle sue soluzioni, Red Hat OpenShift, Red Hat Ansible Automation Platform e gli operatori Kubernetes. Red Hat fornisce anche strumenti aggiuntivi, inclusi in Red Hat Advanced Cluster Management for Kubernetes, che permettono di automatizzare la gestione delle applicazioni in diversi cluster e infrastrutture, accelerano la distribuzione delle applicazioni e favoriscono la modernizzazione dei carichi di lavoro.
Il blog ufficiale di Red Hat
Leggi gli articoli del blog di Red Hat per scoprire novità e consigli utili sulle nostre tecnologie, e avere aggiornamenti sul nostro ecosistema di clienti, partner e community.