Tekton, een krachtig en flexibel open-source framework, stelt ontwikkelaars in staat om CI/CD-systemen te bouwen, testen en implementeren, zowel in de cloud als op locatie. In dit artikel gaan we dieper in op wat Tekton is, de voordelen en hoe grote bedrijven zoals Google, Elastic en RedHat er gebruik van maken.
Tekton is een open-source framework ontworpen voor het ontwikkelen van Continuous Integration en Continuous Deployment (CI/CD) systemen. Het stelt ontwikkelaars in staat om naadloos samen te werken met zowel cloud providers als on-premise infrastructuren. Met Tekton kunnen ontwikkelaars pijplijnen bouwen, testen en implementeren en profiteren van een flexibele en uitbreidbare architectuur.
Tekton maakt gebruik van Kubernetes clusters om bronnen en componenten te beheren. Hierdoor kan Tekton op verschillende cloud providers draaien en lokaal worden ingezet.
Alle middelen die nodig zijn om een pijplijn te bouwen zijn beschikbaar als Kubernetes Custom Resources. Dit betekent dat pijplijnen volledig kunnen worden beschreven in YAML-bestanden, waardoor GitOps-principes kunnen worden toegepast voor een geautomatiseerd en versiegestuurd bouwproces.
De kern van Tekton is eenvoudig uit te breiden met extra componenten, zoals Tekton Triggers of Dashboards. Deze componenten bevinden zich niet direct in de kern, waardoor deze compact blijft en minimale resources gebruikt.
Dankzij Tekton's modulaire ontwerp kan de kern onafhankelijk worden geüpgraded zonder dat dit invloed heeft op builds. De scheiding van de core en uitbreidingen maakt onderhoud veel eenvoudiger.
Als Cloud-Native oplossing kan Tekton eenvoudig worden geschaald voor hoge beschikbaarheid, waardoor het geschikt is voor een verscheidenheid aan projecten en omgevingen.
Verschillende toonaangevende IT-bedrijven hebben Tekton geadopteerd en dragen actief bij aan de ontwikkeling ervan via een GitHub repository. Enkele opmerkelijke bedrijven zijn:
Het Tekton ecosysteem bestaat uit verschillende componenten die collectief of individueel kunnen worden ingezet. Hieronder volgt een uitleg van een aantal belangrijke componenten.
Tekton Pipelines maakt gebruik van Kubernetes Custom Resources om bouwprocessen te definiëren. Volgens het 'pipeline-as-code' principe kunnen ontwikkelaars pipelines beschrijven in YAML-bestanden en versiebeheer toepassen met GitOps.
Door elke resource op te slaan in Git kan worden gewerkt met versies van verschillende Pipeline-resources. Door het GitOps-principe toe te passen, wordt de bron bovendien automatisch ingezet op het cluster, waardoor je er zeker van bent dat je altijd de juiste en nieuwste versie hebt, zonder dat je handmatig met de Tekton-bronnen hoeft om te gaan.
Een Pipeline is een subset van taken die in een specifieke volgorde worden uitgevoerd.
Laten we een voorbeeld nemen van een Pipeline voor het bouwen van een Docker image:
Laten we dit nu visualiseren.
In de pijplijn definiëren we de taken. Deze taken zijn ook individuele Tekton Custom Resources in Kubernetes. Wanneer de pijplijn wordt uitgevoerd, raadpleegt Tekton de gedefinieerde bron en gebruikt deze om de taken uit te voeren.
Taken zijn heel flexibel. Je kunt een taak herhaaldelijk hergebruiken binnen een pijplijn en zelfs tussen verschillende pijplijnen. Taken kunnen worden aangepast of vanaf nul worden geschreven zonder dat het nodig is om afzonderlijk plugins of extra bronnen te installeren. Een taak kan een eenvoudige container image zijn die wordt uitgevoerd met specifieke parameters.
Door versiebeheer toe te passen op taken is het eenvoudig om voor elk specifiek doel een andere versie van de taak te gebruiken. Dit elimineert de noodzaak om alle pijplijnen te upgraden wanneer een taak wordt bijgewerkt.
Laten we als voorbeeld een pijplijn maken die een Docker container image bouwt en naar een Docker container register pusht.
Eerst bereiden we onze Tekton-taken voor, zodat we ze in onze Tekton-pijplijn kunnen definiëren.
Welke stappen zijn nodig om een Docker container image te bouwen?
U kunt de bijbehorende YAML-bestanden voor elk van deze taken vinden op de Tekton Hub.
Nu we onze taken hebben voorbereid, kunnen we onze aangepaste Tekton Pipeline schrijven.
Tekton Pipeline wordt van boven naar beneden opgebouwd.
Nu we een complete Tekton Pipeline hebben, kunnen we onze pipeline starten.
Hiervoor hebben we Tekton PipelineRun nodig. Hier gaan we onze parameters definiëren zoals:
Implementeer de middelen om te testen in volgorde: Taken, Pipeline en PipelineRun.
Triggers zorgen ervoor dat Tekton Pipelines kunnen worden gestart door een gebeurtenis, zoals een commit naar een repository die vervolgens een webhook naar je Trigger Listener stuurt.
Er zijn verschillende opties om je pipeline te activeren vanuit een gebeurtenis.
Als we het bovenstaande diagram verder uitwerken en Tekton Triggers toevoegen, ziet het er als volgt uit:
Stappen:
Eerst maken we onze EventListener aan op basis van een CEL-expressie.
In onze EventListener hebben we triggers geconfigureerd die:
Als deze velden correct zijn, zal hij een sjabloon voorbereiden.
We gaan ook een TriggerTemplate en TriggerBinding voorbereiden om parameters te gebruiken tijdens de trigger.
In de TriggerBinding extraheren we de Trigger Body en laden we de variabelen met de bodywaarden die zijn verzonden vanuit Webhook.
Nu we de variabelen in de TriggerBinding hebben, kunnen we onze Pipeline starten vanuit TriggerTemplate met onze variabelen die uit Trigger komen.
We kunnen hiervoor de notatie ${tt.xx} gebruiken.
Implementeer de bronnen om te testen: TriggerTemplate, TriggerBinding, EventListener.
Het observeren en beheren van Tekton middelen binnen een Kubernetes omgeving is niet altijd eenvoudig, zeker als je bedenkt dat ontwikkelaars vaak beperkte toegangsrechten hebben in de Kubernetes omgeving.
Om deze reden wordt het gebruik van Tekton Dashboards aanbevolen. Tekton Dashboard dient als uitbreiding op het Tekton ecosysteem en biedt een gebruiksvriendelijke webinterface voor het beheren en monitoren van Tekton resources in Kubernetes omgevingen. Het faciliteert ontwikkelaars bij het volgen van pijplijnen, het monitoren van real-time logs en het verifiëren van taakstatussen. Hierdoor kunnen ontwikkelaars snel de redenen voor bouwfouten en hun specifieke locaties identificeren.
Tekton biedt een uitgebreide reeks pijplijnen en taken die direct beschikbaar zijn. Hoewel ontwikkelaars pijplijnen of taken vanaf nul kunnen schrijven, hebben ze ook de optie om taken en pijplijnen van de Tekton Hub over te nemen. De middelen die van de Hub worden overgenomen, kunnen naar behoefte worden aangepast.
Dit biedt ontwikkelaars flexibiliteit, zodat ze zich niet strikt hoeven te houden aan vooraf gedefinieerde middelen en in plaats daarvan hun middelen volledig kunnen herschrijven op basis van hun voorkeuren.
Enkele belangrijke taken die beschikbaar zijn via de Hub zijn:
Meer taken zijn beschikbaar op https://hub.tekton.dev/.
Voor ontwikkelaars die Tekton willen gaan gebruiken biedt de officiële Tekton-documentatie gedetailleerde informatie over installatie en configuratie.
Samenvattend biedt Tekton een krachtige, flexibele en schaalbare oplossing voor CI/CD processen. Met zijn CloudNative kenmerken, uitbreidbaarheid en ondersteuning van grote bedrijven heeft Tekton zich gevestigd als een betrouwbaar framework voor ontwikkelaars.
Wilt u de voordelen van Tekton in de praktijk ervaren en ontdekken hoe ACA Group innovatieve oplossingen kan bieden voor uw IT-uitdagingen?
Neemgerust contact op met onze experts voor persoonlijk advies en een naadloze implementatie.