Kata Con­tai­ners è un progetto portato avanti da una community open source in­di­pen­den­te che collabora per combinare i vantaggi di un sistema a container con quello di semplici macchine virtuali.

Vi spie­ghia­mo cosa si nasconde dietro a questo progetto e come funziona nel dettaglio Kata Con­tai­ners. Inoltre vi in­for­me­re­mo sui vantaggi e svantaggi e sugli scenari di sviluppo più amati dei container dal tempo di ese­cu­zio­ne sicuro.

Cos’è Kata Con­tai­ners?

Dalla sua nascita nel dicembre del 2017, il progetto Kata Con­tai­ners ha l’obiettivo di svi­lup­pa­re macchine virtuali il più leggere possibile, che fun­zio­ni­no come un container nel look and feel. I container di Kata sono semplici da usare, molto com­pa­ti­bi­li, riescono a pro­ces­sa­re un carico di lavoro molto alto e di­spon­go­no inoltre di un elevato standard di sicurezza. Per questo la community punta a un forte iso­la­men­to verso l'esterno, e verso l’interno a una tec­no­lo­gia di vir­tua­liz­za­zio­ne hardware che rap­pre­sen­ta la seconda linea di difesa.

Il progetto Kata Con­tai­ners è fi­nan­zia­to e gestito dalla OpenStack Foun­da­tion (OSF), che lotta per lo sviluppo e l’in­tro­du­zio­ne di un’in­fra­strut­tu­ra di cloud computing aperta nel mondo. Per questo motivo, il codice di condotta della OSF rap­pre­sen­ta un im­por­tan­te orien­ta­men­to per il lavoro col­let­ti­vo della community open source. Il codice del progetto è ospitato da GitHub con una licenza Apache 2. Del comitato di Kata fanno parte anche grandi aziende come Google e Microsoft.

La OpenStack Foun­da­tion ha messo a di­spo­si­zio­ne su Youtube la seguente pre­sen­ta­zio­ne della durata di 30 minuti che spiega il progetto Kata Con­tai­ners nel dettaglio:

Come funziona Kata Con­tai­ners?

Che aspetto hanno di preciso l'ar­chi­tet­tu­ra e il fun­zio­na­men­to dei container di Kata? Per ri­spon­de­re a questa domanda, bisogna risalire alle origini del progetto. Nel dicembre del 2017, la community è riuscita a ri­con­giun­ge­re e scalare le com­po­nen­ti migliori di Intel Clear Con­tai­ners (progetto di Intel per container di Linux più sicuri) con Hyper runV (tempo di ese­cu­zio­ne basato sulla com­po­nen­te Hy­per­vi­sor per l’ini­zia­ti­va di un progetto open container). In poche parole: le pre­sta­zio­ni di Intel si in­con­tra­no sulla piat­ta­for­ma in­di­pen­den­te di Hyper.

Uno dei punti più im­por­tan­ti di ciascun sistema di container è la sicurezza. Poiché i container possono essere so­vrap­po­sti o stra­ti­fi­ca­ti, l'aspetto della sicurezza è spesso difficile da garantire. Perciò sia Intel che Hyper, sebbene con percorsi diversi ma con risultati simili, aspirano a un alto livello di fles­si­bi­li­tà nell'area dei container. La stra­ti­fi­ca­zio­ne semplice dei formati di container come Ku­ber­ne­tes è possibile su OpenStack o viceversa così come la stra­ti­fi­ca­zio­ne complessa è possibile sia da Ku­ber­ne­tes su OpenStack che su Ku­ber­ne­tes. Questa fles­si­bi­li­tà nella struttura del­l'ar­chi­tet­tu­ra de­si­de­ra­ta sem­pli­fi­ca enor­me­men­te l’utilizzo di Kata Con­tai­ners senza dover ne­ces­sa­ria­men­te ri­nun­cia­re alla sicurezza.

