OpenShift è una piat­ta­for­ma ap­pli­ca­ti­va basata su Ku­ber­ne­tes. Il software è uti­liz­za­to per costruire ap­pli­ca­zio­ni di­stri­bui­te e scalabili e ambienti di sviluppo. Sulla base di OpenShift, le aziende possono im­ple­men­ta­re soluzioni pro­prie­ta­rie Platform as a Service (PaaS), Software as a Service (SaaS) e Container as a Service (CaaS).

Il software permette la gestione completa del ciclo vitale dell’ap­pli­ca­zio­ne, compresi lo sviluppo, il rollout, l’ese­cu­zio­ne e la ma­nu­ten­zio­ne. Più di duemila imprese in tutto il mondo si affidano a OpenShift per ospitare le proprie ap­pli­ca­zio­ni in ambienti cloud ibridi. In questo articolo vi spie­ghe­re­mo come funziona OpenShift e cosa rende il software così speciale.

Quali sono le versioni di OpenShift di­spo­ni­bi­li?

OpenShift non è solo un singolo prodotto. Infatti, la società Red Hat rilascia diverse versioni come software open source con licenza Apache. La versione con­si­de­ra­ta come il “fiore all’occhiello” della società è la “Red Hat OpenShift Container Platform” (OCP). Viene in­stal­la­ta come un cluster Ku­ber­ne­tes sull’in­fra­strut­tu­ra cloud ibrida di un’azienda. Un singolo cluster OpenShift può quindi esten­der­si su più ambienti cloud sia pubblici che privati.

Oltre alla OpenShift Container Platform (OCP), vi è la versione co­mu­ni­ta­ria “OKD”, co­no­sciu­ta in pre­ce­den­za con il nome “OpenShift Origin”. OKD è una di­stri­bu­zio­ne per­so­na­liz­za­ta di Ku­ber­ne­tes che si affida allo stesso per la gestione dei cluster e dei container conformi alla Open Container Ini­tia­ti­ve (OCI). Qui sono inclusi anche la capacità di gestione del ciclo vitale delle ap­pli­ca­zio­ni e gli strumenti DevOps. È in­te­res­san­te notare che OKD è la base “upstream” per lo sviluppo delle altre versioni di OpenShift, simile a come il progetto open source Chromium serve come base per lo sviluppo del browser Chrome.

Oltre a OCP e OKD come soluzioni “on premise”, ospitate sulla propria in­fra­strut­tu­ra, esiste anche un certo numero di soluzioni “gestite”, eseguite su vari cloud pubblici di grandi fornitori, così come sull’in­fra­strut­tu­ra cloud di Red Hat. In questo articolo di­scu­tia­mo prin­ci­pal­men­te della versione 4.8 di OCP, la versione attuale in questo momento. Di seguito vi pre­sen­tia­mo una pa­no­ra­mi­ca delle varie versioni di OpenShift:

Prodotti OpenShift De­scri­zio­ne Piat­ta­for­ma
Red Hat OpenShift Container Platform (OCP) Soluzioni en­ter­pri­se “on premise” per l’utilizzo nella vostra in­fra­strut­tu­ra cloud Red Hat En­ter­pri­se Linux CoreOS (RHCOS)
OKD Prodotto community “on premise”, base per OCP Red Hat En­ter­pri­se Linux (RHEL) o CentOS
OpenShift Online Soluzione SaaS gestita Red Hat Cloud
OpenShift Dedicated Soluzione PaaS gestita; Red Hat si occupa dell’am­mi­ni­stra­zio­ne completa del sistema Amazon AWS o Google Cloud

Come funziona OpenShift?

OpenShift è una suite di piat­ta­for­me ap­pli­ca­ti­ve basata su Ku­ber­ne­tes. Il software include una manciata di com­po­nen­ti di base, così come una varietà di funzioni ag­giun­ti­ve. OpenShift può essere ospitato in un’ampia varietà di ambienti, tra cui macchine “bare metal”, cloud pubblici e privati, e di­spo­si­ti­vi “edge”.

