Il koda engine è il componente che si occupa di interfacciarsi con il docker-engine.
E’ stato scelto docker come “backend” per via della sua ampia diffusione, in quanto container engine mette a disposizione tutti gli strumenti necessari per sviluppare e buildare immagini.
Ma non solo, docker è di fatto lo standard nell’industria, in particolare la maggior parte degli sviluppatori utilizza proprio questo container engine.
Scegliere un altro engine avrebbe soltanto ridotto la potenziale platea.
Ci teniamo anche a dire che per esempio in Kubernetes docker non è l’engine più diffuso; infatti il supporto a docker-shim è stato rimosso se non fosse stato per Mirantis con cri-dockerd quest’ultimo sarebbe stato tagliato fuori.
Quindi, nel concreto, questo koda-engine cosa fa?
KoDa Engine è principalmente un server api, si basa sulla Docker SDK per python e su flask-RESTful.
La SDK ci permette di connetterci alle api di docker-engine, questi api possono essere in locale oppure su un server remoto,
mentre flask-RESTful data la sua minimalità ci permette di sviluppare in fretta le api.
Come si gesticono le risorse con la SDK?
Per implementare la CRUD è sufficiente connetersi all’engine e interrogarlo.
Le risorse che abbiamo deciso di gestire sono:
– Images
– Networks
– Volumes
– Containers
Dato che sotto la scocca del SDK vengono effettuate chiamate REST al’engine, per ogni classe di risorse abbiamo gratis i metodi CRUD.
Eventualmente stiamo anche valutando se può essere utile aggiungere un database per salvare i metadati.
Come si creano ambienti di sviluppo con la SDK?
Questo passaggio è quello più macchinoso nel senso che si divide in questi passaggi:
– Buildare / Pullare le imagini da un registry;
– Creare una network;
– Far partire i container collegandoli alla rete creata nel passo precedente.
Questi passaggi ricalcano le funzionalità di docker-compose in un certo senso, ma permettono anche una maggiore configurabilità.
Vorremmo fare anche una precisazione sui volumi, la SDK è agnostica rispetto allo storage backend, perciò se sull’host ad esempio c’è installato CEPH KoDa funzionarà lo stesso.
Come si creano le build automatiche?
Per creare le build sono necessarie due dipendenze, la SDK come sempre e python-jinja2.
Jinja2 è un template engine, quindi nel nostro caso è sufficiente creare una libreria di immagini per i casi d’uso più frequenti:
– react
– node.js
– python
– larave
– golang
– dotnet
Successivamente, creati questi template, si passeranno i parametri di build alle api di KoDa-engine, quest’ultimo eseguira i seguenti passaggi:
– Parserà i template valorizzandoli;
– La SDK, usando le Low-Level API creerà un’ immagine;
– Sempre la SDK, potrà o pushare su un registry oppure farà partire il container.
Ovviamente, per creare le immagini è necessario passare a KoDa un archivio di tutto il sorgente.
Per il momento questo è tutto, a presto con nuovi aggiornamenti
Latest posts