IBM Razee: il Continuous Delivery OpenSource di BigBlue

IBM

Già da diversi anni IBM fornisce IKS (IBM Kubernetes Service), un sistema di gestione di cluster Kubernetes; a differenza di altri sistemi similari, però, ha fatto fatica ad affermarsi sul mercato per la mancanza di una componente fondamentale: un sistema di Continuous Delivery (CD) che fornisse la scalabilità, la velocità e, soprattutto, una buona visibilità su quanto stesse facendo.

L’approccio CD, in cui gli sviluppatori producono e rilasciano il software in cicli molto brevi, assicurando che il software possa essere compilato, testato e rilasciato in qualsiasi momento; da notare la differenza con il continuous deployment in cui queste fasi avvengono in maniera automatizzata.

L’idea è quella di fornire un tool che possa costantemente apportare modifiche alle risorse di un cluster Kubernetes, monitorare lo stato delle applicazioni ed il carico di risorse, ed assicurare che le regole impostate siano distribuite correttamente ovunque. Con queste premesse IBM ha sviluppato internamente un tool che è diventato sufficientemente maturo per essere presentato al mondo e, cosa decisamente interessante, rilasciato come open source: Razee.

L’idea è nata a seguito dell’utilizzo di approcci errati, racconta Daniel Berg a The New Stack:

We fell into the pit of building a set of microservices that we ended up delivering as a monolith. […] Every team would build their individual microservices and develop them on a daily basis, but then when we would go to do our continuous integration and continuous delivery process, we tried to do heavy testing of all the components working together and then roll it out into our environment as a tested unit. That became extremely difficult and error-prone and complicated using our traditional automation systems.

Siamo caduti nella trappola di creare un insieme di micro servizi che abbiamo rilasciato come un monolito. […] Ogni team costruiva i propri micro servizi e li sviluppava quotidianamente, ma quando arrivavano nel nostro processo di continuous integration e continuous delivery, cercavamo di fare test approfonditi di tutti i componenti nel loro funzionamento di insieme e poi rilasciarlo nel nostro ambiente come una unità testata. Questo diventò estremamente difficile, soggetto ad errori e complicato utilizzando i nostri sistemi di automazione tradizionali.

Pare quindi che siano inciampati, e che abbiano continuato a farlo fino al punto in cui la situazione non era più gestibile, forzandoli a cambiare approccio.

L’idea di base di Razee, che lo contraddistingue da molti sistemi similari, è che lavora in modalità pull (e non push), ovvero che è il sistema a recepire le modifiche richieste, invece di essere aggiornato a fronte di una richiesta esplicita, il tutto mantenendo la possibilità di gestire auto-aggiornamenti sui cluster Kubernetes; il tutto funziona inserendo un agent in ogni cluster che verifica costantemente i cambi di “regole” e li applica utilizzando direttamente kubectl e le API Kubernetes.

Nello stesso tempo, questo agent informa costantemente il sistema centrale sullo stato dei diversi cluster Kubernetes di cui il sistema si occupa e di come le applicazioni sono distribuite su di essi; esatto, parliamo al plurale perchè questo tool può lavorare su più cluster distinti e distribuiti, andando di fatto a centralizzare quelle che sono le configurazioni, gli update e lo stato dell’infrastruttura Kubernetes che gestisce.

We decouple CI [continuous integration] from CD explicitly. Razee is a distribution system. You could call it a continuous delivery system, but ultimately it is a Kubernetes resource distribution system […] It inventories what is distributed into those clusters. So you get a view of what it’s pushed out into those clusters and it’s a mechanism for driving the distribution of resources into the clusters, which means it can manage any resource in a Kubernetes cluster, including CRD, including controllers, including roles, […]. If it’s a resource in Kubernetes, Razee can manage it.

Abbiamo disaccoppiato la CI [continuous integration] dalla CD esplicitamente. Razee è un sistema di distribuzione. Puoi chiamarlo sistema di continuous delivery, ma alla fine è un sistema di distribuzione di risorse Kubernetes […] Tiene un inventario di cosa è distribuito in quei cluster. Quindi puoi avere una vista di cosa è stato applicato sui cluster, e diventa un meccanismo per pilotare la distribuzione delle risorse nei cluster, il che significa che può gestire qualsiasi risorsa in un cluster Kubernetes, compresi i CRD, compresi i controller, i ruoli […]. Se è una risorsa in Kubernetes, Razee può gestirla

Visto così il sistema sembra veramente interessante, soprattutto nel caso ci trovassimo a gestire cluster multipli che, seppur separati per utilizzo/cloud/ambiente devono mantenere una sorta di regolamentazione di base.

Se, come noi, siete interessati a saperne di più vi rimandiamo all’articolo originale di The New Stack ed, ovviamente, al repository GitHub su cui è presente tutto il codice del progetto. Buon studio.

Fonte: https://www.miamammausalinux.org/2019/06/ibm-razee-il-continuous-delivery-opensource-di-bigblue/

Potrebbero interessarti anche...

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.