Guida

OpenStack, guida al sistema operativo open source per il cloud

La piattaforma software di cloud computing sta arricchendosi di progetti per estendere la base di utenza in una sempre più ampia gamma di casi d’uso. L’Implementazione di OpenStack non è però un processo banale, e richiede conoscenze approfondite su numerosi fronti tecnologici. In questo articolo, qualche aggiornamento sullo stato del progetto, e alcune indicazioni sulle possibili modalità di utilizzo

Pubblicato il 31 Dic 2020

openstack

Prima d’illustrare OpenStack (e delinearne, più avanti in questo articolo, modalità di utilizzo, configurazione, deployment, benefici e sfide), a dieci anni dalla sua nascita è bene fornire un po’ di contesto e richiamare subito un’operazione di rebranding che lo riguarda da vicino in questo 2020, e punta ad espandere la portata del progetto.

In occasione dell’ultimo Open Infrastructure Summit, l’ottobre scorso a Austin, Texas, la OpenStack Foundation ha compiuto un nuovo passo evolutivo, trasformandosi nella Open Infrastructure Foundation (OIF). Il cambio di nome “riconosce un’espansione della missione, dell’ambito operativo e della comunità dell’organizzazione, per far progredire l’open source nel prossimo decennio, e supportare la open infrastructure in un mercato che è stimato in 20 miliardi di dollari”. Una svolta prevista, attesa da vari osservatori, ed evidentemente motivata dalla volontà di allargare lo spazio di mercato: nel 2015, nell’articolo intitolato “Is OpenStack a success?”, Alan Waite, research director in Gartner, scriveva: “non c’è dubbio che OpenStack è divenuto il più conosciuto e ampiamente supportato framework open source per costruire infrastrutture IaaS private, quindi in quell’area è un successo”. D’altra parte, aggiunge Waite, “se si considera ‘successo’ un’adozione massiva in molti settori e in una maggioranza di domini virtualizzati, OpenStack non ha avuto successo”. Dai dati di cui era allora in possesso, Waite parlava di un numero di implemetazioni OpenStack in produzione a livello mondiale nel 2014 dell’ordine delle centinaia, e di casi d’uso limitati in cui un cloud OpenStack sarebbe risultato effettivamente la soluzione giusta.

OpenStack
L’architettura di OpenStack. Fonte: OpenStack

Espandere OpenStack per supportare sempre più use case

Con l’annuncio del 2020, la Open Infrastructure Foundation, che da ottobre, accanto ad AT&T, Ericsson, Huawei, Red Hat, Tencent Cloud, ha allargato la schiera di ‘Platinum Members’, cui ora appartengono anche Ant Group, Facebook Connectivity, FiberHome, Wind River, rimodula la direzione strategica: l’obiettivo è espandersi oltre OpenStack, per integrare più tecnologia e soddisfare le esigenze di tutti i differenti casi d’uso: ma sempre sfruttando il comprovato modello open source, e costruendo “comunità open source che scrivono software infrastrutturale per ambienti di produzione in casi d’uso emergenti”: questi includono, ad esempio, l’intelligenza artificiale (AI), il machine learning (ML), la tecnologia 5G, le applicazioni di edge computing, senza naturalmente dimenticare i cloud privati, pubblici e ibridi. Del resto, chiarisce la OIF, quando il progetto OpenStack era partito nel 2010 i cloud erano principalmente nei datacenter, mentre oggi operano senza soluzione di continuità dentro e fuori i centri dati, e comprendono un fluido mix di server bare-metal, macchine virtuali, container, con nuovi requisiti a livello di elaborazione, storage, networking.

Com’è nato OpenStack, la storia

La storia evolutiva che, nel 2010, alla Open Source Software Conference (OSCON) di Portland, Oregon, porta all’annuncio ufficiale di OpenStack comincia inizialmente da una serie di attività di sviluppo: la società texana di cloud computing Rackspace, riscrivendo il software infrastrutturale del prodotto Cloud Files, ne rende poi open source il codice sorgente; contestualmente Anso Labs, un appaltatore dell’agenzia aerospaziale NASA, pubblica il codice in versione beta di Nova, un “cloud computing fabric controller” (il componente chiave di un sistema IaaS – infrastructure as a service, ndr.) scritto nel linguaggio di programmazione Python.

OpenStack
Alcune configurazioni di OpenStack realizzabili attraverso l’uso dei container. Fonte: OpenStack

