Container platform: orchestrazione con Kubernetes e Openshift

triangolo

Platform container: creazione e deploy su Docker

Sono circa il 30% le aziende che già utilizzano una container platform all’interno della loro strategia IT: nel report “Market Guide for Cloud Workload Protection Platforms” del 2021, Gartner prevede una crescita nell’utilizzo dei container fino all’85% entro il 2025.

Che cos’è un container? Un container è un’unità software che contiene tutti gli elementi per essere eseguito e spostato su qualsiasi ambiente. Il successo della containerizzazione delle applicazioni deriva da una serie di vantaggi apportati da questa tecnologia:

  1. Il fatto che il container contenga tutti gli elementi per essere eseguito su più ambienti fa sì che non sia necessario eseguire un processo di installazione;
  2. Una volta creato il container, questo può essere eseguito ovunque ed è quindi ripetibile;
  3. I container sono facili da creare e da eliminare: questo rende facile fare l’upgrade o modificare un software all’interno di un container;
  4. La portabilità, ossia la possibilità di spostare il container ed eseguirlo dove necessario;
  5. L’isolamento: un’applicazione eseguita su container non può influenzare il funzionamento delle altre applicazioni.

Siccome i container non hanno bisogno di un sistema operativo ma sono eseguiti su un kernel OS condiviso, sono più veloci e più portabili (rispetto alle macchine virtuali).

Come vengono creati i container?

Per lo sviluppo, implementazione ed esecuzione dei container non c’è una miglior soluzione di Docker: si tratta di una soluzione di prodotti PaaS che permettono lo sviluppo e il deploy di software in container. Fondato nel 2013 ha rivoluzionato l’uso dei container che sono diventati sempre più popolari. Questo perché ha reso open-source tre aspetti chiave: lo standard per il formato dei container, gli strumenti per pacchettizzarli e gli strumenti per lanciare ed eseguirli.

 

Container platform

 

Scrivendo un Dockerfile, i developer creano la definizione di un’immagine di un container che possono poi scambiare tra loro ed eseguirla ovunque, senza dover installare altro se non l’engine di Docker.

Docker è quindi una piattaforma di container runtime, la più utilizzata per la creazione di applicazioni containerizzate.

Application container platform: gli strumenti di orchestrazione

Data la vasta diffusione dei container, per la loro gestione ed orchestrazione è importante utilizzare i giusti strumenti, ossia delle container platform. Oltre alla soluzione Docker Swarn, adatta per piccoli progetti e ormai poco utilizzata, sono due i software principali per l’orchestrazione delle applicazioni containerizzate: Kubernetes e Openshift.

Kubernetes è una piattaforma open-source utilizzata per automatizzare le operazioni dei container Linux. Può essere considerato un framework per far funzionare i sistemi distribuiti in modo resiliente ed è scelto dall’88% delle aziende che utilizzano applicazioni containerizzate. Kubernetes è strettamente legato all’utilizzo di Docker: quest’ultimo è infatti lo strumento per la creazione dei container (runtime engine) mentre Kubernetes si occupa della loro orchestrazione in sistemi complessi.

Possiamo dire Kubernetes non può funzionare senza Docker ma non il contrario: Docker dispone infatti di uno strumento di orchestrazione ma molto limitato, tanto che il binomio Docker- Kubernetes è la soluzione più utilizzata dai gruppo di sviluppo.

Come funziona Kubernetes e cosa fa?

Una volta attivato il cluster Kubernetes, è possibile deployare le applicazioni containerizzate; deployare le applicazioni containerizzate di terze parti (es. database, web application); connettere le app esponendo le API; oppure connettere più container in un’architettura a microservizi.

Utilizzare questa soluzione di orchestrazione dei container garantisce una serie di benefici, sia per il team IT che per il business:

  • Processi di sviluppo più facili e migliore organizzazione interna del team IT. Quest’ultimo aspetto deriva in particolare dal connubio tra l’utilizzo di Kubernetes e un’architettura a servizi: con applicativi spezzettati in diverse unità funzionali che comunicano tra loro tramite APIs, gli stessi gruppi di lavoro sono meno numerosi e lavorano su specifiche feature con maggiore efficienza;
  • Autoscaling, ossia l’aggiustamento computazionale più efficiente delle risorse in base al traffico verso l’applicativo. In particolare, Kubernetes riduce automaticamente il numero di pod o di nodi quando il load è basso oppure lo aumenta quando c’è un picco di traffico.
  • Maggiore efficienza nell’utilizzo delle risorse significa anche riduzione dei costi;
  • Può essere eseguito in qualsiasi ambiente: on-premise, cloud o multi-cloud.

Enterprise container platform: Openshift vs Kubernetes

Altra container platform ampiamente utilizzata è Openshift: soluzione enterprise cloud-based sviluppata da Red Hat. Openshift si basa su Kubernetes, ma a questo aggiunge una serie di componenti e funzionalità che lo rendono senz’altro la soluzione di container orchestration più completa sul mercato. Nonostante Kubernetes sia già una soluzione strutturata, in certe occasioni la complessità potrebbe prendere il sopravvento. Openshift semplifica gli strumenti di management di Kubernetes e offre una serie di feature aggiuntive:

  • La definizione delle CI/CD pipeline sono standardizzate in modo da garantire una più facile integrazione e scalabilità. Openshift offre un container Jenkins certificato che viene utilizzato per il server CI;
  • Presenta un registro delle immagini integrato al quale accedere tramite console;
  • Include strumenti di default di automazione dei container;
  • Semplifica la migrazione delle applicazioni containerizzate verso il cloud;
  • Accedere alla Web-user interface è molto semplice: basta semplicemente fare login dalla console, mentre su Kubernetes il processo è molto più lungo e complicato;
  • Aggiunge funzionalità legate alla sicurezza, prevedendo policy più restrittive;
  • Fornisce feature aggiuntive legate alla compliance.

Quali sono quindi le maggiori differenze tra Openshift e Kubernetes?

Oltre alle feature aggiuntive, Openshift, essendo una soluzione enterprise, offre un livello di supporto maggiore, con un servizio di customer service vera e propria. Dal punto di vista dell’interfaccia utente, Kubernetes richiede un’installazione e diversi passaggi aggiuntivi per l’autenticazione, mentre Openshift offre una console basata sull’accesso per gestire facilmente ruoli e progetti del cluster.

Quale soluzione scegliere? La risposta è: dipende.

Entrambe sono la risposta eccellente per gestire il deploy su larga scala di applicazioni containerizzate. Si può però affermare che Kubernetes potrebbe essere preferibile in caso di applicazioni molto dinamiche e che presentano update costanti; Openshift invece è la container platform migliore per le aziende che vogliono una soluzione più strutturata e completa, incluso un servizio di supporto professionale Red Hat e che, oltre alla containerizzazione, abbracciano le metodologie di sviluppo software più evolute come DevOps