Met Git als centraal punt, kunnen ontwikkelaars met behulp van pull requests een applicatie uitrol aftrappen. In de basis is GitOps niets anders dan het hebben van een Git repository met daarin de declaratieve beschrijvingen van de infrastructuur van de productie omgeving. Met behulp van een geautomatiseerd proces wordt gezorgd dat de productie omgeving overeenkomt met de Git repository. Wanneer men een nieuwe applicatie wil uitrollen of een bestaande wil wijzigen, hoeft alleen de Git repository te worden geüpdatet. Het automatische proces zorgt voor de rest. Zie het als een cruise control functie op je cluster.
Het is dan ook om verschillende redenen wenselijk om onderscheid te maken tussen de bron code en de deployment configuratie van je applicatie:
– Er zijn momenten dat je de configuratie wilt wijzigen zonder een hele nieuwe CI build te starten. Voorbeeld, je wilt het aantal replica’s in je deployment ophogen. Het zou zonde zijn om hier een nieuwe build voor af te trappen.
– De Git log en historie zijn schoon en overzichtelijk. Dit geldt zowel voor de bron code als voor de configuratie repository. Dit is onder andere handig voor auditing en traceability. Het is altijd duidelijk en door iedereen te achterhalen wat er uitgerold staat en waarom dat zo is.
– Het is erg eenvoudig om een gefaalde upgrade terug draaien naar de laatste stabiele uitrol. Het enige dat men hoeft te doen is een `git revert` naar de gewenste staat.