Jeg avsluttet nettopp et oppdrag med en kunde i offentlig sektor der hovedansvaret mitt var å implementere et rammeverk for testautomatisering. Etterhvert som oppdraget utviklet seg fikk jeg også oppgaven med å implementere et CI/CD -system da kunden ønsket å gå bort fra Jenkins til Tekton, og rammeverket for testautomatisering skulle kjøres på Tekton. Siden vi ikke hadde mye ekspertise på Tekton måtte jeg, og ett par kollegaer, lære oss om Tekton og hvordan vi skulle implementere det. Vi implementerte Tekton-Cucumber-Gherkin-WebdriverIO med Allure og Junit-rapportering som kommuniserte med Jira-Xray. Jeg likte veldig godt Tekton og vil gjerne dele hva Tekton er.
Hva er CI/CD?
CI/CD er en metode for å levere applikasjoner til kunder ved å automatisere stegene i programvareutvikling. Hovedbegrepene som tilskrives CI/CD er continuous integration, continuous delivery og continuous deployment. CI/CD er ryggraden i en DevOps metodikk, som bringer utviklere og IT -driftsteam sammen for å deploy programvare.
Hva er Cloud-Native CI/CD?
Cloud Native CI/CD kan best forklares i denne sammenhengen:
Cloud Native CI/CD støtter applikasjoner som kjører i containers og som er kjørt av Kubernetes.
Den må være serverløs, være i stand til å kjøre og skalere on demand uten at en sentral CI -motor må vedlikeholdes, eller tas vare på.
DevOps betyr at disse systemene er bygget med DevOps -praksis i tankene, og de tillater team å eie sine delivery pipelines. Det gir teamet eierskap, frihet og fleksibilitet.
Hva er en pipeline, og hva har det å gjøre med CI/CD?
En pipeline er en prosess som driver programvareutvikling gjennom å bygge, teste og deploy kode. Ved å automatisere prosessen er målet å minimere menneskelige feil og opprettholde en konsekvent prosess for hvordan programvare frigjøres. Verktøy som er inkludert i pipeline kan omfatte compiling av kode, enhetstester, kodeanalyse, sikkerhet og opprettelse av binære filer. For containerized miljø vil denne pipeline også inkludere pakking av koden i et containerbilde som skal deploy over en hybridsky.
Hva er Tekton?
Tekton er et open source-prosjekt som gir et rammeverk for å lage cloud-native CI/CD-pipeline raskt. Som et Kubernetes-native rammeverk, gjør Tekton det lettere å deploye på tvers av flere skyleverandører eller hybridmiljøer. Ved å utnytte Custom Resource Definitions (CRD) i Kubernetes, bruker Tekton Kubernetes -kontrollplanet til å kjøre pipeline Tasks. Ved å bruke standard bransjespesifikasjoner vil Tekton fungere godt med eksisterende CI/CD -verktøy som Jenkins, Jenkins X, Skaffold, Knative, og nå Red Hat OpenShift.
Tekton byggesteiner
Tektons grunnleggende byggesteiner kalles Steps og Tasks. En Step er den minste byggesteinen i Tekton, der du angir kommandoer, argumenter og bilder for å utføre prosessene dine. En Task består av ett eller flere Steps. En Task representerer en diskret, selvstendig del av en prosess. Et bestilt sett med Tasks kalles en pipeline.
Tekton er implementert som et sett med Kubernetes CustomResourceDefinitions (CRD), som er standard Kubernetes -utvidelsesmekanismer. Tekton introduserer flere nye CRDer, inkludert Task, Pipeline, TaskRun og PipelineRun. En PipelineRun representerer en enkelt kjørende forekomst av en Pipeline. Som vist i figur 4, er en PipelineRun ansvarlig for å lage en pod for hver av sine Tasks og så mange Containers i hver pod som den har Steps.
Å bygge en DevOps pipeline
Tekton gir oss brikkene vi trenger for å bygge en nyttig DevOps-pipeline. Figur 5 viser de high level flows som inngår i en veldig enkel pipeline uten all linting, testing og bildeskanning som forekommer i en virkelig implementering.
Hva er fordelene med Tekton?
Tekton gir følgende fordeler til brukere av CI/CD -systemer:
- Kan tilpasses. Enheter kan tilpasses fullt ut, noe som gir høy grad av fleksibilitet. Du kan definere en svært detaljert katalog med byggeklosser som andre kan bruke i en rekke av scenarioer.
- Gjenbrukbar. Enheter er fullt ut portable. Når de er definert kan alle i organisasjonen bruke en gitt pipeline og gjenbruke byggesteinene.
- Kan utvides. Tekton Catalog er et samfunnsdrevet lager av Tekton byggeklosser. Du kan raskt opprette nye og utvide eksisterende pipelines ved å bruke ferdiglagde komponenter fra Tekton-katalogen.
- Standardisert. Tekton installerer og kjører som en utvidelse på din Kubernetes cluster og bruker den veletablerte Kubernetes-ressursmodellen. Tekton workload utføres inne i Kubernetes -containers.
- Skalerbar. For å øke arbeidskapasiteten kan du ganske enkelt legge til noder i Kubernetes cluster. Tekton skalerer med ditt cluster uten å måtte redefinere ressurslokaliseringene eller andre endringer i dine pipelines.
Til slutt, hvis jeg skulle sammenligne Tekton med Jenkins:
Tekton kjører på Kubernetes slik at du enkelt kan skalere arbeidsbelastningen til enterprise level, mens Jenkins kjører på sine egne servere/VMer. Jenkins er Java-basert og bruker tusenvis av plugins for å utvide dens muligheter. Tekton som kjører på Kubernetes, betyr at den består av mange forskjellige språk, inkludert Java.