Kata permette di rea­liz­za­re sia un iso­la­men­to della VM a livello del container che un iso­la­men­to del container at­tra­ver­so la vir­tua­liz­za­zio­ne del­l'hard­ware. Nel caso di Ku­ber­ne­tes, l’iso­la­men­to della VM non è di­spo­ni­bi­le a livello di container, ma a livello di Podman o di pod, perché Ku­ber­ne­tes usa il termine pod invece di container. Per sem­pli­fi­ca­re il tutto, però, parleremo anche più avanti di container.

Consiglio

L’im­po­sta­zio­ne e l'e­se­cu­zio­ne di sistemi di container può essere molto complessa, poiché di solito, per diversi computer, devono essere messi a di­spo­si­zio­ne molti container. Managed Ku­ber­ne­tes di IONOS vi permette di pia­ni­fi­ca­re, or­ga­niz­za­re, mettere a di­spo­si­zio­ne i vostri container in modo semplice e scalarli li­be­ra­men­te.

Aspetto del­l'ar­chi­tet­tu­ra di Kata Con­tai­ners

Il credo della community è di ottenere la massima sem­pli­ci­tà e questo si ri­spec­chia anche nel­l'ar­chi­tet­tu­ra di Kata Con­tai­ners, che prevede prin­ci­pal­men­te le sei com­po­nen­ti seguenti:

  1. Agent
  2. Runtime
  3. Proxy
  4. Shim (esten­sio­ne per la com­pa­ti­bi­li­tà della ri­spet­ti­va ap­pli­ca­zio­ne)
  5. Kernel (sistema operativo)
  6. Col­le­ga­men­to con QEMU 2.9 (software di vir­tua­liz­za­zio­ne gratuito)

Queste ca­rat­te­ri­sti­che fanno di Kata un progetto in­di­pen­den­te, molto com­pa­ti­bi­le e al tempo stesso molto sicuro. Oltre a x86_64, l'ar­chi­tet­tu­ra può sup­por­ta­re anche AMD64, ARM e l’IBM system p e l’IBM system z. Inoltre Kata Con­tai­ners permette anche di uti­liz­za­re più hy­per­vi­sor, come QEMU, NEMU e Fi­re­crac­ker. È possibile anche l'in­te­gra­zio­ne nel progetto con­tai­nerd.

Com­pa­ti­bi­li­tà

Kata 1.10 è com­pa­ti­bi­le con Docker Community Edition, ma supporta anche tutti gli altri standard in­du­stria­li come il formato container OCI, le in­ter­fac­ce CRI di Ku­ber­ne­tes e altre tec­no­lo­gie di vir­tua­liz­za­zio­ne più datate tra cui la CRI-O (1.10 commit 393429 re­spek­ti­ve CRI-Con­tai­nerd version 1.0.0) o la OCI Runtime Spe­ci­fi­ca­tion (v1.0.0-rc5).

Tra i sistemi operativi sup­por­ta­ti, che per­met­to­no il fun­zio­na­men­to di Kata Con­tai­ners, ci sono:

  • CentOS (7)
  • Debian (9, 10)
  • Fedora (28, 29, 30)
  • Ubuntu (16.04, 18.04)
  • Red Hat En­ter­pri­se Linux (7)
  • OpenSUSE (Leap, Tum­bleweed)

Dif­fe­ren­ze rispetto ai container tra­di­zio­na­li

Il vantaggio più grande dei container di Kata è il rapporto tra sem­pli­ci­tà e pre­sta­zio­ni. Non è più ne­ces­sa­rio l’an­ni­da­men­to di container in macchine virtuali, perché la community utilizza in­ter­fac­ce standard, che ne sem­pli­fi­ca­no enor­me­men­te l'a­per­tu­ra e la chiusura. Le pre­sta­zio­ni hanno la stessa coerenza di un container standard di Linux, ma grazie al maggior iso­la­men­to, non com­pro­met­to­no le pre­sta­zio­ni di una macchina virtuale standard. Il grafico seguente mostra una pa­no­ra­mi­ca della struttura van­tag­gio­sa.

In questo modo il progetto open source raggiunge il suo scopo nel settore dei container liberi, le cui com­po­nen­ti si com­por­ta­no come container, ma offrono le pre­sta­zio­ni e la sicurezza di VM. In questo modo i container di Kata con­cre­tiz­za­no la ri­fles­sio­ne iniziale dei container, riguardo ad esempio la sca­la­bi­li­tà.

