Välj rätt GitOps-verktyg för din K8s-stack.
Den vanligaste deploy-modellen jag möter är att en pipeline har credentials rakt in i klustret och pushar förändringar dit. Det fungerar, men det har ett par tysta svagheter: pipelinen har mäktiga nycklar, och det är inte helt enkelt att svara på frågan vad som faktiskt körs just nu jämfört med vad som borde köras. GitOps vänder på modellen. I stället för att pipelinen pushar till klustret, drar en kontroller inne i klustret från git och håller verkligheten i linje med det som står där. Frågan blir då vilket verktyg, och de två tunga alternativen är ArgoCD och Flux.
Vad GitOps faktiskt ger dig
Skiftet låter litet men förändrar mycket. Eftersom git beskriver önskat tillstånd får du en komplett historik över varje förändring: vem, när och varför, granskat i en pull request. Du får en naturlig återställning, eftersom att rulla tillbaka är att backa en commit. Och du får avstämning: om någon ändrar något manuellt i klustret upptäcker kontrollern att verkligheten avviker från git och kan rätta tillbaka det.
Den sista egenskapen är underskattad. Manuella ändringar som ingen dokumenterar är en av de vanligaste källorna till mystiska incidenter. Med GitOps blir sådan drift antingen automatiskt korrigerad eller åtminstone synlig, eftersom git och verkligheten ständigt jämförs.
ArgoCD: det visuella och centraliserade
ArgoCD är det av de två som de flesta tycker är lättast att ta till sig, mycket tack vare sitt gränssnitt. Det ger dig en tydlig visuell bild av varje applikation, dess synkstatus och hälsa, och vad som skiljer mellan git och klustret. För ett team som är nytt på GitOps är den synligheten värdefull, eftersom det blir lätt att se vad som händer och varför något inte synkar.
- Styrkor: utmärkt gränssnitt, tydlig överblick, stark hantering av flera applikationer och inbyggt stöd för åtkomststyrning.
- Avvägning: det är en applikation du driftar, med eget gränssnitt och egen åtkomstmodell att hålla efter.
ArgoCD passar bra när du har många applikationer och team, och när den visuella överblicken är värd den extra komponenten.
Flux: det lätta och kubernetes-nära
Flux tar en mer minimalistisk väg. Det har inget eget gränssnitt på samma sätt, utan lever helt inne i Kubernetes som en uppsättning kontroller och resurser. Det gör det lättare i fotavtryck och naturligare att hantera med samma verktyg som resten av ditt kluster. För team som vill ha allt deklarativt och hanterat genom Kubernetes egna mekanismer känns Flux ofta hemtamt.
- Styrkor: litet fotavtryck, djup integration med Kubernetes, modulär uppbyggnad där du tar bara det du behöver.
- Avvägning: mindre visuell överblick ur lådan, vilket kan göra felsökning mindre uppenbar för den som är ny.
Flux passar bra när du föredrar att hantera allt med Kubernetes-verktyg och vill hålla antalet rörliga delar nere.
Head to head: hur jag väljer
Ärligt talat löser båda samma kärnproblem väl, och du blir sällan olycklig med någotdera. Skillnaden ligger i smak och sammanhang snarare än i förmåga.
- Vill du ha en stark visuell överblick och hanterar många applikationer och team, lutar jag åt ArgoCD.
- Vill du ha minsta möjliga fotavtryck och hanterar allt med Kubernetes egna verktyg, lutar jag åt Flux.
- Är du ny på GitOps gör ArgoCD:s gränssnitt inlärningen mjukare, vilket ofta väger tungt i början.
Det viktiga är att du väljer ett och håller fast vid det. Att blanda båda i samma kluster ger sällan något annat än förvirring. Hur GitOps passar in i en samlad leveranskedja beskriver jag i min tjänst för DevOps-plattform.
Saker att tänka på oavsett verktyg
- Repostruktur: bestäm tidigt om appkod och deploy-manifest ska ligga i samma repo eller separat. Båda fungerar, men byt inte på vägen.
- Hemligheter: du vill inte ha klartext i git, så para GitOps med krypterade hemligheter eller en hemlighetshanterare.
- Behörigheter: kontrollern blir mäktig, så ge den minsta möjliga rättigheter och granska vad den får göra.
Relaterat
- CI/CD-pipelines i GitHub Actions: Mönster för Next.js, Python och Terraform
- Kubernetes för 5-personers team: När det är värt komplexiteten
- Infrastructure as Code: Terraform + Atlantis + policy as code
Vill du se hur ett GitOps-flöde satts upp i ett skarpt projekt finns exempel i min casebook.
Vill du ta det vidare?
Om din pipeline i dag pushar rakt in i klustret och du vill ha git som sanningskälla hjälper jag dig att gå över till GitOps. Hör av dig via kontaktsidan.
“Med GitOps blir att rulla tillbaka detsamma som att backa en commit.”
- Simon Axelsson
Vanliga frågor
- Är ArgoCD eller Flux bättre för ett litet team?
- För ett team nytt på GitOps gör ArgoCD:s gränssnitt inlärningen lättare. Föredrar ni att hantera allt med Kubernetes egna verktyg och hålla fotavtrycket litet, är Flux ett utmärkt val. Båda fungerar väl för små team.
- Behöver jag sluta använda min CI-pipeline med GitOps?
- Nej. Pipelinen bygger och testar fortfarande och uppdaterar manifesten i git. Skillnaden är att den inte längre deployar rakt in i klustret, den committar önskat tillstånd och låter kontrollern göra resten.
- Hur hanterar jag hemligheter i ett GitOps-flöde?
- Lägg aldrig klartext i git. Använd krypterade hemligheter som bara klustret kan låsa upp, eller hämta hemligheter från en extern hanterare vid körning. GitOps och hemlighetshantering måste lösas tillsammans.
Simon Axelsson är senior IT-konsult och grundare av SIAX Technology AB. Han hjälper nordiska företag med molninfrastruktur, dataplattformar och AI-automation.
Fler artiklar