Tekton - De manier om cloud native CI/CD pipelines op te zetten
Tekton is een cloud native framework om een eigen CI/CD oplossing mee te ontwikkelen. Het gebruik maken van bouwblokken staat binnen dit cloud native framework centraal. Tekton gebruikt hiervoor Kubernetes resources binnen de pipelines. Ideaal als je simpel en snel pipelines wilt aanmaken. Na het lezen van dit artikel weet jij precies wat Tekton is en hoe het jouw organisatie kan helpen!
Waarom Tekton?
Voor ons heel logisch, maar toch de voordelen op een rijtje:
1. Aanpasbaarheid
Binnen het Tekton pipeline framework wordt gebruik gemaakt van Tekton entiteiten.
Deze Tekton onderdelen zijn zeer aanpasbaar. Een voorbeeld hiervan is een definitie van een pipeline.
Deze definitie is een YAML-bestand en kan op elk moment gewijzigd worden. Het voordeel hiervan is dat dit eenvoudig kan gebeuren. Een terminal met teksteditor ter beschikking, je OpenShift cluster en een toetsenbord, meer heb je er niet voor nodig.
In situaties waarbij het handig is om snel te schakelen tussen verschillende pipelines en het testen/ontwikkelen hiervan, is Tekton een goede uitkomst. Het aanpassen van deze onderdelen kan door platform engineers eenvoudig gebeuren door middel van het aanpassen van een simpel YAML-bestand. Na het aanpassen moet dit bestand worden toegepast op het OpenShift cluster, en klaar!
2. Herbruikbaar
De herbruikbaarheid van Tekton is een sterk onderdeel omdat dit ervoor zorgt dat bepaalde pipeline taken, oftewel functionaliteiten, hergebruikt kunnen worden binnen andere pipelines.
In het geval van clustertaken worden deze globaal opgeslagen. Deze taken zijn voor alle pipelines op het cluster beschikbaar.
Sommige taken zijn alleen beschikbaar per pipeline. Deze onderdelen kunnen steeds hergebruikt worden zonder dat het wiel opnieuw uitgevonden hoeft te worden.
3. Uitbreidbaar
Tekton heeft een catalogus beschikbaar met herbruikbare onderdelen. Een voorbeeld hiervan is gebruik maken van vooraf gedefinieerde taken door Tekton zelf.
Bijvoorbeeld in een pipeline moet een applicatie gekloond worden en gebouwd.
Nu heeft Tekton een git-clone
clustertaak beschikbaar gemaakt om simpel
een Git repository te klonen. Je hoeft zelf dus geen taak te schrijven voor
het klonen van een Git repository.
Het is mogelijk om vooraf gedefinieerde onderdelen te gebruiken. Deze onderdelen kunnen eenvoudig gebruikt worden binnen de pipelines.
4. Gestandaardiseerd
Bij het installatieproces van Tekton wordt een extensie op het OpenShift (of Kubernetes) cluster geïnstalleerd waarin gedefinieerd staat dat Tekton gebruik maakt van het Kubernetes resource model.
Het grote voordeel hiervan is dat er direct gebruik gemaakt kan worden van de onderdelen welke al aanwezig zijn op het cluster. Geen gedoe met het opnieuw leren of toevoegen van nieuwe onderdelen.
Dit betekent dat de huidige onderdelen binnen je cluster makkelijk om te zetten zijn naar pipelines. Tekton begrijpt namelijk ‘de taal’ van OpenShift (of Kubernetes).
5. Schaalbaar
Tekton schaalt mee met het gebruik op het cluster. Hiervoor hoeven geen modificaties te worden aangebracht aan bestaande pipelines.
Het voordeel hiervan ten opzichte van bijvoorbeeld een ander pipeline framework, zoals Jenkins, is dat het cluster zelf kan bepalen waar bepaalde taken worden uitgevoerd.
Zijn er ook nadelen?
Het gebruik van Tekton heeft natuurlijk niet alleen maar voordelen. Één van de nadelen van Tekton is dat het alleen maar functioneert op Kubernetes. Omdat de basis bouwblokken van Tekton gebaseerd zijn op Kubernetes objecten is het niet mogelijk om Tekton te gebruiken op een ander platform. Hiernaast is Tekton nog in de ontwikkeling, wat ook gezien kan worden als een nadeel, terwijl veel andere producten een uitgebreidere set van basis onderdelen leveren.
Maar uit welke bouwblokken bestaat een Tekton pipeline dan?
Een Tekton pipeline bestaat uit een aantal bouwblokken. Dit wordt gezien als vier simpele onderdelen: Task, Taskrun, Pipeline en PipelineRun.
Een Task is een vooraf gedefinieerde taak met meerdere stappen hierin. Deze Task heeft inputs en outputs en kan worden gebruikt bij een volgende Task. Hierdoor worden Tasks zo generiek mogelijk opgesteld en kunnen in de gewenste volgorde gezet worden met de juiste in- en output. Een Task heeft twee verschillende types. Een gewone ‘Task’ of een ‘ClusterTask’. Een ClusterTask is beschikbaar voor het gehele cluster terwijl een gewone Task alleen voor een desbetreffende namespace binnen het cluster beschikbaar is.
Een TaskRun is een instantie van de desbetreffende Task. Binnen deze TaskRun wordt beschreven wat de Task meekrijgt als parameters.
Een Pipeline is een set van Tasks. Deze Tasks kunnen hun in- en output doorgeven aan volgende Tasks binnen de Pipeline.
Een PipelineRun is een instantie van een Pipeline. Binnen deze PipelineRun staat beschreven welke input parameters meegegeven moeten worden. Binnen een PipelineRun staat beschreven welke bijbehorende Pipeline gestart moet worden.
Hieruit kunnen we concluderen dat een Task gebruikt moet worden voor het uitvoeren van een taak. Het bouwen van een applicatie, het testen hiervan, het uitrollen, etc.
Een Pipeline wordt aangemaakt voor het uitvoeren van een complete set van Tasks. Hierdoor worden deze Tasks stap-voor-stap uitgevoerd om het gewenste resultaat te bereiken.
Bij het gebruiken van een Pipeline is het ook mogelijk om een PVC (Persistent Volume Claim) te koppelen zodat de Pipeline gebruik kan maken van storage zodat de Tasks binnen de Pipeline aan dezelfde spullen werkt.
Ik kies voor Tekton, en nu?
Dat is eenvoudig!
Via OpenShift hoeft alleen maar de Pipeline operator geïnstalleerd te worden.
Hierdoor wordt Tekton op het OpenShift cluster geïnstalleerd en meteen opgezet
voor alle namespaces wanneer dit wordt aangegeven tijdens de
installatieprocedure.
Na het installeren is het verstandig om de tkn
command line tooling te
installeren. Hiermee wordt het leven een stuk makkelijker gemaakt omdat
Pipelines en Tasks eenvoudig te beheren.
Met een commando zoals: tkn ct ls
worden alle ClusterTasks getoond.
De ‘tkn’ tool kan eenvoudig verschillende Tekton componenten weergeven,
of dit nu Tasks, ClusterTasks of Pipelines zijn.
Ook is de tkn
tool geschikt voor het weergeven van de logs binnen de Pipeline.
Hiermee kan de Pipeline precies gevold worden tijdens het uitvoeren om
bijvoorbeeld een gefaalde stap te onderzoeken.
Tip! Installeer de tkn
tool, dit maakt je leven een stuk makkelijker
wanneer je met Tekton aan de gang zal gaan.
Hoe ziet dit er in de praktijk uit?
Zoals jullie allemaal weten is praktijk altijd anders dan de theorie. Hier is dat niet anders.
Hoe ziet dit er nu in de praktijk uit? Collega Wander Boessenkool heeft een video gemaakt waar hij stap voor stap heeft uitgelegd hoe je te werk moet gaan op een Tekton pipeline op te zetten!
Zelf werk ik ook aan verschillende projecten in de praktijk met Tekton. Mijn afstudeerstage, bij TNO, betrof een applicatiemigratie naar OpenShift met Tekton pipelines.
*Afbeeldingen zijn afkomstig van tekton.dev