Macska a csőben

Macska a csőben

October 29, 2020

Hogyan tehetjük egyszerűvé és hatékonnyá a szoftvergyártás teljes folyamatát, a tervezéstől a fejlesztésen és tesztelésen át, egészen az élesítésig? Mivel teremthetünk egységet a különböző felhőkben és hibrid környezetekben zajló fejlesztési folyamat elemei közt? Nagyon úgy tűnik, hogy a választ egy bádogmacska adhatja meg.

Napjainkban a szoftverpiac egyik legmeghatározóbb tényezője az idő. A fejlesztések üzleti megtérülése jelentős mértékben függ attól, mennyi idő alatt sikerült legyártani, letesztelni és leszállítani, élesíteni az alkalmazást. Ebből logikusan következik, hogy a gyártási folyamat annál hatékonyabb, minél több elemét tudjuk egy egységes rendszerbe bevonva, automatizáltan kezelni. Az utóbbi időben a fejlesztés-tesztelés-élesítés több pontján is egyre elterjedtebbé válnak olyan megoldások, platformok, melyek absztraktabb szintre emelik az adott munkafázist, és ezzel jelentősen leegyszerűsítik a folyamatot. A programozást low-code platformok segítik, a szoftverek telepítését és üzemeltetését pedig ma már jellemzően konténer alapú alkalmazáskezelőkben, elsősorban a Kubernetes-ben végezzük. De mi lesz az a megoldás, ami az összes gyártási fázist integrálja, és ezáltal felpörgeti a CI/CD (Continuous Integration, Continuous Delivery, Continuous Deployment) folyamat hatékonyságát?

A feladatra számos versenyző kínálkozik (a Buildkite-tól az AWS CodePipeline-on át a Jenkins-ig), ám ezek közös jellemzője, hogy egyik sem passzol minden projekthez, s így egyik szoftver sem alkalmas arra, hogy univerzális pipeline-ként működjön. Erre a szerepre jelentkezett be a Tekton – a maga bádogmacska logójával –, s nem kisebb célt tűzött ki maga elé, minthogy megteremti a CI/CD módszertan következő generációját.

Mi az, ami magasabb szintre emelheti a delivery-pipeline technológiát?

Kezdésként néhány alapelv: a platformnak deklaratívnak kell lennie, tehát eleve ismernie kell a „csővezeték” (egymásba illeszthető csövek) fogalmát, létrehozásának logikáját – anélkül, hogy azt előtte lekódoltuk volna.

Fontos, hogy a létrejövő pipeline átalakítható, variálható legyen, illetve az is elengedhetetlen, hogy a segítségével létrehozott folyamatot reprodukálni lehessen, vagyis ugyanazokkal a paraméterekkel mindig ugyanarra az eredményre jusson. Mindezeken felül, ahhoz, hogy egy megoldás valóban általánossá válhasson a CI/CD-eljárás levezényléséhez, elsősorban arra van szükség, hogy a különböző felhőkben zajló folyamatokat mind képes legyen egységesen kezelni.

Utóbbi elvárás hordozza a paradigmaváltáshoz szükséges legnagyobb újítást. Ahhoz, hogy egy CI/CD platform valóban képes legyen mindegyik – fejlesztési szempontból fontos – felhővel együttműködni, nagyjából az alábbi feltételeket kell kielégítenie:

●       nyílt forráskódúnak kell lennie,

●       képesnek kell lennie konténerekbe szervezett, egymástól különböző alkalmazáselemek szerkesztésére,

●       konténerek tömegeit kell dinamikusan, biztonságosan kezelnie,

●       és eleget kell tennie a skálázhatóság feltételének.

Kicsit egyszerűbben megfogalmazva: a platform akkor „jó”, ha ismeri a konténerek technológiáját – vagyis a Docker módszertanát –, illetve, ha képes a konténerek makroszintű kezelésére és skálázására, tehát illeszkedik a Kubernetes rendszeréhez.

Integráció, de hogyan?

A Tekton sikeresen átjutott az említett feltételek szűk keresztmetszetén, vagyis a Kubernetes-integráción. Az alkalmazáskezelő platform előre definiáltan kínál a fejlesztőknek számos különböző objektumot, resource-ot – ilyen a pod, a deployment, a service stb. –, ám ezt a halmazt ki lehet bővíteni saját kezűleg definiált, újonnan létrehozott objektumokkal, úgynevezett CRD-kkel (Custom Resource Definitions) is. A Tekton megoldása, hogy ilyen CRD-kben integrálja a pipeline-t és az ahhoz tartozó elemeket, műveleteket a Kubernetes rendszerébe, így az alkalmassá válik a csővezeté kezelésére, és az azon érkező feladatok végrehajtására.

A technológia legalapvetőbb eleme a Step, ami egyetlen egyszerű műveletet tartalmaz – ez konténerként épül be a Kubernetes-be. Step-ek szekvenciálisan végrehajtott sorozatából áll össze a Task-típusú objektum, ami már a korábban említett, CRD-megoldással válik elérhetővé az alkalmazáskezelő számára. A következő hierarchikus fokozat maga a Pipeline CRD, ami több Task-ból áll. Itt lehetőség van arra, hogy a Task-okból gráfot építsünk, és meghatározzuk, melyik ág mikor és hogyan fusson le. A statikus objektumok után meg kell említenünk a Runtime CRD-t, mely a Task-ok, illetve Pipeline-ok futtatásával kapcsolatos feladatokat, műveleti sorrendeket tartalmazza.

Mint láthattuk, a Tekton képes integrálni szinte minden fontos pipeline-funkciót a Kubernetes-be, így minden esélye megvan arra, hogy beteljesítse a célját, és egy általános, minden platformot kezelni képes alkalmazásgyártó csővezetéket hozzon létre. Ennek az általánosításnak köszönhetően a jövőben nagyságrendekkel emelkedhet a szoftverfejlesztés hatékonysága.

Mocsányi Ákos
Cikket írta
Mocsányi Ákos
Solution Architect
Olvasási idő:
7 perc
DevOps
Megosztás