Nel 2008 la Nasa avvia l’iniziativa Nebula Cloud Computing Platform, di cui Ray O’Brien diventa project manager. Al principio il piano, spiega in un post O’Brien, è consolidare lo spazio web di Nasa su una piattaforma unificata, ma presto si comprende che il progetto iniziale di un generico insieme di sistemi di elaborazione e storage basati su cloud può essere convertito nella fornitura di infrastruttura IaaS per la comunità dei siti web governativi Nasa. Alla fine, con il nome “Nebula”, si imposta la costruzione di un controller di elaborazione (compute controller) open source.

Successivamente, con il primo rilascio open source del proprio controller Nova, la Nasa, chiarisce O’Brien, scopre che Rackspace ha adottato un approccio tecnico sorprendentemente simile per i propri sistemi di storage, con il rilascio open source del software di object storage Swift: a quel punto, l’unione di forze per creare OpenStack pare un passo naturale. Nel 2012 viene lanciata la OpenStack Foundation, in qualità di organismo indipendente con il compito di “fornire risorse condivise per proteggere, potenziare e promuovere il software OpenStack e la comunità che lo circonda”.

OpenStack, cos’è

La missione di OpenStack, enunciata per la prima volta nel 2010 e poi aggiornata nel 2016, è “produrre una piattaforma di cloud computing open source ubiquitaria, facile da usare, semplice da implementare, interoperabile tra deployment, in grado di funzionare bene a tutti i livelli, e d’incontrare le esigenze di utenti e operatori dei cloud pubblici e privati”. Ad oggi, il progetto OpenStack è gestito, assieme a numerosi altri (Airship, Kata Containers, StarlingX, Zuul) da una comunità che OIF stima in circa 100 mila membri di 187 paesi, coralmente concentrati sull’assicurare che ciascun componente open source venga sviluppato e testato in modalità condivisa e collaborativa.

Andando oltre la definizione più commerciale del progetto, che presenta se stesso come “il software cloud open source più diffuso al mondo”, a livello tecnico OpenStack è un sistema operativo open source per il cloud costituito da una serie di componenti software, utilizzabili in modalità ‘plug and play’ per fornire tutte le funzionalità e servizi essenziali ad amministrare un’infrastruttura fondata sul paradigma della nuvola.

Scendendo più in profondità nella descrizione tecnica, all’interno di un datacenter, attraverso OpenStack è possibile controllare grandi pool di risorse di elaborazione, storage, networking, utilizzando interfacce di programmazione applicativa (API) per eseguire la gestione e il provisioning delle risorse stesse. Queste operazioni si possono controllare in remoto da una postazione centralizzata, anche utilizzando una dashboard, che semplifica le operazioni di amministrazione rendendo disponibile un’interfaccia grafica web-based (Horizon). La dashboard comunica con i servizi di back-end attraverso chiamate alla OpenStack API, implementata come un insieme di servizi web RESTful (representational state transfer), che consente di accedere, fornire e automatizzare le risorse cloud-based. In alternativa, per le operazioni di amministrazione sono disponibili console CLI (command-line interface) con interfaccia a riga di comando per gestire i diversi componenti e servizi di OpenStack: ad esempio, per il “compute service” Nova viene fornito il client CLI OpenStackClient.

OpenStack: i componenti principali

OpenStack è una piattaforma di cloud computing in grado di supportare tutti i tipi di ambienti cloud. Ciascuna implementazione OpenStack fornisce una soluzione IaaS utilizzando, come accennato, una varietà di componenti complemetari, integrabili tra loro tramite API: tra i principali, Nova fornisce le istanze di calcolo, supportando la creazione di macchine virtuali (VM) e server bare-metal; Zun permette di lanciare e gestire container; Qinling supporta le funzioni serverless; Swift consente di amministrare i servizi di storage a oggetti (object storage), e Cinder, i servizi di storage a blocchi (block storage). Neutron è un modulo di software-defined networking (SDN) che fornisce connettività di rete ‘as a service’. La lunga lista di componenti OpenStack include naturalmente molti altri servizi, che spaziano dalla gestione delle identità e degli accessi (Keystone), all’amministrazione delle immagini delle macchine virtuali (Glance), alla gestione delle password e chiavi di cifratura (Barbican); dai componenti di orchestrazione delle risorse dell’infrastruttura per un’applicazione cloud che utilizzano template dichiarativi (Heat); ai componenti per il “workload provisioning” come Magnum, in grado di rendere i motori per l’orchestrazione di container, come Docker Swarm, Kubernetes, e Apache Mesos, disponibili come risorse in OpenStack.

