Wat is GitOps?

Wat is GitOps?

GitOps is een operationeel raamwerk dat de best practices van DevOps gebruikt voor applicatieontwikkeling zoals versiebeheer, samenwerking, compliance en CI/CD-tooling, en deze toepast op infrastructuurautomatisering. GitOps biedt een model voor het beheren van de volledige levenscyclus van infrastructuur met behulp van coderepositories en pull-verzoeken. Dit stelt organisaties in staat om veranderingen op grote schaal te beheren en tegelijkertijd te voldoen aan het corporate governance-beleid.

Terwijl de software development levenscyclus ondertussen geautomatiseerd is, is digitale infrastructuur nog grotendeels een handmatig process waarvoor gespecialiseerde teams nodig zijn. Door de eisen die tegenwoordig worden gesteld voor infrastructuur, is het steeds 

meer nodig geworden om infrastructuur automatisatie te implementeren. Moderne infrastructuur moet erg elastisch zijn zodat het effectief de cloud resoures kan managen die nodig zijn voor continue deployment (CD).

Organizaties met een sterke DevOps cultuur kunnen per dag honderden keren code implementeren, dit doen ze door midden van development best practices zoals version control, code review en CI/CD pipelines  die testing en deployement automatiseren. Met GitOps wordt de voorziening van infrastructuur geautomatiseert. Net zoals teams de broncode van applicaties gebruiken, gebruiken operationele teams die met GitOps werken configuratiebestanden die zijn opgeslagen als code (infrastructuur als code). GitOps-configuratiebestanden genereren elke keer dat het wordt geïmplementeerd dezelfde infrastructuuromgeving, net zoals de broncode van een applicatie elke keer dat het wordt gebouwd dezelfde binaire bestanden van toepassingen genereert.

GitOps levert:

  • Een standaard workflow voor applicatieontwikkeling
  • Verhoogde beveiliging voor het vooraf instellen van toepassingsvereisten
  • Verbeterde betrouwbaarheid met zichtbaarheid en versiebeheer via Git Consistentie in elk cluster, elke cloud en elke lokale omgeving

Veel andere tools kunnen samen worden gebruikt om een GitOps-framework te bouwen. Bijvoorbeeld git-opslagplaatsen, Kubernetes, tools voor continue integratie/continue levering (CI/CD) en hulpprogramma’s voor configuratiebeheer.

Hoe werkt GitOps?

GitOps gebruikt Git-repositories als een enkele bron van waarheid om infrastructuur als code te leveren. Ingediende code controleert het CI-proces, terwijl het CD-proces vereisten controleert en toepast voor zaken als beveiliging, infrastructuur als code of andere grenzen die zijn ingesteld voor het applicatieframework. Alle wijzigingen in de code worden bijgehouden, waardoor updates eenvoudig zijn en versiebeheer mogelijk is mocht een rollback nodig zijn.

Stel je voor dat een team een prestatieknelpunt of een piek in het verkeer identificeert en het team merkt dat de load balancer niet werkt zoals verwacht. Ze onderzoeken de GitOps-repo die de infrastructuurconfiguratie bevat en vinden een specifiek bestand dat de load balancer configureert en implementeert. Ze kunnen het bekijken op hun online Git-hostingsite. Na wat onderzoek en discussie stellen ze vast dat sommige configuratiewaarden voor de load balancer niet optimaal zijn en moeten worden aangepast.

Een lid van het team opent een nieuw pull-verzoek dat de load balancer-waarden optimaliseert. Het pull-verzoek wordt beoordeeld en goedgekeurd door een tweede teamlid en samengevoegd met de repository. De samenvoeging start een GitOps-pijplijn, die de GitOps-operator activeert. De operator ziet dat de configuratie van de load balancer is gewijzigd. Het bevestigt met de systeemorkestratietool dat dit niet overeenkomt met wat er live is in het teamscluster.

De operator geeft het orkestratiesysteem het signaal om de configuratie van de load balancer bij te werken. De Orchestrator handelt de rest af en implementeert automatisch de nieuw geconfigureerde load balancer. Het team bewaakt vervolgens het onlangs bijgewerkte live-systeem om te zien hoe het terugkeert naar een gezonde staat. Dit is een ideaal GitOps-scenario. Laten we er verder op ingaan om de bruikbaarheid van GitOps te demonstreren.

Laten we ons voorstellen dat het team een agressieve beslissing neemt om een geheel nieuw load balancer-type te implementeren in plaats van de load balancer-waarden enigszins aan te passen om ze meer optimaal te maken. Ze vinden dat de huidige load balancer fundamenteel gebrekkig is en willen een alternatieve optie proberen. De workflow is hetzelfde als bij het tweaken van een waarde. Het team maakt een pull-aanvraag die een geheel nieuwe load balancer-configuratie introduceert en de oude configuratie verwijdert. Het is goedgekeurd en geïmplementeerd via de pijplijn.

Helaas constateert het team dat dit nieuwe type load balancer niet compatibel is met sommige andere services binnen hun cluster. De nieuwe load balancer veroorzaakt kritieke verkeersstoringen en stopt gebruikersactiviteiten. Gelukkig, omdat het team een complete GitOps-pijplijn heeft, kunnen ze deze load balancer-wijzigingen snel ongedaan maken. Het team zal nog een pull-verzoek indienen waarmee de repository wordt teruggezet naar de oude bekende functionele load balancer. Dit zal opnieuw worden opgemerkt door de GitOps-pijplijn en automatisch worden geïmplementeerd. Het zal de infrastructuur snel verbeteren en de betrouwbaarheidsscore van het team verbeteren.

Deze voorbeelden laten zien waarom GitOps zo aantrekkelijk is voor organisaties. Want het zorgt ervoor dat risicoloos en snel veranderingen kunnen worden doorgevoerd die overzichtelijk worden gearchiveerd en ook weer snel terug kunnen worden gezet.

Hoe gebruik ik GitOps?

Om met GitOps aan de slag te gaan heeft u infrastructuur nodig die declaratief kan worden beheerd. Hierdoor wordt GitOps vaak gebruikt als besturingsmodel voor Kubernetes en cloud-native applicatie-ontwikkeling en kan het continue implementatie voor Kubernetes mogelijk maken.

Maar het gebruik van Kubernetes is geen vereiste van GitOps. GitOps is een techniek die kan worden toegepast op andere infrastructuur- en implementatiepijplijnen.

Net als Kubernetes is Ansible een gewenste state-engine die declaratieve modellering van traditionele IT-systemen mogelijk maakt en daarom kan worden gebruikt voor GitOps. Een Ansible-gebruiker kan applicaties beheren op Kubernetes, op een bestaande IT-infrastructuur of beide via één besturingsvlak met behulp van Ansible-modules.

GitOps kan worden gebruikt om ontwikkelingspijplijnen te bouwen, applicaties te coderen, configuraties te beheren, Kubernetes-clusters in te richten en te implementeren op Kubernetes of containerregisters.

Conclusie

Zoals u ziet is GitOps een erg productieve manier van werken die zo goed als noofzakelijk is in de moderne bedrijfswereld. wilt u zelf gebruik maken van GitOps maar weet u niet hoe u kunt beginnen of heeft u ondersteuning nodig met het stroomlijnen van het process? neem dan nu contact met ons op en een van onze experts zal samen met u kijken hoe u hier verder mee komt.