L’utilizzo di Kubernetes in una toolchain DevOps consente di gestire l’infrastruttura e le configurazioni in modo coerente, in più ambienti, tramite un’orchestrazione distribuita. In questo modo la distribuzione e la scalabilità delle applicazioni sono automatizzate con la gestione dei contenitori e la velocità delle pipeline DevOps acquista resilienza operativa. Ciò è un vantaggio, ancora più evidente per le organizzazioni che eseguono più piattaforme. Senza una tecnologia come Kubernetes, infatti, le pratiche di distribuzione potrebbero variare da una piattafoma all’altra.
Di seguito diamo uno sguardo a come, secondo gli esperti, l’utilizzo di Kubernetes avvantaggia la toolchain DevOps: da una migliore automazione e scalabilità alle tecniche di distribuzione. Rimanendo però consapevoli che Kubernetes è una piattaforma complessa e gli specialisti non abbondano.
I vantaggi che Kubernetes apporta a DevOps
Un framework basato sui principi Agile è fondamentale per la DevOps delivery nella maggior parte delle organizzazioni. Da questo punto di vista, la piattaforma Kubernetes si adatta bene alle pratiche Agile perché è un’architettura orientata ai servizi e un framework orientato agli oggetti, due caratteristiche che la rendono sicuramente Agile.
DevOps copre in genere tutte le fasi del ciclo di vita di un software, dalla pianificazione e creazione alla distribuzione, fino al monitoraggio. Nella distribuzione, Kubernetes aumenta la velocità, migliorando al contempo automazione, scalabilità e resilienza delle applicazioni. Il risultato è che le squadre DevOps sono più liberi dalla gestione manuale di questi fattori in produzione.
Inoltre, Kubernetes consente agli amministratori di distribuire applicazioni ovunque, senza preoccuparsi dell’infrastruttura sottostante. Questo significa poter distribuire applicazioni con lo stesso livello di controllo, indipendentemente dal fatto che si lavori su un cloud a cui possono accedere i lavoratori in home office o sull’infrastruttura locale. Ovvio che questo rappresenta un vantaggio importante per le aziende che eseguono container.
Un altro aspetto importante è che Kubernetes tratta tutto come codice. I livelli di infrastruttura e applicazione vengono scritti come istruzioni di configurazione e archiviate in un repository. Questo fa sì che, con Kubernetes, una modifica alla configurazione – come, ad esempio, un aggiornamento di manutenzione – viene scritta nel codice e distribuita, anziché implementata manualmente. Ciò consente agli specialisti di risparmiare tempo perché non devono più eseguire queste attività di routine. Kubernetes consente anche tecniche di distribuzione sofisticate, come test in produzione e rollback del rilascio. In questo modo gli sviluppatori possono implementare rapidamente una modifica del codice, un elemento chiave di una strategia DevOps.
Entrando nello spaccato di Kubernetes, sono individuabili altri vantaggi ottenibili con l’affiancamento a DevOps. Eccone qui di seguito alcuni:
- Kubernetes può essere eseguito come soluzione ibrida, in locale o in cloud. L’esecuzione in cloud aiuta nella collaborazione i team DevOps che lavorano da remoto.
- Kubernetes è una tecnologia open source. La piattaforma è stata originariamente creata da Google, ma ora è gestita dalla Cloud Native Computing Foundation. Poiché lo strumento segue gli standard open source, può integrarsi con diversi toolchain e altri servizi in uso per una pipeline DevOps. Ad esempio, molte organizzazioni DevOps si affidano a una toolchain CI/CD che sposta automaticamente il codice da una fase del processo a quella successiva, inclusa la containerizzazione.
- Kubernetes non modifica i container durante il funzionamento. L’immutabilità, una caratteristica chiave della piattaforma, è un vantaggio perché consente agli amministratori IT di arrestare, ridistribuire e riavviare prontamente un container con ripercussioni minime sui servizi.
- Kubernetes supporta i grafici Helm. Gli specialisti delle operazioni possono utilizzarli per distribuire più progetti con le stesse applicazioni personalizzate. Senza questa opzione di gestione delle risorse, gli sviluppatori dovrebbero personalizzare il software per ogni ambiente.
I rischi di Kubernetes per i team DevOps
Passiamo adesso all’altra faccia della medaglia. Kubernetes è una tecnologia complessa, un aspetto non secondario che può renderla un rischio di per sé. Sebbene l’utilizzo di Kubernetes sia balzato al 48% nel 2020 dal 27% nel 2018, secondo il VMware State of Kubernetes Report c’è ancora una carenza di specialisti Kubernetes nei principali mercati del lavoro. Questo significa che per integrare DevOps e Kubernetes occorre anche investire nella formazione.
C’è poi da considerare che il multi-tenancy aumenta la complessità della distribuzione dei servizi. Sappiamo che ogni ambiente ha i propri requisiti e controlli di sicurezza, se ogni linea di business in un’azienda richiede il proprio cluster Kubernetes e servizi di supporto, come la sicurezza, in modo che un tenant non monopolizzi le risorse del cluster e danneggi le prestazioni degli altri tenant, le operazioni gestiranno più configurazioni Kubernetes. Un’altra preoccupazione è che ogni tenant può accedere solo ai rispettivi servizi, inclusi metriche, log e metadati. Questi fattori indicano che nelle distribuzioni su larga scala nella vita reale, Kubernetes è decisamente impegnativo.
Il futuro di DevOps per l’orchestrazione distribuita
La toolchain DevOps è ormai nota come centro per l’automazione, sia tramite strumenti CI/CD sia con l’implementazione con script, oppure ancora una combinazione di entrambi. Tuttavia, l’automazione è solo una parte della storia dell’orchestrazione distribuita. Il futuro delle toolchain DevOps è decisamente incentrato sull’ibrido, in quanto supporta applicazioni legacy ancora nei data center, applicazioni esistenti nel cloud e applicazioni appena migrate nel cloud. Queste applicazioni, a loro volta, supporteranno uffici sempre più ibridi e forza lavoro remota, inclusi i team DevOps che richiedono applicazioni veloci indipendentemente dalla loro posizione di lavoro.
Si potrebbe dire della toolchain DevOps che diventa un punto di orchestrazione centralizzato è il risultato di una combinazione tra Kubernetes, l’automazione dei servizi di workflow, risorse cloud, pratiche DevOps e strumenti di automazione.