Consiglio

Per saperne di più su so­mi­glian­ze e dif­fe­ren­ze tra OpenShift e Ku­ber­ne­tes vi con­si­glia­mo di leggere il nostro articolo al riguardo.

Di quali com­po­nen­ti consiste OpenShift?

OpenShift si basa su uno stack software, ovvero un’insieme di tec­no­lo­gie in­ter­con­nes­se. Al livello più basso, come sistema operativo viene usata una speciale di­stri­bu­zio­ne Linux. “Red Hat En­ter­pri­se Linux CoreOS” (RHCOS), uti­liz­za­to in questo ambito, è in­stal­la­to su un hardware fisico o vir­tua­liz­za­to.

N.B.

Nelle versioni pre­ce­den­ti di OpenShift veniva usato “Red Hat En­ter­pri­se Linux” (RHEL) al posto di RHCOS.

Basato sul sistema operativo RHCOS, Ku­ber­ne­tes è usato come or­che­stra­to­re di container e cluster. Ku­ber­ne­tes gestisce la di­stri­bu­zio­ne, la sca­la­bi­li­tà e la gestione delle ap­pli­ca­zio­ni con­tai­ne­riz­za­te. Gli operatori di Ku­ber­ne­tes sono usati come livello suc­ces­si­vo nello stack software. Questi cor­ri­spon­do­no a delle ap­pli­ca­zio­ni “native di Ku­ber­ne­tes”, pre­co­strui­te e facili da in­stal­la­re. Oltre agli operatori, viene uti­liz­za­to un registro di container quando si imposta e si esegue un cluster OpenShift.

Che tipo di Ku­ber­ne­tes include OpenShift?

OpenShift si basa su una speciale di­stri­bu­zio­ne Ku­ber­ne­tes, la quale usa CRI-O anziché Docker o con­tai­nerd come Container Runtime. La se­pa­ra­zio­ne da Docker in termini di tec­no­lo­gia sot­to­stan­te comporta dei vantaggi per quanto riguarda la sicurezza e la com­pa­ti­bi­li­tà con altri formati di container.

Cos’è un operatore in OpenShift?

Un operatore Ku­ber­ne­tes su­per­vi­sio­na lo stato di un’intera ap­pli­ca­zio­ne. At­tra­ver­so l’in­stal­la­zio­ne, il fun­zio­na­men­to e la ma­nu­ten­zio­ne, gli operatori coprono il ciclo di vita completo di un’ap­pli­ca­zio­ne Ku­ber­ne­tes. Ri­pren­den­do le parole usate nella do­cu­men­ta­zio­ne di OpenShift:

Citazione

“An Operator is a method of packaging, deploying and managing a Ku­ber­ne­tes-native ap­pli­ca­tion. A Ku­ber­ne­tes-native ap­pli­ca­tion is an ap­pli­ca­tion that is both deployed on Ku­ber­ne­tes and managed using the Ku­ber­ne­tes APIs and kubectl tooling.“ - Fonte: https://cloud.redhat.com/learn/topics/operators

“Un operatore è un metodo per im­pac­chet­ta­re, di­stri­bui­re e gestire un’ap­pli­ca­zio­ne nativa di Ku­ber­ne­tes. Un’ap­pli­ca­zio­ne nativa di Ku­ber­ne­tes è un’ap­pli­ca­zio­ne che è sia di­stri­bui­ta su Ku­ber­ne­tes che gestita uti­liz­zan­do le API di Ku­ber­ne­tes e gli strumenti di kubectl.” (tra­du­zio­ne di IONOS)

Vi è una vasta gamma di operatori sulla piat­ta­for­ma Ope­ra­to­rHub. Ad esempio, vari sistemi di database possono essere per­fet­ta­men­te integrati nel cluster OpenShift con il minimo sforzo. Inoltre, gli operatori dell’in­fra­strut­tu­ra sono uti­liz­za­ti per gestire il cluster.