Sicurezza

I container tra­di­zio­na­li sono leggeri, rapidi e possono essere integrati in modo semplice. Questo, però, aumenta i rischi di sicurezza, in par­ti­co­la­re quando si trovano in un singolo sistema operativo. Quando i container dividono tra loro un kern, un path I/O, la stessa rete e la stessa memoria, basta at­tac­car­ne uno solo per dan­neg­gia­re allo stesso tempo tutti gli altri.

I con­te­ni­to­ri di Kata si com­por­ta­no in modo del tutto diverso: la macchina virtuale opera in un kernel dedicato (kern del sistema operativo) at­tra­ver­so il quale i processi vengono separati sia da quelli della rete e di I/O che da quelli della memoria. Oltre al forte iso­la­men­to già presente, può essere uti­liz­za­to anche l’iso­la­men­to raf­for­za­to dall’hardware con esten­sio­ni di vir­tua­liz­za­zio­ne VT.

Vantaggi e svantaggi di Kata Con­tai­ners

Ci sono tanti punti a favore di questo ambizioso progetto open source della OpenStack Foun­da­tion. Anche Clear Linux (Intel) ha ab­ban­do­na­to la sua tec­no­lo­gia di container ori­gi­na­ria e supporta già con successo i container di Kata. Di seguito i prin­ci­pa­li vantaggi:

  • ottima com­pa­ti­bi­li­tà
  • uso semplice
  • pre­sta­zio­ni elevate
  • standard di sicurezza elevati

Un altro vantaggio è il basso consumo ener­ge­ti­co, anche in caso di pre­sta­zio­ni elevate.

Kata però non è una di­stri­bu­zio­ne adatta a tutti gli scopi. Si tratta di un sistema specifico con limiti con­di­zio­na­ti solo in parte da alcuni principi. Tra questi si trovano le ope­ra­zio­ni che una macchina virtuale non permette, ma anche li­mi­ta­zio­ni che do­vreb­be­ro essere risolte negli ag­gior­na­men­ti futuri. Una lista precisa dei limiti è fornita della community nella do­cu­men­ta­zio­ne ufficiale su GitHub. Al momento Kata Con­tai­ners è di­spo­ni­bi­le esclu­si­va­men­te per le di­stri­bu­zio­ni di Linux.

Un altro svan­tag­gio da non sot­to­va­lu­ta­re: Kata è ancora agli esordi. Ma la base tecnica è già pro­met­ten­te e uti­liz­za­ta in modo versatile.

Come si uti­liz­za­no i container di Kata?

Come già detto all’inizio, la community si attiene al codice di condotta della OSF che prevede, tra le varie cose, una gestione aperta di tutto il progetto, in par­ti­co­la­re del codice sorgente. Questa apertura è data in par­ti­co­la­re dal legame di entrambi i codebase open source integrati e vir­tua­liz­za­ti. Tra i numerosi supporter troviamo ad esempio Ku­ber­ne­tes, Docker, OCI, CRI, CNI, QEMU, KVM e OpenStack.

Clear Con­tai­ners e runV, che rap­pre­sen­ta­no la base tecnica di Kata Con­tai­ners, sono uti­liz­za­ti in tutto il mondo da grandi aziende, come ad esempio JD.com, una piat­ta­for­ma di e-commerce cinese dal fatturato altissimo.

Di solito Kata Con­tai­ners funziona al meglio, dove sono richiesti container che non devono operare su un kernel singolo. Tra questi troviamo i settori ap­pli­ca­ti­vi come l’in­te­gra­zio­ne e il de­ploy­ment continui (CI/CD), edge computing, funzioni di rete vir­tua­liz­za­te come Con­tai­ners-as-a-Service (CaaS). Per di più, Kata si addice anche alle im­ple­men­ta­zio­ni di nicchia, poiché non esiste nessun altro container così semplice, sicuro, fles­si­bi­le e in grado di ri­spar­mia­re così tante risorse.

Vai al menu prin­ci­pa­le