OpenStack: modalità di deployment, benefici e sfide

OpenStack è utilizzabile da organizzazioni che devono mettere in produzione grandi cloud, come da aziende che necessitano d’implementare cloud di piccole dimensioni per creare progetti proof-of-concept (PoC). Questa piattaforma software open source di cloud computing può fornire vari benefici. Ad esempio, nella creazione di cloud privati, in un recente documento tecnico (“Is OpenStack Ready for Mainstream Private Cloud Adoption?”) Gartner enumera cinque punti di forza: essi includono il largamente accettato sistema di gestione delle API, l’ampiezza dell’ecosistema software; l’adattabilità della piattaforma, la sua natura open source, i pregi d’interoperabilità.

Tuttavia, qualsiasi sia il caso d’uso, e malgrado l’entusiamo di poter sfruttare l’agilità e flessibilità di un’infrastruttura software-defined, meglio non essere precipitosi e non sottovalutare la complessità del prodotto, che può prestarsi a molteplici modalità e opzioni di configurazione e deployment.

Essendo complesso e costituito da una suite di progetti, OpenStack non è un software che si installa con pochi click del mouse, ma richiede competenze approfondite in molti campi (distribuzioni Linux, database, security) e la volontà di affrontare sfide tecniche su differenti livelli, prima di ottenere un sistema funzionante e personalizzato sulla base delle proprie esigenze di business. Ecco alcune tipiche difficoltà tecniche:

Tipologia d’installazione

Quando l’esigenza è realizzare un cloud PoC, e l’obiettivo è soprattutto apprendere come funziona OpenStack, scegliere un’installazione manuale permette d’imparare come creare le configurazioni, e capire come i suoi diversi componenti comunicano tra loro. Quando però si passa a usare OpenStack in produzione, non disporre di strumenti di automazione è semplicemente inaccettabile, perché se qualcosa va storto serve comunque un modo rapido di ripristinare il normale funzionamento del cloud. Tra i vari strumenti di configurazione e deployment automatizzato si possono citare, ad esempio, i progetti Kolla, Kolla-Ansible, OpenStack-Helm, OpenStack-Chef, Puppet-OpenStack, TripleO. Da usare solo per finalità di sviluppo, è disponibile anche DevStack, un serie di script che permettono di costruire un ambiente OpenStack completo e aggiornato.

Gestione del ciclo di vita

La manutenzione di un’installazione OpenStack è strettamente connessa alla fase di deployment, in quanto, i tool usati per l’installazione verranno spesso utilizzati anche per gestire le operazioni di aggiornamento, riconfigurazione o troubleshooting del cloud. Di conseguenza, nella selezione dei tool di deployment è molto importante fare attenzione a quale stack tecnologico si sceglie, e ai possibili rischi insiti di vendor lock-in.

Modalità di provisioning

A seconda delle esigenze dell’utente e del caso d’uso specifico, OpenStack supporta diverse modalità di provisioning degli host: essendo in grado di gestire molti hypervisor (tra cui KVM, LXC, QEMU, Xen, Virtuozzo, VMware vSphere, Hyper-V), il sistema può fornire le istanze sotto forma di macchine virtuali (VM); ma può anche erogarle come server bare-metal, utilizzando ad esempio il servizio Ironic; o ancora, come prima accennato, fornirle come container. A proposito di containerizzazione, è poi importante comprendere la differenza tra le diverse configurazioni possibili: si può ad esempio scegliere una configurazione “containerized OpenStack” (CO), in cui i servizi OpenStack funzionano all’interno di container; oppure optare per una soluzione “OpenStack with Containers” (OwC), in cui l’infrastruttura cloud implementata è in grado di fornire container as-a-service, per l’esecuzione di applicazioni containerizzate. Ma si può anche voler implementare una configurazione “OpenStack on Kubernetes” (OOK), dove OpenStack viene implementato e orchestrato come un’applicazione su Kubernetes; o, ancora, scegliere di eseguire Kubernetes “on top”, sopra un’infrastruttura OpenStack.

Valuta la qualità di questo articolo

La tua opinione è importante per noi!

Articoli correlati

Articolo 1 di 4