Come si è scoperto, gli operatori sono es­sen­zia­li per la fun­zio­na­li­tà di OpenShift. Un operatore Ku­ber­ne­tes è una spe­cia­liz­za­zio­ne del con­trol­ler Ku­ber­ne­tes a livello di ap­pli­ca­zio­ne. Un con­trol­ler Ku­ber­ne­tes esamina con­ti­nua­men­te lo stato di una risorsa e regola vari parametri, a seconda delle necessità, per mantenere uno stato definito.

Cos’è un registro su OpenShift?

Un registro di container contiene immagini di container che vengono con­ti­nua­men­te create man mano che il software viene costruito. Vengono gestite più versioni della stessa immagine, perciò ogni immagine è sot­to­po­sta a controlli di sicurezza e me­mo­riz­za­ta nel registro. È in­te­res­san­te notare che su OpenShift il registro stesso è im­ple­men­ta­to come un operatore.

“Quay” è un registro svi­lup­pa­to da Red Hat prestando par­ti­co­la­re at­ten­zio­ne alla sicurezza. Le immagini ne­ces­sa­rie durante l’in­stal­la­zio­ne del cluster OpenShift sono ottenute da Quay. Così facendo, Quay può gestire altri artefatti build oltre alle immagini dei container. Usando le parole contenute nella do­cu­men­ta­zio­ne di Red Hat:

Citazione

“Quay is a container registry for storing con­tai­ners, Helm charts, and other container-related content.“ – Fonte: https://www.redhat.com/sysadmin/in­tro­duc­tion-quay

“Quay è un registro di container per im­ma­gaz­zi­na­re container, carte di Helm, e altri contenuti relativi ai container.” (tra­du­zio­ne di IONOS)
 

A partire dal modello di prodotto a più livelli di OpenShift OCP e OKD, sono state create diverse versioni di Quay:

Registro Spie­ga­zio­ne Piat­ta­for­ma
Red Hat Quay funziona sulla propria in­fra­strut­tu­ra di calcolo, compresi i cloud privati; integrato in OpenShift da un operatore ambiente cloud personale, incluso il cloud privato
Red Hat Quay.io gestito da Red Hat con supporto di livello en­ter­pri­se cloud

Com’è strut­tu­ra­to OpenShift?

OpenShift è costruito su Ku­ber­ne­tes come un cluster di container. A livello di cluster, OpenShift include due livelli:

  1. Piano di Controllo (“Control Plane”)

Il piano di controllo è composto dalle co­sid­det­te “macchine del piano di controllo”. Queste sono co­no­sciu­te anche come “Master Machine”, o macchine Master, e ge­sti­sco­no il cluster di OpenShift Container Platform.

  1. Macchine ope­ra­tri­ci (“Worker Machines“)

Le macchine ope­ra­tri­ci, co­no­sciu­te anche come “macchine di calcolo”, eseguono il lavoro effettivo del cluster OpenShift. Le macchine Master assegnano i compiti alle macchine ope­ra­tri­ci e ne mo­ni­to­ra­no l’ese­cu­zio­ne.

Quali servizi vengono eseguiti sulle macchine ope­ra­tri­ci?

Una macchina ope­ra­tri­ce esegue i seguenti servizi ed è quindi inclusa nel cluster OpenShift:

  • CRI-O, come ambiente di runtime dei container,
  • Kubelet, come servizio che accetta ed elabora le richieste per avviare e fermare i carichi di lavoro,
  • un proxy di servizio, che gestisce la co­mu­ni­ca­zio­ne tra le macchine ope­ra­tri­ci.

L’ulteriore spe­cia­liz­za­zio­ne delle macchine ope­ra­tri­ci deriva dallo stato dei container in ese­cu­zio­ne e dal software che con­ten­go­no.

Quali com­po­nen­ti co­sti­tui­sco­no il piano di controllo?

Di seguito diamo un’occhiata det­ta­glia­ta alla struttura del piano di controllo. Di­stin­guia­mo tra i com­po­nen­ti dell’im­ple­men­ta­zio­ne di Ku­ber­ne­tes e i com­po­nen­ti specifici di OpenShift:

Com­po­nen­te Ku­ber­ne­tes Spie­ga­zio­ne
Server Ku­ber­ne­tes API Il server Ku­ber­ne­tes API controlla e configura i dati per i pod, i servizi e i con­trol­ler di replica. Inoltre, l’API funge da in­ter­fac­cia centrale per i dati globali dello stato del cluster.
etcd Il servizio etcd contiene lo stato master per­si­sten­te. Gli altri com­po­nen­ti mo­ni­to­ra­no l’etcd per rilevare i cam­bia­men­ti e regolano il loro stato come richiesto.
Ku­ber­ne­tes Con­trol­ler Manager Ku­ber­ne­tes Con­trol­ler Manager monitora etcd per le modifiche agli oggetti come la replica, lo spazio dei nomi e i con­trol­ler degli account di servizio e utilizza l’API per ottenere lo stato de­si­de­ra­to. Vi è un cluster composto da diversi di questi processi in cui uno è attivo come leader.
Scheduler di Ku­ber­ne­tes Lo scheduler di Ku­ber­ne­tes rileva i pod appena creati a cui non è stato ancora assegnato un nodo e sceglie il nodo migliore per ospitare il pod.

I com­po­nen­ti specifici del piano di controllo di OpenShift sono im­ple­men­ta­ti come operatori:

Com­po­nen­te OpenShift Spie­ga­zio­ne Gestito da
Server OpenShift API Il server OpenShift API controlla e configura le risorse di OpenShift, come progetti, percorsi e modelli. OpenShift API Server Operator
OpenShift Con­trol­ler Manager OpenShift Con­trol­ler Manager monitora etcd per le modifiche agli oggetti di OpenShift, come i progetti, i percorsi e gli oggetti con­trol­ler dei template, e utilizza l’API per rag­giun­ge­re lo stato de­si­de­ra­to. OpenShift Con­trol­ler Manager Operator
Server OpenShift OAuth API Il server OpenShift OAuth API Server convalida e configura i dati per l’au­ten­ti­ca­zio­ne su OpenShift Container Platform. Questo include utenti, gruppi e token OAuth. Cluster Au­then­ti­ca­tion Operator
Server OpenShift OAuth Gli utenti ri­chie­do­no un token dal server OAuth di OpenShift per au­ten­ti­car­si con l’API. Cluster Au­then­ti­ca­tion Operator

In quali scenari ap­pli­ca­ti­vi viene uti­liz­za­to OpenShift?

OpenShift Container Platform è uti­liz­za­ta prin­ci­pal­men­te per costruire ambienti di ap­pli­ca­zio­ne e sviluppo. Questo permette di im­ple­men­ta­re soluzioni PaaS, SaaS e CaaS pro­prie­ta­rie dell’azienda. A causa della potenza e della com­ples­si­tà del software, OpenShift è uti­liz­za­to prin­ci­pal­men­te per progetti di lunga durata svi­lup­pa­ti da grandi or­ga­niz­za­zio­ni.

Gli utenti di OpenShift includono isti­tu­zio­ni go­ver­na­ti­ve e di ricerca a livello nazionale, così come aziende attive a livello in­ter­na­zio­na­le come banche e compagnie as­si­cu­ra­ti­ve. I suddetti gruppi di utenti be­ne­fi­cia­no tutti di una di­stri­bu­zio­ne del cloud ibrido. La di­stri­bu­zio­ne ( o “de­ploy­ment” in inglese) tramite i confini del cloud privato e pubblico permette a parti dell’in­fra­strut­tu­ra di essere ospitate secondo i requisiti di con­for­mi­tà locali.

Un altro aspetto im­por­tan­te che in­co­rag­gia l’uso di OpenShift è dato dal suo alto livello di sicurezza. Prevenire le in­tru­sio­ni in­for­ma­ti­che e le fughe di dati è es­sen­zia­le per le grandi aziende in­ter­na­zio­na­li. Le vio­la­zio­ni della sicurezza possono provocare danni duraturi all’immagine dell’azienda e notevoli sanzioni fi­nan­zia­rie.

