Mis on GitOps?

MĂ€rkus tĂ”lke kohta.: PĂ€rast hiljutist avaldust materjalist 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 sissejuhatus GitOpsi. 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 git push, arendamiseks, saladuste, funktsioonide, jĂ€tkuva integreerimise jne. Meie saidile ilmus suure hulga publikatsioone ja GitOpsi kasutusjuhtumeid. Kuid mĂ”nedel inimestel jĂ€i endiselt kĂŒsimusi. Kuidas see mudel erineb traditsioonilisest infrastruktuuri kui koodi ja pidevast tarnimist (continuous delivery)? Kas Kubernetes on vajalik?

Varsti mÔistsime, et on vaja uut mÀÀratlust, mis pakuks:

  1. Suure hulga nÀiteid ja lugusid;
  2. Konkreetsed mÀÀratlust GitOpsile;
  3. 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 on korduvalt tĂ”statatud, sealhulgas Weaveworks'i blogis.

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 siin — toimetaja mĂ€rkus).

Mis juhtus?

GitOps — see on kaks asja:

  1. 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 ĂŒhe slaidi alates Luis Faceira:
  2. 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 hea artikkel 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:

  1. Kubernetes'e mudelis on kÔik vÔimalik kirjeldada deklareerivas vormis.
  2. Kubernetes'e API-server aktsepteerib sellist deklareerimist sisendina ja seejĂ€rel ĂŒritab pidevalt tuua klastrit deklareerimisega kirja pandud olekusse.
  3. Deklareeringud on piisavad, et kirjeldada ja hallata suurt hulka töökoormusi — "rakendusi".
  4. 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

  1. 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.
  2. 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.
  3. Seega kutsuvad kÔik commit'id Git'is esile kontrollitavad ja idempotentsed uuendused klastris.
    • Tagasiminek on konvergents varasemasse soovitud seisu.
  4. 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 GitOps-operator Weave Flux, mis on osa Weave Cloud.
  • Tavamasinate puhul peab konvergentsimehhanism olema deklareeritav ja autonoomne. Oma kogemustest vĂ”ime öelda, et Terraform 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:

  1. Töömudel Kubernetes'i ja cloud native'i jaoks, nagu eelpool kirjeldatud.
  2. 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: Weave Cloud 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:

  1. Õ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).
  2. Turvalisus. Tsiteerides 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 minu postitust turvalisusest ja tehniliste nĂ”uete jĂ€rgimisest, samuti artiklit Homebrew’i hĂ€kkimisest kontode andmete varguse kaudu halvasti koostatud Jenkins’i skripti kaudu.
  3. 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 sellist kokkuvĂ”tet.

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 pull-mudeliks CD jaoks, 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 oleme juba rÀÀkinud 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 Flux-Helm. 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?

  1. 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 selles esitluses.
  2. 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.
  3. 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. Logige sisse, 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

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster