In dit artikel nemen we je mee in de wereld van enterprise automation en geven we een kijkje in de keuken van GitOps. Dit is een samenvatting van de inspiratiesessie op ons klantevenement RUST. door André Honders en Marc van de Logt.
Wat zijn IaC en GitOps?
Infrastructuur als code (IaC) maakt gebruik van DevOps-methodologie en versiebeheer met een declaratief model, voor het definiëren en implementeren van infrastructuren. Declaratief wil zeggen dat de desired state in de code staat. Vanuit die definitie genereert een IaC-model steeds dezelfde omgeving wanneer deze wordt geïmplementeerd.
GitOps is een operationele werkwijze voor infrastructuur en applicatie-deployments, waarbij Git fungeert als de 'enige bron van waarheid' (single source of truth). Configuraties en infrastructuurcode worden opgeslagen in een Git repository. Wijzigingen worden automatisch toegepast en versiebeheer, samenwerking en herstel eenvoudig beheerd via Git.
Waarom IaC en GitOps?
Wij zien een groei in adoptie van IaC en GitOps. Marc en Andre leggen twee meest belangrijke redenen uit. Om te beginnen willen organisaties hun huidige technologiestack verder moderniseren. Tegelijkertijd stelt GitOps ze in staat de werkwijze met technologie te verbeteren en deze wendbaarder te maken.
Bij traditionele datacenters en traditionele IT worden wijzigingen handmatig uitgevoerd. Problemen worden opgelost met tickets. De benodigde kennis is niet of beperkt gedocumenteerd en zit in de hoofden van beheerders. Herkenbaar is dat het tot vertragingen in probleemoplossing en changes leidt en de kans op menselijke fouten is groot.
IaC en GitOps faciliteren dat organisaties hun infrastructuur geautomatiseerd, reproduceerbaar en transparant kan ontwikkelen, uitrollen en beheren. Voor een groot gedeelte sla je de code op in een Git repository. Hoe die code gebruikt dient te worden, is iets wat nog steeds gedocumenteerd moet worden. Dat gebeurt veelal in een README.md.
Enterprise governance en security
IaC en GitOps kunnen je ook helpen de governance en security op een hoger peil te krijgen. IaC zorgt ervoor dat jouw infrastructuur altijd op dezelfde manier wordt uitgerold. Dit voorkomt configuratiedrift en helpt organisaties om governance-standaarden zoals naming conventions en security policies consistent toe te passen. Door het automatiseren van governance-regels via policies worden niet-conforme deployments automatisch geblokkeerd.
Daarnaast integreert IaC met versiebeheersystemen, waardoor wijzigingen via pull requests en approvals verlopen. Dit ondersteunt change managementprocessen en minimaliseert risico’s bij updates. En omdat de definitie van jouw infrastructuur in een GIT repository is vastgelegd, is elke wijziging traceerbaar. Dit maakt het eenvoudiger om te voldoen aan compliance-eisen, zoals ISO of NIS2, en voor audits heb je een duidelijke change history.
Security by design: GitOps als wapen van cybersecurity
We zien vaak dat wanneer teams een applicatie deployen, dat ze pas daarna aan de slag gaan met de security er omheen. Doordat je met GitOps de security direct in de code inbouwt (‘shift-left’) worden governance en security niet achteraf toegepast, maar zijn ze vanaf het begin onderdeel van het ontwerp. Je verlaagt de risico’s en versnelt de uitrol van nieuwe applicaties.
De voordelen van IaC en GitOps
Minder incidenten en sneller herstel doordat de volledige infrastructuur als code is opgeslagen in Git. Deze kan reproduceerbaar opnieuw worden gebouwd, zonder afhankelijkheid van documentatie of specifieke medewerkers. Daarnaast een snellere disaster recovery, omdat één pull request voldoende is om de code opnieuw uit te voeren.
Versnelling van deployments en change-processen. Met IaC + GitOps: verkort je de doorlooptijd, verminder je handmatig werk en bouw je een consistent deployment proces op de manier waarop moderne cloud-native organisaties dat doen.
Volledige traceability en auditability doordat elke verandering in Git wordt vastgelegd. Bij een audit kan je letterlijk terugzien wie wat heeft veranderd, waarom en wanneer.
Betere samenwerking tussen teams. In traditionele datacenters zijn teams vaak gescheiden: netwerk, storage, compute, applicaties en operations. Met IaC verschuift de samenwerking naar platform engineering. Met gedeelde code op basis van best practices en gedeelde domeinkennis werken teams asynchroon samen. Het IT-team bouwt meer kennis op over de volledige infrastructuur.
Hogere productiviteit van IT-medewerkers en -teams doordat bij IaC en GitOps kennis in de code wordt vastgelegd in plaats van in de hoofden van medewerkers en documentatie automatisch ontstaat. De organisatie wordt minder afhankelijk van individuele IT-medewerkers en nieuwe medewerkers kunnen sneller onboarden.
Fundament voor hybride cloud en cloud native. Met IaC wordt jouw code cloud agnostisch: met één code base kan je zowel in de private als public cloud deployen.
Hogere operationele IT-efficiency doordat met IaC en GitOps het model verschuift van ‘people operating infrastructure’ naar ‘automation operating infrastructure’. Met als gevolgen: minder handmatig beheer, operators worden platform engineers en IT kan zich meer richten op waarde voor de business.
Versnelling van incident response en herstel: omdat infrastructuur code is, is het makkelijker om terug te gaan naar een eerdere versie of een omgeving opnieuw op te bouwen. Dat werkt bij incidenten vaak veel sneller dan troubleshooting op handmatige configuraties.
Strategisch voordeel voor de organisatie, wat voor enterprise architecten misschien wel het belangrijkste argument is. IaC en GitOps maken IT programmeerbaar. Dat betekent: sneller nieuwe platformen, makkelijker experimenteren en kortere innovatiecycli. Kortom: de organisatie wordt wendbaarder.
Uitdagingen rondom IaC en GitOps
Er zijn een aantal belangrijke aspecten waar je rekening mee moet houden als je op deze manier wil gaan werken. We geven een paar voorbeelden.
Vanuit de techniek moet je rekening houden met de complexiteit van tooling. IT’ers gaan leren coderen. Versiebeheer is heel belangrijk om goed in te richten, dat zorgt voor voorspelbaarheid in de geautomatiseerde uitrol. En troubleshooting krijgt een andere dimensie. Waar een systeembeheerder soms wel eens kon teruggrijpen op een ‘quick fix’, moeten ze nu terug naar de code om het in de basis op te lossen. Het heeft daarmee gevolgen voor change management. Voor een kleine change is een volledige pipeline run noodzakelijk. Dat kan traag aanvoelen voor teams die snelle fixes gewend zijn.
Het heeft ook organisatorische en culturele impact. Alles draait om de single source of truth in de repository, dus discipline is een randvoorwaarde voor succes. Daarnaast is er bredere kennis noodzakelijk: ontwikkelaars moeten infrastructuur begrijpen en systeembeheerders moeten snappen waar developers mee bezig zijn.
Uiteindelijk gaat het dus om mensen, processen en discipline.
Jouw team moet de skills en mindset hebben om alles vanuit de code te doen. Je moet de processen rond policies, versiebeheer, security en standaardisatie definiëren en managen. En het volledige IT-team moet gedisciplineerd werken. Als één van jouw teamleden niet volgens deze principes werkt maar handmatig iets aanpast, dan wordt dat vervolgens door de code overschreven. En dan krijg ontstaat frustratie.
Keuze voor tools en vendoren
Als je met IaC en GitOps aan de slag gaat, dan is er een wereld aan tools beschikbaar. Welke kies je voor welk scenario? Kies je uit de open source wereld, zonder vendor support? Of betaal je liever voor licenties met support? In onze sessie lichtten we een aantal veelgebruikte tools toe en legden uit in welk scenario je die in kunt zetten.
Kies je voor cloud agnostisch, dan kan je gebruik maken van tools als Terraform en VCF Automation, voor de deployment van code. Ansible en Saltstack zijn heel goede tools voor configuratie. De hyperscalers bieden public cloud tools als AWS CloudFormation, Azure Resource Manager en Azure DevOps.
De keuze heeft gevolgen voor de leercurve van jouw IT-team. De ene tool is sneller te leren en eenvoudiger te bedienen met drag & drop, terwijl een andere tool een steilere leercurve heeft omdat daar code schrijven vereist is.
Belangrijke aanbieders in dit speelveld zijn VMware, HashiCorp, RedHat, GitHub, GitLab en Argo.
Git is een versiecontrolesysteem dat lokaal op een systeem draait, bijvoorbeeld ‘Mijn laptop’.
GitHub en GitLab zijn hosted versiecontrolesystemen. Het spreekt voor zich wanneer verschillende DevOps-teams samenwerken, dat je kiest voor een GitHub of GitLab, omdat Git alleen niet volstaat.
ArgoCD en Flux zijn GitOps-tools die onder andere in softwareproducten van VMware en Redhat zitten. ArgoCD is belangrijk om CI/CD via een GitOps way of working te kunnen doen.
Tips van André en Marc uit de praktijk
-
Begin klein met een pilotproject, pak niet alles in één keer op. Anders loop je het risico dat je vastloopt in deze nieuwe manier van werken voordat je er voordelen van ervaart.
-
Wat het complex maakt, is dat je vanaf het eerste moment je standaarden en governance moet inrichten. Uit ervaring blijkt dat de Git repository gaat groeien als kool. Uiteraard kan PQR daarbij helpen.
-
Vergeet niet te investeren in Git-, IaC- en Kubernetestraining voor je teams.
-
Automatiseer policy checks (shift-left) vanaf het begin.
-
Formeer platform teams, om complexiteit te abstraheren en de beheerders samen te laten werken met platform engineers.
Meer weten?
Wil je meer informatie over enterprise automation voor jouw organisatie, of wil je het live zien werken? Neem dan contact met ons op.