Le funzioni incluse su OpenShift per­met­to­no dei flussi di lavoro veloci nello sviluppo. Questo porta a tempi di sviluppo ra­di­cal­men­te ridotti sul campo poiché i team di software interni possono gestire co­mo­da­men­te e au­to­no­ma­men­te le proprie risorse e lavorare per uno sviluppo continuo.

Se un’azienda utilizza una delle offerte Managed OpenShift di­spo­ni­bi­li, elimina la necessità di am­mi­ni­stra­zio­ne dei server e sistemi operativi. Invece di pre­oc­cu­par­si degli ag­gior­na­men­ti e dei backup, l’azienda può quindi con­cen­trar­si sull’es­sen­zia­le: innovare e creare valore per i clienti.

Cer­ta­men­te, OpenShift non è adatto alle piccole imprese o ai singoli svi­lup­pa­to­ri. Per sod­di­sfa­re le loro esigenze, è meglio affidarsi a una delle al­ter­na­ti­ve a OpenShift o a una delle al­ter­na­ti­ve a Ku­ber­ne­tes di­spo­ni­bi­li.

Quali sono le funzioni di OpenShift?

Un grande vantaggio di OpenShift rispetto a Ku­ber­ne­tes “di base” sono le ca­rat­te­ri­sti­che pre­de­fi­ni­te, che vanno oltre la semplice gestione del cluster di Ku­ber­ne­tes. OpenShift include anche delle funzioni per:

  • Reti definite dal software (SDN)
  • In­stra­da­men­to
  • Au­ten­ti­ca­zio­ne
  • Mo­ni­to­rag­gio e re­gi­stra­zio­ne

Per gestire la piat­ta­for­ma, OpenShift include una potente in­ter­fac­cia web oltre agli strumenti ob­bli­ga­to­ri della riga di comando. I flussi di lavoro di sviluppo e DevOps sono ac­ce­le­ra­ti uti­liz­zan­do “Red Hat OpenShift Pipeline” mentre viene uti­liz­za­to il framework open source Tekton per la “Con­ti­nuous in­te­gra­tion” / “Con­ti­nuous de­ve­lo­p­ment” (CI/CD). Oltre alle ap­pli­ca­zio­ni con­tai­ne­riz­za­te, possono essere uti­liz­za­ti dei moderni approcci “ser­ver­less” basati su “Ser­ver­less Ku­ber­ne­tes” (Knative).

Un altro punto centrale di OpenShift è la fornitura di ar­chi­tet­tu­re di­stri­bui­te di mi­cro­ser­vi­zi. Co­no­sciu­to anche come “Red Hat Service Mesh”, questo modello di ap­pli­ca­zio­ne è basato sul progetto open source “Istio”. Per af­fron­ta­re la com­ples­si­tà associata alle ar­chi­tet­tu­re di mi­cro­ser­vi­zi, OpenShift include una serie di altri strumenti: ad esempio, “Pro­me­theus” è uti­liz­za­to per gestire il mo­ni­to­rag­gio e le notifiche, mentre “Jaeger” consente il mo­ni­to­rag­gio delle tran­sa­zio­ni e “Kiali” è usato per vi­sua­liz­za­re la rete dei servizi.

Quali sono i vantaggi e gli svantaggi di OpenShift?

Uno dei maggiori vantaggi dell’utilizzo di OpenShift è quello di poter eseguire il software in un ambiente cloud ibrido. Qui, un singolo cluster OpenShift si estende oltre i confini di più cloud privati e pubblici. I cluster OpenShift che usano Red Hat En­ter­pri­se Linux CoreOS (RHCOS) come unico sistema operativo be­ne­fi­cia­no di processi au­to­ma­tiz­za­ti durante l’ag­gior­na­men­to e la mo­der­niz­za­zio­ne.

