MĂ€rkus tĂ”lke kohta.: PĂ€rast hiljutist avaldust GitOpsi pull- ja push-meetodite kohta nĂ€gime huvi selle mudeli vastu ĂŒldiselt, kuid venekeelseid avaldusi sellel teemal oli ÀÀrmiselt vĂ€he (HabrĂ©s pole neid praktiliselt ĂŒldse). SeetĂ”ttu oleme rÔÔmsad, et saame teile pakkuda tĂ”lget teisest artiklist â olgu see vĂ”i peaaegu aastatagune! â Weaveworksilt, kelle juht mĂ”tles vĂ€lja termini âGitOpsâ. Tekst selgitab lĂ€henemise olemust ja peamisi erinevusi juba olemasolevatest.
Aasta tagasi avaldasime . Sel ajal rÀÀkisime, kuidas Weaveworksi meeskond kÀivitas tÀielikult Kubernetesel pÔhineva SaaS-i ja töötas vÀlja hulga parimaid praktikaid juurutamiseks, haldamiseks ja monitoorimiseks cloud native keskkonnas.
Artikkel osutus populaarseks. Teised inimesed hakkasid rÀÀkima GitOpsist, hakati avaldama uusi tööriistu , , , , jne. Meie saidile ilmus publikatsioone ja GitOpsi kasutusjuhtumeid. Kuid mĂ”nedel inimestel jĂ€i endiselt kĂŒsimusi. Kuidas see mudel erineb traditsioonilisest ja pidevast tarnimist ()? Kas Kubernetes on vajalik?
Varsti mÔistsime, et on vaja uut mÀÀratlust, mis pakuks:
- Suure hulga nÀiteid ja lugusid;
- Konkreetsed mÀÀratlust GitOpsile;
- VÔrdlus traditsioonilise continuous delivery'ga.
Selles artiklis pĂŒĂŒdsime katta kĂ”ik need teemad. Siit leiate vĂ€rskendatud sissejuhatuse GitOpsi ja arendajate ning CI/CD vaatepildi sellele. Keskendume peamiselt Kubernetesile, kuigi mudelit on tĂ€iesti vĂ”imalik ĂŒldistada.
Tere tulemast: GitOps
Kujutage ette Alisat. Ta juhib ettevĂ”tet Family Insurance, mis pakub tervise-, auto-, kinnisvara- ja reisikindlustuse poliise inimestele, kes on liiga hĂ”ivatud, et ise lepingute nĂŒanssidega vaeva nĂ€ha. Tema Ă€ri alustas kĂ”rvalprojekti raames, kui Alisa töötas pangas andmete teadlasena. Ăhel hetkel taipas ta, et saab kasutada arenenud arvuti algoritme, et andmete analĂŒĂŒsi ja kindlustuspakkumiste koostamise efektiivsust suurendada. Investorid rahastasid projekti ja nĂŒĂŒd toob tema ettevĂ”te ĂŒle 20 miljoni dollari aastas ning kasvab kiiresti. Praegu töötab selles erinevates ametites 180 inimest. Nende seas on tehnoloogia meeskond, mis tegeleb veebisaidi, andmebaasi arendamise ja kliendibaasi analĂŒĂŒsiga. 60-liikmelist meeskonda juhib Bob â ettevĂ”tte tehnoloogiadirektor.
Bobi meeskond juurutab tootmisĂŒsteeme pilves. Nende peamised rakendused töötavad GKE-l, kasutades Google Cloudi Kubernetesest saadavaid eeliseid. Lisaks kasutavad nad oma töös erinevaid andmete ja analĂŒĂŒtika tööriistu.
Family Insurance ei plaaninud konteinerite kasutamist, kuid nakatus Dockerist tuleneva entusiasmiga. Varsti avastas ettevĂ”tte spetsialistid, et GKE vĂ”imaldab klastreid uute funktsioonide testimiseks lihtsasti ja mugavalt juurutada. Lisati Jenkins CI-sks ja Quay konteineriregistri korraldamiseks, kirjutati Jenkinsile skriptid, mis pushâivad uusi konteinerite ja konfiguratsioonide GKE-sse.
Möödus mĂ”nda aega. Alice ja Bob olid pettunud valitud lĂ€henemise jĂ”udluses ja selle mĂ”jus Ă€rile. Konteinerite kasutuselevĂ”tt ei suurendanud jĂ”udlust nii palju, kui meeskond lootsis. MĂ”nikord purunesid juurutamised ja ei olnud selge, kas sĂŒĂŒdi olid koodimuudatused. Samuti oli keeruline jĂ€lgida konfiguratsioonide muudatusi. Tihti tuli luua uus klaster ja kolida sinna rakendused, kuna see oli kĂ”ige lihtsam viis olukorra korrastamiseks, mille sĂŒsteem oli muutunud. Alice kartis, et olukord halveneb rakenduse arengu kĂ€igus (lisaks tekkis uus projekt masinĂ”ppe pĂ”hjal). Bob automatiseeris suure osa tööst ja ei saanud aru, miks torustik endiselt stabiilne ei olnud, halvasti skaleerus ja korduvaid kĂ€sitöötunde nĂ”udis?
Siis kuulsid nad GitOpsist. See lahendus osutus just selliseks, mida nad vajasid kindlaks edasiviimiseks.
Alice ja Bob olid juba pikka aega kuulnud Git-pĂ”histest töövoogudest, DevOpsist ja infrastruktuurist kui koodist. GitOpsi ainulaadsus seisneb selles, et see toob kaasa rida parimaid praktikaid â kategoorilisi ja regulatiivseid â nende ideede elluviimiseks Kubernetes kontekstis. See teema , sealhulgas .
Family Insurance otsustab GitOpsi rakendada. NĂŒĂŒd on ettevĂ”ttel automatiseeritud kĂ€itamisring mudel, mis on ĂŒhilduv Kubernetesiga ja ĂŒhendab kiirus koos stabiilsusega, kuna nad:
- avastasid, et meeskonna tootlikkus on kahekordistunud ja keegi ei kaota sellega pead;
- on lĂ”petanud skriptide haldamise. Selle asemel saavad nad nĂŒĂŒd keskenduda uutele funktsioonidele ja tĂ€iustada insenerimeetodeid â nĂ€iteks rakendada kanarbikuvĂ”tteid ja parandada testimist;
- on tĂ€iustanud juurutamisprotsessi â nĂŒĂŒd puruneb see harva;
- on saanud vÔimaluse taastada juurutamised osaliste rikete korral ilma kÀsitööte sekkumiseta;
- on omandanud bilotkasuurema kindluse tarnesĂŒsteemides. Alice ja Bob avastasid, et meeskonna saab jagada rĂŒhmadesse, mis tegelevad mikroteenustega ja töötavad paralleelselt;
- saavad iga rĂŒhma jĂ”upingutuste abil projekti lisada 30-50 muudatust iga pĂ€ev ja proovida uusi tehnikaid;
- kergesti kaasavad projekti uusi arendajaid, kellel on vÔimalik teha muutusi tootmine keskkonnas pull request'ide abil juba mÔne tunni jooksul;
- kergesti lĂ€bivad SOC2 auditi (teenusepakkujate vastavuse kontrollimine andmete turvalise haldamise nĂ”uetele; loe lĂ€hemalt nĂ€iteks â toimetaja mĂ€rkus).
Mis juhtus?
GitOps â see on kaks asja:
- Kubernetes'e ja pilvepĂ”hine tegevusmudel. See pakub parimate praktikate kogumit konteinerites kokku kogutud klastrite ja rakenduste juurutamiseks, haldamiseks ja jĂ€lgimiseks. Elegantne mÀÀratlemine ĂŒhe slaidi kujul alates :
- Teekond arendajate keskse keskkonna loomiseks rakenduste haldamiseks. Me rakendame Git töövooge nii tegevuses kui arenduses. Pange tÀhele, et see ei tÀhenda lihtsalt Git push'i, vaid kogu CI/CD ja UI/UX tööriistade kompleksi korraldamist.
MÔned sÔnad Gitist
Kui te pole tuttav versioonihalduse sĂŒsteemide ja Git-pĂ”histe töövoogudega, soovitame tungivalt neid uurida. Alguses vĂ”ib harjutamine haru ja pull request'idega tunduda musta maagiana, kuid eelised on kulutatud pingutusi vÀÀrt. Siin on alguseks.
Kuidas Kubernetes töötab
Meie loos pöördusid Alice ja Bob GitOps'i poole, olles töötanud Kubernetes'ega mĂ”nda aega. TĂ”epoolest, GitOps on tihedalt seotud Kubernetes'ega â see on tegevusmudel Kubernetes'e pĂ”histe infrastruktuuride ja rakenduste jaoks.
Mida Kubernetes kasutajatele annab?
Siin on mÔned peamised omadused:
- Kubernetes'e mudelis on kÔik vÔimalik kirjeldada deklareerivas vormis.
- Kubernetes'e API-server aktsepteerib sellist deklareerimist sisendina ja seejĂ€rel ĂŒritab pidevalt tuua klastrit deklareerimisega kirja pandud olekusse.
- Deklareeringud on piisavad, et kirjeldada ja hallata suurt hulka töökoormusi â "rakendusi".
- Seega toimub rakenduse ja klastrite muutmine jÀrgmiste tÔttu:
- muutused konteineri piltides;
- muutused deklareerivas spetsifikatsioonis;
- keskkonna vigade tĂ”ttu â nĂ€iteks konteinerite krahh.
Kubernetes'e suurepÀrased konvergentsivÔimed
Kui administraator teeb muudatusi konfiguratsioonis, rakendab Kubernetes'e orkestrator neid klastrisse seni kuni selle olek lÀheneb uuele konfiguratsioonile. See mudel töötab igasuguste Kubernetes'i ressursside jaoks ja seda saab laiendada Custom Resource Definitions (CRD) abil. SeetÔttu omavad Kubernetes'i deploymid jÀrgmisi suurepÀraseid omadusi:
- Automatiseerimine: Kubernetes'e uuendused pakuvad mehhanismi muudatuste rakendamise protsessi automatiseerimiseks korrektselt ja Ôigeaegselt.
- Konvergents: Kubernetes jÀtkab uuenduste proovimist, kuni see Ônnestub.
- Idempotentsus: korduvad konvergentsi rakendused toovad sama tulemuse.
- Determinism: piisava ressursside olemasolu korral sÔltub uuendatud klastrite olek ainult soovitud olekust.
Kuidas GitOps töötab
Oleme piisavalt Ôppinud Kubernetes'est, et selgitada GitOps'i töö pÔhimÔtteid.
Naaseme peretihedate kindlustusmeeskondade juurde, mis on seotud mikroteenustega. Mida nad tavaliselt teevad? Vaadake allolevat nimekirja (kui mĂ”ni punkt tundub kummaline vĂ”i tundmatu â palun pidage meeles kriitikat ja jÀÀge meie juurde). Need on lihtsalt Jenkins'i pĂ”hised töövood. On ka palju teisi protsesse erinevate tööriistade kasutamisel.
Peamine on see, et me nĂ€eme, et iga uuendus lĂ”ppeb muudatuste tegemisega konfiguratsioonifailides ja Git'i hoidlates. Need muudatused Git'is pĂ”hjustavad, et âGitOps operaatorâ uuendab klastrit:
1. Töövoog: âJenkins'i ehitus â master haru».
Ălesannete nimekiri:
- Jenkins saadab sildiga pildid Quay'sse;
- Jenkins saadab konfi ja Helm'i graafikud master-hoidla Àmbrisse;
- Pilvefunktsioon kopeerib konfi ja graafikud master-hoidla Àmbrist Git'i hoidla masterisse;
- GitOps operaator uuendab klastrit.
2. Jenkins'i ehitus â release vĂ”i hotfix haru:
- Jenkins saadab sildita pilte Quay'sse;
- Jenkins saadab konfi ja Helm'i graafikud staging-hoidla Àmbrisse;
- Pilvefunktsioon kopeerib konfi ja graafikud staging-hoidla Àmbrist Git'i hoidla stagingusse;
- GitOps operaator uuendab klastrit.
3. Jenkins'i ehitus â develop vĂ”i feature haru:
- Jenkins saadab sildita pilte Quay'sse;
- Jenkins saadab konfi ja Helm'i graafikud develop-hoidla Àmbrisse;
- Pilvefunktsioon kopeerib konfi ja graafikud develop-hoidla Àmbrist Git'i hoidla developisse;
- GitOps operaator uuendab klastrit.
4. Uue kliendi lisamine:
- Juhendaja vÔi administraator (LCM/ops) kutsub Gradle'i vÀlja esialgseks juurutamiseks ja vÔrgu koormuse tasakaalustajate (NLB) seadistamiseks;
- LCM/ops kohandab uut konfi, et valmistada juurutamine uuendusteks;
- GitOps operaator uuendab klastrit.
GitOps'i lĂŒhike ĂŒlevaade
- Kirjeldage soovitud sĂŒsteemi seisu, kasutades deklareerivaid spetsifikatsioone iga keskkonna jaoks (meie loos mÀÀrab Bobi meeskond kogu sĂŒsteemi konfiguratsiooni Git'is).
- Git-repositoorium on ainus tĂ”e allikas kogu sĂŒsteemi soovitud seisu kohta.
- KÔik muudatused soovitud seisu saavutatakse Git'i commit'ide kaudu.
- KĂ”ik soovitud klastriparameetrid on samuti jĂ€lgitavad klastris. Seega saame mÀÀrata, kas need on ĂŒhtsed (konvergents), converge) vĂ”i erinevad (divergens) diverge) soovitud ja jĂ€lgitava olukorra vahel.
- Kui soovitud ja jÀlgitav seis on erinevad, siis:
- Eksisteerib konvergentsimehhanism, mis lĂ”puks automaatselt sĂŒnkroniseerib siht- ja jĂ€lgitavad olekud. Klastris tegeleb sellega Kubernetes.
- Protsess algatatakse kohe koos teatega "muutus kinnitatud".
- MÔne konfigureeritava ajavahemiku pÀrast vÔib saata teate "diff", kui olekud on erinevad.
- Seega kutsuvad kÔik commit'id Git'is esile kontrollitavad ja idempotentsed uuendused klastris.
- Tagasiminek on konvergents varasemasse soovitud seisu.
- Konvergents on lÔplik. Selle toimumise tÔenditeks on:
- Teatavate ajavahemike jooksul "diff" teadete puudumine.
- Teade "konvergeeritud" (nĂ€iteks webhook, Git'i kirjutamise ĂŒritus).
Mis on divergents?
Korrake veel kord: kÔik soovitud klastriparameetrid peaksid olema jÀlgitavad klastris.
MÔned divergentsi nÀited:
- Konfigureerimisfaili muutmine, mis tuleneb Git'i harude ĂŒhendamisest.
- Konfigureerimisfaili muutmine, mis tuleneb Git'i commit'ist, tehtud GUI-klientide kaudu.
- Mitmed muudatused soovitud seisus Git'i PR kaudu koos konteineripildi koostamise ja konfi muutustega.
- Klastri oleku muutmine vea, ressursside konflikti tÔttu, mis pÔhjustab "halba kÀitumist", vÔi lihtsalt juhuslik kÔrvalekalle algsest seisust.
Mis on konvergentsimehhanism?
MÔned nÀited:
- Konteinerite ja klastrite jaoks pakub konvergentsimehhanismi Kubernetes.
- Sama mehhanismi saab kasutada rakenduste ja Kubernetes'e alusel ehitatud struktuuride haldamiseks (nÀiteks Istio ja Kubeflow).
- Mehhanism tööprotsesside haldamiseks Kubernetes'i, pildirepositooriumide ja Git'i vahel pakub , mis on osa .
- Tavamasinate puhul peab konvergentsimehhanism olema deklareeritav ja autonoomne. Oma kogemustest vÔime öelda, et on sellele mÀÀratlusele kÔige lÀhemal, kuid siiski vajab inimkontrolli. Sel mÔeldes laiendab GitOps traditsioone Infrastructure as Code.
GitOps ĂŒhendab Giti suurepĂ€rase Kubernetes'i konvergentsimehhanismiga, pakkudes mudelit töösse rakendamiseks.
GitOps lubab meil vĂ€ita: automatisatsioon ja kontroll on vĂ”imalik vaid nende sĂŒsteemide osas, mida saab kirjeldada ja jĂ€lgida.
GitOps on mÔeldud kogu cloud native-virnale (nt Terraform jne)
GitOps ei tĂ€henda ainult Kubernetes'i. Soovime, et kogu sĂŒsteem oleks deklareeritavalt hallatav ja kasutaks konvergentsi. Kogu sĂŒsteem hĂ”lmab erinevaid keskkondi, mis töötavad Kubernetes'ega â nĂ€iteks "dev cluster 1", "production" jms. Iga keskkond sisaldab masinaid, klustreid, rakendusi ja ka liideseid vĂ€liste teenustega, mis tagavad andmed, jĂ€lgimise jne.
Pange tÀhele, kui oluline on Terraform bootstrapping-probleemi puhul. Kubernetes peab kuskil olema juurutatud ja Terraform'i kasutamine tÀhendab, et saame rakendada samu GitOps'i tööprotsesse Kubernetesi ja rakenduste aluskihtide loomiseks. See on kasulik parim praktika.
Suur rĂ”hk on asetatud GitOps'i kontseptsioonide rakendamisele Kubernetes'ele jĂ€rgnevatel kihtidel. Praegu on olemas GitOps-tĂŒĂŒpi lahendusi Istio, Helm, Ksonnet, OpenFaaS ja Kubeflow, samuti nĂ€iteks Pulumi jaoks, mis loovad arendusse kihti cloud native'i jaoks.
Kubernetes CI/CD: GitOps'i vÔrdlemine teiste lÀhenemistega
Nagu mainitud, on GitOps kaks asja:
- Töömudel Kubernetes'i ja cloud native'i jaoks, nagu eelpool kirjeldatud.
- Teekond arendajate keskse keskkonna loomiseks rakenduste haldamiseks.
Paljude jaoks on GitOps eeskĂ€tt tööprotsess, mis pĂ”hineb Git push'idel. Meile meeldib see samuti. Kuid see ei ole kĂ”ik: vaatame nĂŒĂŒd CI/CD-toru.
GitOps tagab pideva juurutamise (CD) Kubernetes'ile
GitOps pakub pideva juurutamise mehhanismi, mis kĂ”rvaldab vajaduse eraldi 'juurutamissĂŒsteemide' jĂ€rele. Kogu töö teeb teie eest Kubernetes.
- Rakenduse vĂ€rskendamine nĂ”uab vĂ€rskendust Gitâis. See on tehinguline vĂ€rskendus soovitud olekusse. "KasutuselevĂ”tt" toimub seejĂ€rel klastris Kubernetesâe enda poolt vĂ€rskendatud kirjelduse alusel.
- Kubernetesâe töö eripĂ€ra tĂ”ttu on need vĂ€rskendused konvergeerivad. See tagab mehhanismi pidevaks kasutuselevĂ”tuks, kus kĂ”ik vĂ€rskendused on aatomilised.
- MĂ€rkus: pakub GitOps operaatorit, mis integreerib Gitâi ja Kubernetesâe, vĂ”imaldades teostada CD-d soovitud ja praeguse klastriseisundi vastavusse viimise kaudu.
Ilma kubectlâi ja skripte.
Tuleb vĂ€ltida Kubectlâi kasutamist klastrite vĂ€rskendamiseks, eriti skripte kubectlâi kĂ€skude rĂŒhmitamiseks. Selle asemel saab kasutaja GitOps torustiku abil vĂ€rskendada oma Kubernetesâe klastrit lĂ€bi Giti.
Eelised on jÀrgmised:
- Ăigsus.. Uuendusgruppi saab rakendada, konvergeerida ja lĂ”puks valideerida, mis viib meid lĂ€hemale aatomilise kasutuselevĂ”tu eesmĂ€rgile. Vastupidiselt sellele ei anna skriptide kasutamine mingeid konvergentsi garantiisid (pĂ”hjalikumalt allpool).
- Turvalisus. Kelsey Hightower: "Piirake juurdepÀÀsu Kubernetesâe klastrile automatiseerimise tööriistadele ja administraatoritele, kelle kohustuseks on selle tĂ”rkeotsing vĂ”i töökindluse tagamine." Vaata ka turvalisusest ja tehniliste nĂ”uete jĂ€rgimisest, samuti kontode andmete varguse kaudu halvasti koostatud Jenkinsâi skripti kaudu.
- Kasutajakogemus. Kubectl paljastab Kubernetesâe objekti mudeli mehhanika, mis on ĂŒsna keeruline. Ideaalis peaksid kasutajad sĂŒsteemiga suhtlema kĂ”rgemal abstraktsiooni tasemel. Siinkohal viitan taas Kelseyâle ja soovitan vaadata .
Erinevus CI ja CD vahel.
GitOps tÀiustab olemasolevaid CI/CD mudeleid.
Kaasaegne CI-server on orkestreerimise tööriist. EelkĂ”ige on see tööriist CI torustike orkestreerimiseks. Need hĂ”lmavad endas ehitamist, testimist, trunkâiga sulandumist jne. CI-serverid automatiseerivad keeruliste mitmeastmeliste torustike haldamist. Levinud kiusatus on luua skript Kubernetesâe vĂ€rskenduste kogumiseks ja kĂ€itada seda torustiku elemendina muudatuste klastrisse edastamiseks. TĂ”epoolest, nii kĂ€ituvad paljud spetsialistid. Kuid see ei ole optimaalne ja siin on miks.
CI-d tuleb kasutada trunk'i vÀrskendamiseks, ja Kubernetes'i klaster peaks muutma iseennast nende vÀrskenduste pÔhjal, et hallata CD 'sisemiselt'. Me nimetame seda , erinevalt CI push-mudelist. CD on osa runtime-orchestratsioonist.
Miks CI-serverid ei peaks CD-d tegema otse vÀrskendusi Kubernetes'i kaudu
Ărge kasutage CI-serverit otse vĂ€rskenduste orkestreerimiseks Kubernetes'is CI-ĂŒlesannete komplekti kujul. See on antipatter, millest me oma blogis.
LĂ€hme tagasi Alisse ja Bobi juurde.
Millistele probleemidele nad silmitsi seisavad? Bobi CI-server rakendab muudatused klastrisse, kuid kui protsessi kÀigus see kokku kukub, ei tea Bob, mis seisundis klaster on (vÔi peaks olema) ja kuidas seda taastada. Sama kehtib ka juhul, kui kÔik sujub.
Oletame, et Bobi meeskond koostas uue pildi ja seejÀrel patƥeeris oma deployment'id, et juurutada pilti (kÔik see CI-pipe'i kaudu).
Kui pilt koostatakse korralikult, kuid pipeline kukub kokku, peab meeskond vÀlja selgitama:
- Kas vÀrskendus juurutati?
- Kas me tĂ”stame uusi ehitusi? Kas see toob kaasa soovimatuid kĂ”rvaltoimeid â nĂ€iteks, et meil on kaks sama muutumatut pilti?
- Kas peaksime ootama jÀrgmise vÀrskenduse saabumist, enne kui kÀivitame ehituse?
- Mis tÀpselt lÀks valesti? Milliseid samme tuleb korrata (ja milliseid neist on turvaline korrata)?
Git'i pÔhjalise tööprotsessi korraldamine ei garanteeri, et Bobi meeskond ei seisaks silmitsi nende probleemidega. Nad vÔivad siiski teha vigu commit'i push'imisel, sildistamisel vÔi mÔnel muul parameetril; kuid see lÀhenemine on siiski palju lÀhemal selge kÔik- vÔi-mitte-midagi printsiibile.
KokkuvÔtteks, siin on pÔhjused, miks CI-serverid ei tohiks tegeleda CD-ga:
- Uuenduste skriptid ei ole alati deterministlikud; neis on lihtne eksida.
- CI-serverid ei konvergentsi deklaratiivse klastrimudeli suunas.
- Idempotentsuse tagamine on keeruline. Kasutajad peavad sĂŒvenema sĂŒsteemi sĂŒgissemaatikasse.
- Osalise ebaÔnnestumise korral taastamine on keerulisem.
MĂ€rkus Helmi kohta: kui soovite kasutada Helmi, soovitame seda kombineerida GitOps-operaatoriga, nagu . See aitab tagada konvergentsi. Ăksik Helmi ei ole ei deterministlik ega aatomaarne.
GitOps kui parim viis Kubernetes'i jaoks pidevaks kohaletoimetamiseks
Alice'i ja Bobi meeskond rakendab GitOps'i ning avastab, et tarkvaratoodetega on nĂŒĂŒd palju lihtsam töötada ning tagada kĂ”rge jĂ”udlus ja stabiilsus. LĂ”petame selle artikli joonistega, mis nĂ€itavad, milline vĂ€lja nĂ€eb nende uus lĂ€henemine. Pidage meeles, et rÀÀgime peamiselt rakendustest ja teenustest, kuid GitOps'i saab kasutada ka kogu platvormi haldamiseks.
Kubernetes'e töömudel
Vaadake jĂ€rgmist diagrammi. See esindab Giti ja konteineripiltide hoidlat kui ĂŒhiseid ressursse kahe orkestreeritud elutsĂŒkli jaoks:
- Pideva integreerimise toru, mis loeb ja kirjutab faile Gitis ning suudab vÀrskendada konteineripiltide hoidlat.
- Runtime'i GitOps toru, mis ĂŒhendab juurutamise, haldamise ja jĂ€lgimise. See loeb ja kirjutab faile Gitis ning suudab laadida konteineripilte.
Millised on peamised jÀreldused?
- Probleemide jaotamine: Pange tĂ€hele, et mĂ”lemad torud saavad andmeid vahetada ainult Giti vĂ”i piltide hoidla vĂ€rskendamise kaudu. TeisisĂ”nu, CI ja runtime keskkonna vahel on tulemĂŒĂŒr. Me nimetame seda 'muutumatuse tulemĂŒĂŒriks' (immutability firewall), kuna kĂ”ik hoidla vĂ€rskendused loovad uusi versioone. TĂ€iendava teabe saamiseks vaadake slaide 72â87 .
- VÔib kasutada igasuguseid CI- ja Git-serve: GitOps töötab igasuguste komponentidega. VÔite jÀtkata oma lemmik CI- ja Git-serverite, piltide hoidlate ja testikomplektide kasutamist. Peaaegu kÔik teised pideva kohaletoimetamise tööriistad turul nÔuavad oma CI- / Git-serverit vÔi piltide hoidlat. See vÔib osutuda takistuseks cloud native arendamiseks. GitOps'i puhul saate kasutada tuttavaid tööriistu.
- SĂŒndmused kui integreerimise tööriist: Kui andmed Gitis uuendatakse, teavitab Weave Flux (vĂ”i Weave Cloud'i operaator) sellega seotud runtime'i. Iga kord, kui Kubernetes aktsepteerib muudatusi, uuendatakse Giti. See tagab lihtsa integreerimismudeli GitOps'i töövoogude korraldamiseks, nagu on nĂ€idatud allpool.
KokkuvÔte
GitOps pakub olulisi uuenduse garantiisid, mis on vajalikud igale kaasaegsele CI/CD tööriistale:
- automaatika;
- konvergents;
- idempotentsus;
- determinism.
See on oluline, kuna see pakub pilvepÔhiste arendajate jaoks töökorralduse mudelit.
- Traditsioonilised sĂŒsteemihalduse ja jĂ€lgimise tööriistad on seotud operatsioonitegevustega, mis toimivad runbook'i raames. (rutiinsete protseduuride ja operatsioonide kogum â tĂ”lk.), mis on seotud konkreetse vĂ€ljatootmisega.
- PilvepĂ”histe sĂŒsteemide haldamisel on jĂ€lgimise tööriistade kasutamine parim viis vĂ€ljaande tulemuste hindamiseks, et arendajate meeskond saaks kiiresti reageerida.
Kujutage ette paljusid klustreid, mis on hajutatud erinevatesse pilvedesse, ja palju teenuseid, millel on oma meeskonnad ja vĂ€ljastusplaanid. GitOps pakub ulatuslikku invarianti mudelit kogu selle kĂŒlluse haldamiseks.
P.S. tÔlkijalt
Lugege ka meie blogist:
- «»;
- «»;
- «».
Ainult registreeritud kasutajad saavad kĂŒsitluses osaleda. , palun.
Kas teadsite GitOpsist enne, kui need kaks tÔlget Habrisse ilmusid?
Jah, ma teadsin seda.
Ainult pinnapealselt.
Ei
35 kasutajat hÀÀletas, 10 kasutajat jÀi erapooletuks.
Allikas: habr.com
