Wat is GitOps?
GitOps is een methode om softwareontwikkeling en deployment te beheren met Git als single source of truth (SSOT). Het geeft developers de mogelijkheid om bekende tools en workflows te gebruiken voor versiebeheer en samenwerking om zo de hele softwarecyclus te beheren.
GitOps maakt gebruik van de mogelijkheden van Git branches, pull requests en merges om de wijzigingen tussen de code repository en de productieomgeving te automatiseren en te synchroniseren. Het zorgt ervoor dat de code repository altijd de gewenste status van het systeem weergeeft, en elke afwijking van die status wordt automatisch gedetecteerd en gecorrigeerd.
Maar hoe zit het met IT-operations? Als we infrastructuur beheren, geven we de voorkeur aan het gebruik van Infrastructure as Code. Als we gecontaineriseerde oplossingen implementeren in Kubernetes, geven we de voorkeur aan Infrastructure as Code (YAML). Veel Infrastructure as Code wordt ontwikkeld en uitgerold door IT Operations-teams. Is het software development? Nee. Is het development? Jazeker!
GitOps is een methode die vaak wordt ingezet door development teams, maar het kan ook heel goed worden ingezet door operations teams. En om maar meteen met de deur in huis te vallen: als je oplossingen als Kubernetes gebruikt, raden we je aan om ook GitOps te implementeren. We zien ook dat steeds meer (Dev)Ops-engineers de controle krijgen over deployment pipelines. Steeds meer redenen om een consistente manier van werken te hanteren en gebruik te maken van de kracht van Git.
Git en containertechnologie
GitOps is in 2017 ontstaan uit Weaveworks. Git als single source of truth voor het implementeren van software bestaat echter al langer. Een aantal van de eerste gebruikers van deze aanpak zijn Netflix, Facebook en GitHub. Zij zetten Git in om hun Infrastructure en Configuration as Code te beheren.
Daarna kwamen de containertechnologieën, zoals Docker en Kubernetes. GitOps is sterk verwant aan de principes van ‘declarative configuration’, ‘immutable infrastructure’ en ‘continuous delivery’, die veel gebruikt worden in de DevOps community.
GitOps: de grootste voordelen
GitOps heeft veel voordelen. Maar het is belangrijk om te bepalen of de voordelen de veranderingen in jouw organisatie waard zijn. Dat is aan jouw organisatie om te beslissen. Bij Intercept hebben we verschillende manieren ingezet om GitOps te implementeren bij onze klanten. En net zoals bij vele veranderingsprocessen kost het tijd om de voordelen te ervaren. Laten we eens kijken welke voordelen jij kunt ervaren door GitOps te implementeren in jouw organisatie.
1. Consistentie & betrouwbaarheid
GitOps zorgt ervoor dat de systeemconfiguratie consistent en betrouwbaar is over verschillende omgevingen en stages. En dat alle wijzigingen traceerbaar en controleerbaar zijn via je favoriete Git oplossing.
2. Efficiëntie e& productiviteit
GitOps vereist standaardisatie. Standaardisatie zorgt voor automatisering en stelt developers uiteindelijk in staat om zich te richten op het schrijven van code en het leveren van meerwaarde, in plaats van het beheren van de infrastructuur en deployment processen.
3. Samenwerking & communicatie
Alle stakeholders kijken naar dezelfde single source of truth. Of dat nu code, issues/backlog items of pull requests zijn. GitOps maakt samenwerking en communicatie mogelijk tussen operations, developers en andere stakeholders, omdat ze hetzelfde Git platform en dezelfde workflows kunnen gebruiken om changes te beoordelen, goed te keuren en te implementeren.
4. Fallback scenario’s
Alles valt of staat met source control. En Git houdt de geschiedenis bij. Door af te dwingen dat alles 'as code' wordt uitgevoerd, zijn fallback scenario's voor configuratiefouten simpelweg de vorige versie.
GitOps uitdagingen:
GitOps is niet het antwoord op alles, en het heeft ook een aantal nadelen en uitdagingen waar je rekening mee moet houden.
1. Complexiteit & leercurve
GitOps vereist een hoog niveau van technische expertise en affiniteit met Git en de tools en platforms die gebruikt worden voor GitOps, zoals Kubernetes en Helm. Het voegt ook een laag van complexiteit toe aan het systeem, wat het moeilijker kan maken om problemen op te lossen en te debuggen.
2. Tooling & integratie
Er zijn veel tools op de markt. Denk aan Flux, ArgoCD voor Kubernetes en oplossingen zoals Jenkins. Het is belangrijk om te kijken naar je processen en benodigdheden en op basis daarvan de tool te kiezen die bij je past, en niet andersom.
3. Culturele & organisatorische veranderingen
GitOps vraagt om een verandering in de mindset en de cultuur van de organisatie, evenals de rollen en verantwoordelijkheden van de developers en de operators. Het vereist ook een hoge mate van vertrouwen en samenwerking tussen de teams, en stakeholders moeten openstaan voor verandering en feedback. GitOps kan een geweldige aanvulling zijn als je de DevOps werkwijze volgt, en de kans is groot dat implementatie eenvoudiger zal zijn.
GitOps integreren in je organisatie
Het implementeren van GitOps kan geweldige voordelen bieden op het gebied van kwaliteit en beveiliging, en het kan de samenwerking tussen verschillende teams verbeteren. De tijdsinvestering kan echter aanzienlijk zijn. En hoewel er een technologische impact is, is de organisatorische en culturele impact veel groter.
Als je al met DevOps werkt, kan GitOps met minder moeite worden geïmplementeerd, omdat de principes en filosofie een goede aanvulling zijn op je DevOps werkwijze.