On this page
Voor IRN is het Continuous Delivery (CD) een belangrijke aanpak voor het inrichten van beheer. Door het inzetten van Infrastructure as Code met behulp van Git, is het mogelijk op een GitOps gebaseerde werkwijze te hanteren. GitOps is een specialisatie van DevOps.
Change en Release Management
Door het toepassen van GitOps met short lived branches, werken teamleden van het GitOps team aan de configuratie van de infrastructuur. Voor een wijziging, wordt een nieuwe branch aangemaakt, en hier wordt gewerkt aan de wijziging. Wijzigingen zijn zo klein mogelijk en adresseren maximaal 1 onderdeel per wijziging. Dit maakt het reviewen door andere teamleden een stuk eenvoudiger, en geeft minder risico's. Een peer-review op een Pull Request (PR) is verplicht, en moet door één van de teamleden worden uitgevoerd. Daarnaast moeten CI testen geslaagd zijn om een wijziging te mogen mergen.
Wijzigingen (PR's) kunnen van verschillende categorieën zijn:
- Fix: Dit lost een bestaand issue op, maar er wijzigt geen documentatie
- Breaking change: Een wijziging die de functionaliteit zo wijzigt dat aanpassingen nodig zijn door de gebruikers om de functionaliteit te herstellen.
- Dependency update: Een bestaande afhankelijkheid is bijgewerkt.
- New feature: dit is nieuwe functionalteit die in de release notes toegelicht moeten worden. Een documentatie PR moet zijn toegevoegd.
- Quality: refactoring van bestaande content of het verbeteren van tests
Patch Releases bevatten fixes en dependency updates, maar overige changes als new features en breaking changes zitten alleen in de major releases. Voordat een major release uit komt kunnen er nog één of meerdere beta releases worden uitgebracht.
Infrastucture as Code
De GitOps aanpak leent zich voor het inrichten van Infrastructure as Code (IaC). Hiervoor zijn meerdere methodieken beschikbaar op de markt. Naast deze methodes, die vaak een eigen syntax/taal vereisen, wordt het gebruik van script taal zoals MS Power Shell of Python steeds populairder. Het voordeel van b.v. het gebruik van Python via Pulumi of PyInfra is dat de teamleden die er mee moeten werken de taal niet meer hoeven te leren, aangezien kennis van Python vaak al een basis vaardigheid is.
Het ligt voor de hand om hier te standaardiseren, en wildgroei te beperken.
Door desired state van de infrastructuur via Git te beheren is het niet langer nodig om admin accounts op de infra clusters in te zetten voor gestandaardiseerde deployments. Daarnaast is versie beheer gegarandeerd, en wordt het changeproces optimaal ondersteund (4 ogen principe).
GitOps based Software Deployments
Naast het provisionen van infrastructuur het ook een best practice om software deployments GitOps gebaseerd in te richten (b.v. met ArgoCD als declarative Continues Delivery tool). Door Kubernetes resources te beheren via Git, kan het clusterbeheer zonder admin accounts worden uitgevoerd. Voor IRN is het van belang om het deployen van (standaard) software via Kubernetes centraal te organiseren. Dit om met name de veiligheid te kunnen garanderen. Het beheren van veilige images en oplossen van kwetsbaarheden kan heel efficiënt centraal worden uitgevoerd.
GitLab als samenwerkomgeving
GitLab ondersteunt het GitOps gebaseerd werken optimaal. Documentatie bijwerken is dan ook via de GitOps werkwijze te ondersteunen. Dit heeft als effect dat de documentatie per definitie up-to-date blijft zolang documenteren een vast onderdeel is van de GitOps aanpak.
De Git repo's worden beveiligd met branch protection, en peer reviews worden verplicht. Zo wordt gegarandeerd niet er niemand solo kan handelen, zonder een peer-review. Het zelfde geldt voor documentatie updates.
Mirror provenance
- Mirror source
- confluence/spaces/INFRAARCH/pages/226277623/page.metadata.json
- Storage source
- confluence/spaces/INFRAARCH/pages/226277623/page.storage.xhtml
- Access
- Committed snapshot only