Progressive delivery visualisatie met traffic shifting

Progressive delivery met Argo Rollouts: canary en blue-green deployments

Een standaard Kubernetes Deployment heeft me lang prima gediend. Push een nieuwe image tag, kijk hoe de pods rollen, klaar. Simpel, declaratief, en meestal ging er niks mis. De rolling update gaf me zelfs een warm gevoel van veiligheid: oude pods verdwijnen pas als de nieuwe ready zijn. Dat gevoel is een leugen. Een rolling update beschermt je tegen pods die niet opstarten. Hij doet niks tegen pods die perfect opstarten en vervolgens kapotte responses serveren. De container is gezond, de readiness probe is groen, en je nieuwe code stuurt stilletjes 500’s naar elke gebruiker. Binnen seconden raakt 100% van je traffic code die niemand onder echte load heeft gevalideerd. ...

20 juni 2025 · 12 min leestijd · Tom Meurs
Container security scanning pipeline visualisatie

Container image scanning met Trivy in je CI pipeline

Een base image pullen, je code erin kopiëren, naar productie pushen. Die lus draaien de meesten van ons op de automatische piloot. Het stuk waar niemand naar kijkt is de base image zelf, die stilletjes een paar honderd packages meesleept die je nooit gekozen hebt. Eén ervan kan een bekende CVE dragen, en je zou er geen flauw idee van hebben. Dat zit me dwars. Ik draai niet graag dingen die ik niet kan inspecteren, en een container image die je niet gescand hebt is precies dat: een black box die je vertrouwt omdat naar binnen kijken te veel moeite leek. ...

8 juni 2025 · 9 min leestijd · Tom Meurs
Geautomatiseerde semantic versioning pipeline

Semantic versioning automatiseren met GitLab CI

Stel je eerst de eindsituatie voor. Je merget een branch naar main, loopt weg om koffie te halen, en tegen de tijd dat je terug bent heeft het project een nieuwe versie-tag, een verse changelog-entry, en een GitLab release met notes die uit je commits zijn geschreven. Niemand besloot “is dit 1.4.0 of 1.3.5?” omdat niemand dat hoefde. Het versienummer rolde uit het werk zelf. Daar wil ik in deze post naartoe. Ik draai een self-hosted GitLab en ik wil niet dat versioning iets is waar ik over nadenk. Een versienummer dat iemand met de hand kiest is een klein black box: het hangt ervan af of die persoon de regels onthield, oplette, en het met iedereen eens was over wat als een breaking change telt. Ik heb liever dat het nummer een consequentie van de commits is, iets dat ik kan inspecteren en reproduceren. ...

27 mei 2025 · 9 min leestijd · Tom Meurs
GitLab CI pipeline voor Kubernetes

GitLab CI voor Kubernetes: van commit tot deployment

Lange tijd draaide mijn CI op de servers van iemand anders. Push code, wacht op een hosted runner, kijk hoe de minuten aftikken tegen een maandelijks quotum, hoop dat de provider de regels niet verandert volgend kwartaal. Het werkte, tot ik me begon af te vragen waar mijn broncode eigenlijk stond terwijl hij gebouwd werd, en wie er nog meer bij kon. Dus haalde ik GitLab in huis. Ik draai hem nu self-hosted, op eigen hardware, naast de clusters waarnaar hij deployt. Dat is soevereiniteit toegepast op CI/CD: mijn code, mijn builds, mijn artifacts, geen vendor die prijzen kan veranderen, een feature kan deprecaten waar ik van afhankelijk ben, of mijn repositories kan lezen zonder dat ik het weet. ...

15 mei 2025 · 10 min leestijd · Tom Meurs
Configuratie drift detectie in ArgoCD

Drift detection met ArgoCD: hoe weet je of je cluster nog in sync is

De hele belofte van GitOps is dat Git de source of truth is. Die belofte houdt stand tot het moment dat iemand om 2 uur ’s nachts kubectl edit runt op een deployment om een incident te stoppen, een mutating webhook stilletjes een resource herschrijft, of een half afgemaakte sync je cluster ergens tussen wat Git wilde en wat het kreeg achterlaat. Nu zegt Git het ene en doet het cluster het andere, en niemand heeft het je verteld. ...

3 mei 2025 · 8 min leestijd · Tom Meurs