Per comprendere cosa siano, a cosa servano, e in cosa siano differenti, orchestratori di container come Kubernetes e OpenShift, occorre prima avere chiaro come si è evoluto nel tempo il deployment delle applicazioni, fino ad arrivare ai moderni container. Facendo un rapido flashback, all’inizio, e per molti anni, le organizzazioni IT delle imprese hanno installato ed eseguito le applicazioni aziendali unicamente su server fisici. Questa modalità di gestione però non consentiva un uso efficiente delle risorse su ciascun server, perché le applicazioni possono competere per l’uso delle stesse, e perché, alla fine, ci si ritrova con molti server fisici sottoutilizzati e costosi da mantenere. Per tale ragione gli ingegneri del software hanno introdotto la virtualizzazione, che permette di eseguire molteplici macchine virtuali (VM) su uno stesso server fisico. Ogni virtual machine contiene tutti i componenti necessari al funzionamento dell’applicazione, incluso il sistema operativo, e ciò rende comunque impegnativa, dal punto di vista delle risorse hardware, la gestione di molteplici VM su uno stesso server fisico. Ecco perché si è passati all’adozione della tecnologia container: i container sono più “leggeri” rispetto alle VM, in quanto condividono tutti lo stesso kernel del sistema operativo dell’host.
Oggi, i container consentono di distribuire le applicazioni nei vari ambienti IT con la massima efficienza possibile. Il problema è che, soprattutto quando il numero di container aumenta, sorgono problemi di complessità di gestione: ed è qui che entra in gioco un sistema come Kubernetes, una piattaforma Open Source per l’orchestrazione di container in ambienti di produzione. Kubernetes permette di automatizzare, e centralizzare, molte operazioni sui container, che altrimenti andrebbero eseguite manualmente, per procedere al deployment applicativo. Kubernetes gestisce l’intero ciclo di vita dei container (creazione, avvio, modifica stato, spegnimento, eliminazione) e li distribuisce in modo da amministrare in maniera fluida la scalabilità applicativa in rapporto ai diversi carichi di lavoro. Kubernetes può essere provato in locale, grazie a tool come Minikube.
Come Kubernetes, anche OpenShift è una piattaforma basata su un progetto Open Source. Per cercare di chiarire, e fare una distinzione, si può affermare che OpenShift è una piattaforma di orchestrazione container basata su Kubernetes. Dunque, integra tutte le sue funzionalità essenziali, ma la estende con altri componenti, aggiungendo tutta una serie di strumenti e opzioni che, permettono di definire OpenShift una distribuzione, una versione “enterprise” di Kubernetes, già testata, verificata e certificata per il funzionamento con determinate tipologie di hardware e software.
In termini di funzionalità evolute di sicurezza e conformità, ad esempio, in OpenShift, il componente Red Hat Advanced Cluster Security for Kubernetes, spiega Red Hat, “modernizza i container e la sicurezza Kubernetes”, aiutando a proteggere i workload Kubernetes containerizzati nei vari ambienti cloud. Un altro componente, Red Hat Advanced Cluster Management for Kubernetes, fornisce invece visibilità di gestione e controllo a livello end-to-end, nell’amministrazione dell’ambiente Kubernetes. Anche Openshift può essere provato in locale, grazie a Red Hat OpenShift Local (Red Hat CodeReady Containers).
Entrambe le piattaforme, Kubernetes e OpenShift, hanno l’obiettivo di fornire, nell’orchestrazione di container, la massima flessibilità di gestione, e di supportare tutte le tipologie di workload. Entrambi gli orchestratori integrano funzionalità complesse, oggi indispensabili per riuscire ad amministrare l’enorme complessità raggiunta dai workflow nelle organizzazioni IT, e utilizzano progetti importanti della Cloud Native Computer Foundation (come Prometheus o Grafana). Kubernetes dispone di tutte le funzionalità essenziali di orchestrazione. A fronte di un effort maggiore nella gestione dell’installazione, il livello di conoscenza dei dettagli è più profondo. Ad esempio, la scelta dell’installer va calibrata sulle singole necessità, ed è necessario installare a mano componenti come CI/CD, Monitoring, Log Collector, soluzioni per lo Storage (Rook o OpenEBS), Route e Ingress. Ma non per forza questo è un problema: oltre alla già citata possibilità di avere maggior controllo dei dettagli, ovviamente anche i costi per questo motivo diminuiscono.
Proprio per questo, per chi desidera avvalersi di una soluzione Kubernetes già “enterprise-ready” e ricca di funzionalità, per gestire i quotidiani carichi di lavoro, può essere preferibile orientare la scelta su OpenShift. In questo caso le componenti sopra citate sono già integrate e l’effort è chiaramente minore, a fronte di un vendor che segue l’intero processo. Va considerato però chiaramente un aumento dei costi.
Insomma, la soluzione migliore in assoluto non esiste: esiste la soluzione migliore da studiare con degli esperti in relazione a esigenze, possibilità e necessità di ogni singola azienda.