Obs. övers.: Efter den senaste publiceringen om pull- och push-metoder i GitOps har vi sett ett intresse för denna modell generellt, men det fanns mycket fÄ publikationer om detta pÄ ryska (det finns helt enkelt inga pÄ Habr). DÀrför Àr vi glada att erbjuda er översÀttningen av en annan artikel - Àven om den har nÀstan ett Är pÄ nacken! - frÄn företaget Weaveworks, vars chef myntade termen "GitOps". Texten förklarar kÀrnan i tillvÀgagÄngssÀttet och de viktiga skillnaderna frÄn befintliga modeller.
För ett Är sedan publicerade vi . DÄ berÀttade vi hur teamet pÄ Weaveworks lanserade en SaaS helt baserad pÄ Kubernetes och utvecklade en uppsÀttning föreskrivande bÀsta praxis för distribution, hantering och övervakning i en cloud native-miljö.
Artikeln blev populÀr. Andra började prata om GitOps, publicera nya verktyg för , , , , och sÄ vidare. PÄ vÄr webbplats dök det upp publikationer och anvÀndningsfall för GitOps. Men vissa mÀnniskor hade fortfarande frÄgor. Hur skiljer sig modellen frÄn traditionell och kontinuerlig leverans ()? MÄste man anvÀnda Kubernetes?
Snart insÄg vi att det behövdes en ny beskrivning som erbjuder:
- Ett stort antal exempel och historier;
- En konkret definition av GitOps;
- En jÀmförelse med traditionell continuous delivery.
I denna artikel har vi försökt att tÀcka alla dessa Àmnen. I den kommer du att hitta en uppdaterad introduktion till GitOps och en synvinkel frÄn utvecklare och CI/CD. Vi fokuserar frÀmst pÄ Kubernetes, Àven om modellen kan generaliseras.
LÄt oss presentera: GitOps
FörestÀll dig Alice. Hon driver företaget Family Insurance, som erbjuder försÀkringspolicer för hÀlsa, bilar, fastigheter och reseförsÀkring till personer som Àr för upptagna för att navigera i kontraktens detaljer sjÀlva. Hennes verksamhet började som ett sidoprojekt nÀr Alice arbetade pÄ en bank som data scientist. En dag insÄg hon att hon kunde anvÀnda avancerade datoralgoritmer för att effektivare analysera data och skapa försÀkringspaket. Investerare finansierade projektet, och nu genererar hennes företag över 20 miljoner dollar om Äret och vÀxer snabbt. För nÀrvarande arbetar 180 personer i hennes företag pÄ olika positioner. Bland dem finns ett teknisk team som ansvarar för utveckling, underhÄll av webbplatsen, databasen och analys av kundbasen. Teamet pÄ 60 personer leds av Bob - företagets tekniska direktör.
Bobs team implementerar produktionssystem i molnet. Deras huvudsakliga applikationer körs pÄ GKE, vilket utnyttjar Kubernetes för Google Cloud. Dessutom anvÀnder de olika verktyg för datahantering och analys i sitt arbete.
Family Insurance hade inte tÀnkt att anvÀnda containrar, men blev smittade av entusiasmen för Docker. Snart upptÀckte företagets specialister att GKE gör det enkelt och sömlöst att distribuera kluster för test av nya funktioner. Jenkins lades till för CI och Quay för att organisera en containerregister, och skript skrevs för Jenkins som pushade nya containrar och konfigurationer till GKE.
En tid har gÄtt. Alice och Bob blev besvikna över prestandan hos den valda metoden och dess pÄverkan pÄ affÀrerna. Implementeringen av containrar hade inte ökat prestandan sÄ mycket som teamet hade hoppats. Ibland kraschade deploymentar, och det var oklart om kodÀndringar lÄg bakom. Det blev ocksÄ svÄrt att spÄra Àndringar i konfigurationerna. De tvingades ofta skapa en ny kluster och flytta appar dit, eftersom det var det enklaste sÀttet att rensa upp den röra som systemet hade blivit. Alice fruktade att situationen skulle försÀmras i takt med att applikationen utvecklades (dessutom var ett nytt projekt baserat pÄ maskininlÀrning pÄ vÀg att starta). Bob hade automatiserat en stor del av arbetet och förstod inte varför pipelinen fortfarande var instabil, hade dÄlig skalbarhet och ibland krÀvde manuellt ingripande.
Sedan fick de höra talas om GitOps. Denna lösning visade sig vara precis vad de behövde för att röra sig framÄt med sjÀlvförtroende.
Alice och Bob hade i flera Ă„r hört talas om arbetsflöden baserade pĂ„ Git, DevOps och infrastructure as code. Det unika med GitOps Ă€r att det inför en rad bĂ€sta metoder - kategoriska och normativa - för att implementera dessa idĂ©er i kontexten av Kubernetes. Ămnet , inklusive i .
Family Insurance beslutar att implementera GitOps. Nu har företaget en automatiserad driftsmodell som Àr kompatibel med Kubernetes och förenar hastighet med stabilitet, eftersom de:
- upptÀckte att teamets produktivitet fördubblades utan att nÄgon blev galen;
- slutade hantera skript. IstÀllet kan de nu fokusera pÄ nya funktioner och förbÀttra ingenjörsmetoder - till exempel implementera canary deployments och förbÀttra testningen;
- förbÀttrade deploymentsprocessen - den kraschar nu sÀllan;
- fick möjlighet att ÄterstÀlla deploymentar efter delvisa misslyckanden utan manuellt ingripande;
- fick större trygghet i leveranssystemen. Alice och Bob upptÀckte att de kunde dela teamet i grupper som arbetade med mikrotjÀnster parallellt;bÀsta resultatet (subjektiv Äsikt).kan göra 30-50 Àndringar i projektet varje dag genom varje grupp och prova nya tekniker.
- kan göra 30-50 Àndringar i projektet varje dag med hjÀlp av varje grupp och prova nya tekniker;
- det Àr lÀtt att attrahera nya utvecklare till projektet, som har möjlighet att rulla ut uppdateringar i produktionen via pull requests redan inom nÄgra timmar;
- genomgĂ„r lĂ€tt en granskning inom ramverket för SOC2 (för att sĂ€kerstĂ€lla att tjĂ€nsteleverantörer uppfyller kraven för sĂ€ker datastyrning; lĂ€s mer, till exempel, â anm. red.).
Vad hÀnde?
GitOps Àr tvÄ saker:
- En driftsÀttningsmodell för Kubernetes och cloud native. Den erbjuder en uppsÀttning bÀsta praxis för driftsÀttning, hantering och övervakning av kluster och applikationer som Àr paketerade i containrar. En elegant definition i form av frÄn :
- VÀgen till att skapa en utvecklarorienterad miljö för applikationshantering. Vi tillÀmpar Git-arbetsflödet bÄde för drift och utveckling. Observera att det inte bara handlar om Git push, utan om att organisera hela uppsÀttningen av CI/CD och UI/UX-verktyg.
Ett par ord om Git
Om du inte Àr bekant med versionsstyrningssystem och Git-baserade arbetsflöden, rekommenderar vi starkt att du studerar dem. Inledningsvis kan det verka som svart magi att arbeta med grenar och pull requests, men fördelarna Àr vÀrda den anstrÀngning som krÀvs. HÀr Àr för att börja.
Hur Kubernetes fungerar
I vĂ„r berĂ€ttelse vĂ€nder sig Alice och Bob till GitOps efter att ha arbetat ett tag med Kubernetes. Faktum Ă€r att GitOps Ă€r nĂ€ra kopplat till Kubernetes â det Ă€r en driftsĂ€ttningsmodell för infrastruktur och applikationer som Ă€r baserade pĂ„ Kubernetes.
Vad ger Kubernetes anvÀndare?
HÀr Àr nÄgra av de grundlÀggande funktionerna:
- I Kubernetes-modellen kan allt beskrivas i deklarativ form.
- Kubernetes API-server tar emot sÄdana deklarationer som indata och försöker kontinuerligt att fÄ klustret att matcha det tillstÄnd som beskrivs i deklarationen.
- Deklarationer Ă€r tillrĂ€ckliga för att beskriva och hantera ett brett spektrum av arbetsbelastningar â "applikationer".
- Som ett resultat sker förÀndringar i applikationen och klustret pÄ grund av:
- Àndringar i containerbilder;
- Àndringar i den deklarativa specifikationen;
- fel i miljön â till exempel, kraschade containrar.
Kubernetes utmÀrkta konvergensegenskaper
NÀr en administratör gör Àndringar i konfigurationen kommer Kubernetes-orkestratorn att tillÀmpa dem pÄ klustret tills dess tillstÄnd nÀra nya konfigurationen. Den hÀr modellen fungerar för alla Kubernetes-resurser och kan utökas med Custom Resource Definitions (CRDs). DÀrför har Kubernetes-distributioner följande fantastiska egenskaper:
- Automatisering: Kubernetes-uppdateringar tillhandahÄller en mekanism för att automatisera processen för att tillÀmpa Àndringar pÄ ett korrekt och tidsenligt sÀtt.
- Konvergens: Kubernetes kommer att fortsÀtta försöka uppdateringar tills det lyckas.
- Idempotens: upprepade tillÀmpningar av konvergens ger samma resultat.
- Determinism: med tillrÀckliga resurser beror tillstÄndet för den uppdaterade klustret endast pÄ det önskade tillstÄndet.
Hur GitOps fungerar
Vi har lÀrt oss tillrÀckligt om Kubernetes för att förklara principerna bakom GitOps.
LĂ„t oss Ă„tervĂ€nda till Family Insurance-team som arbetar med mikrotjĂ€nster. Vad brukar de vanligtvis syssla med? Titta pĂ„ listan nedan (om nĂ„gra punkter verkar mĂ€rkliga eller okĂ€nda â var vĂ€nlig vĂ€nta med kritiken och stanna kvar hos oss). Detta Ă€r bara exempel pĂ„ arbetsflöden baserade pĂ„ Jenkins. Det finns ocksĂ„ mĂ„nga andra processer nĂ€r man arbetar med andra verktyg.
Det viktigaste Àr att vi ser att varje uppdatering slutar med förÀndringar i konfigurationsfiler och Git-repositorier. Dessa förÀndringar i Git leder till att 'GitOps-operatören' uppdaterar klustret:
1. Arbetsflöde: 'Jenkins-bygge â master-gren».
Att göra-lista:
- Jenkins push'ar taggade bilder till Quay;
- Jenkins push'ar konfig och Helm-diagram till master-lagringsbunken;
- Molnfunktionen kopierar konfig och diagram frÄn master-lagringsbunken till Git-repositoriet master;
- GitOps-operatören uppdaterar klustret.
2. Jenkins-bygge â release- eller hotfix-gren:
- Jenkins push'ar otaggade bilder till Quay;
- Jenkins push'ar konfig och Helm-diagram till staging-lagringsbunken;
- Molnfunktionen kopierar konfig och diagram frÄn staging-lagringsbunken till Git-repositoriet staging;
- GitOps-operatören uppdaterar klustret.
3. Jenkins-bygge â develop- eller feature-gren:
- Jenkins push'ar otaggade bilder till Quay;
- Jenkins push'ar konfig och Helm-diagram till develop-lagringsbunken;
- Molnfunktionen kopierar konfig och diagram frÄn develop-lagringsbunken till Git-repositoriet develop;
- GitOps-operatören uppdaterar klustret.
4. LĂ€gg till en ny klient:
- Managern eller administratören (LCM/ops) anropar Gradle för den initiala distributionen och konfigurationen av nÀtverkslastbalanserare (NLB);
- LCM/ops committar ny konfig för att förbereda distributionen för uppdateringar;
- GitOps-operatören uppdaterar klustret.
Kort beskrivning av GitOps
- Beskriv det önskade tillstÄndet för hela systemet med hjÀlp av deklarativa specifikationer för varje miljö (i vÄr historia definierar Bob-teamet hela systemkonfigurationen i Git).
- Git-repositoriet Àr den enda sanningskÀllan nÀr det gÀller det önskade tillstÄndet för hela systemet.
- Alla Àndringar till det önskade tillstÄndet görs genom commits i Git.
- Alla önskade parametrar för klustret Ă€r ocksĂ„ observerbara i klustret sjĂ€lvt. PĂ„ sĂ„ sĂ€tt kan vi avgöra om (konvergerar, â körning av den testade playbooken,) eller om de skiljer sig (divergerar, diverge) det önskade och observerade tillstĂ„ndet.
- Om det önskade och observerade tillstÄndet skiljer sig Ät dÄ:
- Det finns en konvergensmekanism som förr eller senare automatiskt synkroniserar det mÄlade och observerade tillstÄndet. Inom klustret hanteras detta av Kubernetes.
- Processen startar omedelbart med meddelandet "change committed".
- Efter en viss konfigurerbar tidsperiod kan ett meddelande "diff" skickas om tillstÄnden skiljer sig Ät.
- SÄledes orsakar alla commits i Git verifierbara och idempotenta uppdateringar i klustret.
- Rollback Àr en konvergens till ett tidigare önskat tillstÄnd.
- Konvergens Àr slutgiltig. Tecken pÄ att den har intrÀffat inkluderar:
- Ingen "diff"-meddelanden under en viss tidsperiod.
- Ett "converged"-meddelande (t.ex. webhook, Git writeback-hÀndelse).
Vad Àr divergens?
Vi upprepar: alla önskade egenskaper för klustret mÄste vara observerbara i klustret sjÀlvt..
NÄgra exempel pÄ divergens:
- Ăndringar i konfigurationsfilen pĂ„ grund av sammanslagning av grenar i Git.
- Ăndring i konfigurationsfilen pĂ„ grund av en commit i Git som gjorts av en GUI-klient.
- Flera Àndringar i önskat tillstÄnd pÄ grund av PR i Git följt av byggande av containerbild och Àndringar i konfigurationen.
- Ăndring av klustrets tillstĂ„nd pĂ„ grund av ett fel, resurskonflikt som leder till "dĂ„ligt beteende", eller helt enkelt en slumpmĂ€ssig avvikelse frĂ„n det ursprungliga tillstĂ„ndet.
Vad Àr en konvergensmekanism?
NÄgra exempel:
- För containrar och kluster tillhandahÄller konvergensmekanismen Kubernetes.
- Samma mekanism kan anvÀndas för att hantera applikationer och konstruktioner baserade pÄ Kubernetes (t.ex. Istio och Kubeflow).
- En mekanism för att hantera arbetssamarbetet mellan Kubernetes, bildförrÄd och Git ger , som Àr en del av .
- För grundmaskiner mÄste konvergensmekanismen vara deklarativ och autonom. UtifrÄn vÄr erfarenhet kan vi sÀga att den ligger nÀrmast denna definition, men krÀver ÀndÄ mÀnsklig kontroll. I detta avseende utvidgar GitOps traditionerna kring Infrastructure as Code.
GitOps kombinerar Git med den utmÀrkta konvergensmekanismen i Kubernetes och erbjuder en modell för drift.
GitOps tillÄter oss att pÄstÄ: bara de system som kan beskrivas och observeras Àr föremÄl för automatisering och kontroll.
GitOps Àr avsett för hela cloud native-stacken (t.ex. Terraform osv.)
GitOps handlar inte bara om Kubernetes. Vi vill att hela systemet ska styras deklarativt och anvĂ€nda konvergens. Med hela systemet menar vi en uppsĂ€ttning miljöer som arbetar med Kubernetes â till exempel 'dev cluster 1', 'produktion' osv. I varje miljö ingĂ„r maskiner, kluster, applikationer samt grĂ€nssnitt för externa tjĂ€nster som tillhandahĂ„ller data, övervakning etc.
Observera hur viktigt Terraform Àr för problematiken kring bootstrapping. Kubernetes mÄste vara distribuerat nÄgonstans, och anvÀndningen av Terraform innebÀr att vi kan tillÀmpa samma arbetsflöden GitOps för att skapa det styrskikt som ligger till grund för Kubernetes och applikationerna. Det Àr en anvÀndbar bÀsta praxis.
Stort fokus lÀggs pÄ tillÀmpningen av GitOps-koncepten pÄ lagren över Kubernetes. För nÀrvarande finns det GitOps-lösningar för Istio, Helm, Ksonnet, OpenFaaS och Kubeflow, samt t.ex. för Pulumi, som skapar ett lager för utveckling av applikationer under cloud native.
Kubernetes CI/CD: JÀmförelse mellan GitOps och andra metoder
Som nÀmnts Àr GitOps tvÄ saker:
- En driftsmodell för Kubernetes och cloud native, som beskrivits ovan.
- VÀgen till att organisera en utvecklarorienterad miljö för att hantera applikationer.
För mÄnga Àr GitOps först och frÀmst en arbetsprocess baserad pÄ Git pushar. Vi gillar det ocksÄ. Men det Àr inte allt: lÄt oss nu titta pÄ CI/CD-pipelines.
GitOps sÀkerstÀller kontinuerlig distribution (CD) för Kubernetes.
GitOps erbjuder en mekanism för kontinuerlig distribution, vilket eliminerar behovet av separata 'distributionshanteringssystem'. Allt arbete görs av Kubernetes.
- Uppdatering av applikationen krÀver en uppdatering i Git. Detta Àr en transaktionell uppdatering till det önskade tillstÄndet. "Distribution" utförs sedan inom klustret av Kubernetes baserat pÄ den uppdaterade beskrivningen.
- PÄ grund av Kubernetes specifika arbetsmetod Àr dessa uppdateringar konvergerande. Detta sÀkerstÀller en mekanism för kontinuerlig distribution dÀr alla uppdateringar Àr atomÀra.
- AnmÀrkning: erbjuder en GitOps-operator som integrerar Git och Kubernetes och möjliggör CD genom att samordna det önskade och aktuella tillstÄndet för klustret.
Utan kubectl och skript
Det Àr bÀst att undvika att anvÀnda kubectl för att uppdatera klustret, sÀrskilt skript för att gruppera kubectl-kommandon. IstÀllet kan anvÀndaren uppdatera sitt Kubernetes-kluster via Git med hjÀlp av en GitOps-pipeline.
Fördelarna inkluderar:
- Korrekthet. En grupp uppdateringar kan tillÀmpas, konvergera och slutligen valideras, vilket för oss nÀrmare mÄlet med atomÀr distribution. à andra sidan ger anvÀndning av skript inga garantier för konvergens (mer om detta nedan).
- SÀkerhet. Kelsey Hightower: "BegrÀnsa Ätkomsten till Kubernetes-klustret till automatiseringsverktyg och administratörer vars uppgift Àr att underhÄlla eller felsöka det." Se ocksÄ om sÀkerhet och efterlevnad av tekniska krav samt genom att stjÀla inloggningsuppgifter frÄn ett slarvigt skrivet Jenkins-skript.
- AnvÀndarupplevelse. Kubectl blottar mekaniken i Kubernetes objektmodell, vilken Àr ganska komplex. Idealiskt sett bör anvÀndare interagera med systemet pÄ en högre abstraktionsnivÄ. HÀr Äterknyter jag till Kelsey och rekommenderar att titta pÄ .
Skillnaden mellan CI och CD
GitOps förbÀttrar befintliga CI/CD-modeller.
Moderna CI-servrar Àr verktyg för orkestrering. Specifikt Àr det ett verktyg för att orkestrera CI-pipelines. De inkluderar bygg, testning, sammanslagning till huvudgrenen etc. CI-servrar automatiserar hanteringen av komplexa flerstegs-pipelines. En vanlig frestelse Àr att skapa ett skript för en uppsÀttning Kubernetes-uppdateringar och köra det som en del av pipelinen för att trycka förÀndringar till klustret. Verkligen gör mÄnga specialister sÄ. Men detta Àr suboptimalt, och hÀr Àr varför.
CI bör anvÀndas för att göra uppdateringar i trunk, och Kubernetes-klustret bör Àndra sig baserat pÄ dessa uppdateringar för att hantera CD "internt". Vi kallar detta , till skillnad frÄn CI push-modellen. CD Àr en del av runtime-orchestration.
Varför CI-servrar inte bör utföra CD genom direkta uppdateringar i Kubernetes
AnvÀnd inte CI-servern för att orkestrera direkta uppdateringar i Kubernetes som ett set av CI-jobb. Det Àr ett anti-mönster som vi i vÄr blogg.
LÄt oss ÄtervÀnda till Alice och Bob.
Vilka problem stötte de pÄ? Bobs CI-server tillÀmpar Àndringar pÄ klustret, men om den kraschar under processen kommer Bob inte att veta vilket tillstÄnd klustret Àr i (eller ska vara i) och hur det ska fixas. Detsamma gÀller om det gÄr bra.
Anta att Bobs team byggde en ny bild och sedan patchade sina deployment för att distribuera bilden (allt detta frÄn CI-pipelinen).
Om bilden byggs korrekt men pipelinen kraschar mÄste teamet ta reda pÄ:
- Distribuerades uppdateringen?
- Kör vi en ny byggnad? Kommer detta att leda till oönskade bieffekter - med risken att fÄ tvÄ byggnader av samma oförÀndrade bild?
- Ska vi vÀnta pÄ nÀsta uppdatering innan vi kör byggnaden?
- Vad gick egentligen fel? Vilka steg behöver upprepas (och vilka kan upprepas sÀkert)?
Att organisera en Git-baserad arbetsprocess garanterar inte att Bobs team inte upplever dessa problem. De kan fortfarande göra misstag med push av commit, med taggen eller nÄgot annat parameter; men denna metod Àr ÀndÄ mycket nÀrmare en tydlig all-eller-inget.
Sammanfattningsvis, hÀr Àr varför CI-servrar inte bör syssla med CD:
- Uppdateringsskripten Àr inte alltid deterministiska; det Àr lÀtt att göra misstag.
- CI-servrar konvergerar inte till en deklarativ modell av klustret.
- Det Àr svÄrt att garantera idempotens. AnvÀndare mÄste förstÄ den djupa semantiken i systemet.
- Det Àr svÄrare att ÄterhÀmta sig efter en partiell fel.
Obs om Helm: om du vill anvÀnda Helm rekommenderar vi att kombinera det med en GitOps-operator, som . Detta hjÀlper till att sÀkerstÀlla konvergens. Helm i sig Àr varken deterministiskt eller atomÀrt.
GitOps som det bÀsta sÀttet att genomföra Continuous Delivery för Kubernetes
Alices och Bobs team implementerar GitOps och upptÀcker att det blivit mycket enklare att arbeta med programvaruprodukter, upprÀtthÄlla hög prestanda och stabilitet. LÄt oss avsluta denna artikel med illustrationer som visar hur deras nya tillvÀgagÄngssÀtt ser ut. Observera att vi frÀmst pratar om applikationer och tjÀnster, men GitOps kan anvÀndas för att hantera hela plattformen.
Driftsmodell för Kubernetes
Titta pÄ diagrammet nedan. Det representerar Git och en containerbilds lagring som gemensamma resurser för tvÄ orkestrerade livscykler:
- En pipeline för kontinuerlig integration som lÀser och skriver filer till Git och kan uppdatera containerbildens repository.
- En Runtime GitOps-pipeline som kombinerar distribution med hantering och övervakning. Den lÀser och skriver filer till Git och kan ladda upp containerbilder.
Vad Àr de viktigaste slutsatserna?
- à tskillnad av problem: Observera att bÄda pipelinerna kan utbyta data genom att bara uppdatera Git eller bildrepositoryt. Med andra ord, det finns en brandvÀgg mellan CI och runtime-miljön. Vi kallar det "immutathetsbrandvÀggen" (immutability firewall), eftersom alla uppdateringar av repositoryn skapar nya versioner. För mer information om detta Àmne, vÀnligen se sidorna 72-87. .
- Valfri CI- och Git-server kan anvÀndas: GitOps fungerar med alla komponenter. Du kan fortsÀtta anvÀnda dina favorit CI- och Git-servrar, bildrepositories och testuppsÀttningar. NÀstan alla andra verktyg för Continuous Delivery pÄ marknaden krÀver en egen CI-/Git-server eller bildrepository. Detta kan bli en begrÀnsning i utvecklingen av cloud native. I fallet GitOps kan du anvÀnda vÀlbekanta verktyg.
- HÀndelser som integrationsverktyg: NÀr data i Git uppdateras, meddelar Weave Flux (eller Weave Cloud-operatören) runtime om detta. Varje gÄng Kubernetes tar emot en uppsÀttning Àndringar, uppdateras Git. Detta ger en enkel integrationsmodell för att organisera arbetsflöden för GitOps, som visas nedan.
Slutsats
GitOps ger viktiga garantier för uppdateringar som varje modern CI/CD-verktyg behöver:
- automatisering;
- konvergens;
- idempotens;
- determinism.
Det Àr viktigt eftersom det erbjuder en driftsmodell för utvecklare inom cloud native.
- Traditionella verktyg för systemhantering och övervakning Ă€r kopplade till driftteam som arbetar inom ramen för runbook. (ett set av rutinprocedurer och operationer â anm. övers.), kopplad till en specifik deployment.
- Inom hantering av cloud native-system Àr övervakningsverktygen det bÀsta sÀttet att utvÀrdera resultatet av deployment, sÄ att utvecklarteamet kan reagera snabbt.
FörestÀll dig mÄnga kluster spridda över olika moln och mÄnga tjÀnster med sina egna team och deploymentplaner. GitOps erbjuder en skalenlig och oförÀndrad modell för att hantera denna överflöd.
P.S. frÄn översÀttaren
LÀs Àven i vÄr blogg:
- «»;
- «»;
- «».
Endast registrerade anvÀndare kan delta i omröstningen. , tack.
Visste du om GitOps innan dessa tvÄ översÀttningar pÄ Habré?
Ja, jag visste det.
Bara ytligt.
Ingen
35 anvÀndare röstade. 10 anvÀndare avstod.
KĂ€lla: habr.com