La tec­no­lo­gia integrata di Red Hat e gli strumenti e i processi di gestione in­cor­po­ra­ti nella piat­ta­for­ma si traducono in un’espe­rien­za utente elevata. Il modello di sviluppo open source e le funzioni DevOps in­cor­po­ra­te per­met­to­no dei processi di sviluppo rapidi. Inoltre, l’aumento dell’uso degli operatori come formato di ap­pli­ca­zio­ne uni­ver­sa­le con­tri­bui­sce alla stan­dar­diz­za­zio­ne e sem­pli­fi­ca le per­so­na­liz­za­zio­ni pre­ce­den­te­men­te complesse.

L’uso di CRI-O, come Container Runtime al posto di Docker, porta a una maggiore sicurezza della piat­ta­for­ma. L’in­ter­fac­cia web facile da usare è con­si­de­ra­ta più potente e più chiara della dashboard com­pa­ra­bi­le di Ku­ber­ne­tes. OpenShift eccelle anche sulla riga di comando con il comando oc, che rende la piat­ta­for­ma più facile da usare.

Na­tu­ral­men­te, le suddette ca­rat­te­ri­sti­che speciali di OpenShift causano anche alcuni svantaggi. Ad esempio, gli utenti fedeli a Ku­ber­ne­tes ri­sen­ti­ran­no della mancanza dei potenti grafici Helm, che de­scri­vo­no la con­fi­gu­ra­zio­ne dell’in­fra­strut­tu­ra. Inoltre, non tutti i container Docker Hub possono essere uti­liz­za­ti con OpenShift a causa delle severe im­po­sta­zio­ni di sicurezza. Il focus sulla di­stri­bu­zio­ne Linux di Red Hat, Red Hat En­ter­pri­se Linux CoreOS (RHCOS), ha anche un effetto limitante rendendo Ku­ber­ne­tes più fles­si­bi­le in questo aspetto.

Su quali in­fra­strut­tu­re può essere eseguito OpenShift?

OpenShift può essere eseguito su pra­ti­ca­men­te qualsiasi livello di in­fra­strut­tu­ra in­for­ma­ti­ca, dalle macchine “bare metal” di­spo­ni­bi­li nel proprio data center, all’hardware vir­tua­liz­za­to in ambienti cloud privati e pubblici, ai di­spo­si­ti­vi edge. Tuttavia, vi è una di­stin­zio­ne tra soluzioni “gestite”, dove la gestione della piat­ta­for­ma OpenShift è gestita dal fornitore, e in­stal­la­zio­ni “au­to­ge­sti­te”, am­mi­ni­stra­te di­ret­ta­men­te dal cliente:

Quali sono le opzioni per eseguire soluzioni OpenShift gestite dal fornitore?

Prodotto In­fra­strut­tu­ra Gestito da Sup­por­ta­to da
Microsoft Azure Red Hat OpenShift Microsoft Azure Red Hat e Microsoft Red Hat e Microsoft
Red Hat OpenShift Dedicated Amazon AWS o Google Cloud Red Hat Red Hat
Red Hat OpenShift on IBM Cloud IBM Cloud IBM Red Hat e IBM
Red Hat OpenShift Service on AWS Amazon AWS Red Hat e AWS Red Hat e AWS

Quali sono le opzioni per eseguire soluzioni OpenShift au­to­ge­sti­te?

Prodotto In­fra­strut­tu­ra Gestito da Sup­por­ta­to da
Red Hat OpenShift Platform Plus Cloud privato, cloud pubblico, macchina fisica, macchina virtuale, edge Cliente Red Hat / Fornitore in­fra­strut­tu­ra
Red Hat OpenShift Container Platform Cloud privato, cloud pubblico, macchina fisica, macchina virtuale, edge Cliente Red Hat / Fornitore in­fra­strut­tu­ra
Red Hat OpenShift Ku­ber­ne­tes Engine Cloud privato, cloud pubblico, macchina fisica, macchina virtuale, edge Cliente Red Hat / Fornitore in­fra­strut­tu­ra
Vai al menu prin­ci­pa­le