MĂ€rk. tĂ”lge.: PĂ€rast hiljutist avaldust GitOpsi pull ja push meetodite kohta oleme nĂ€inud huvi selle mudeli vastu, kuid venekeelseid publitseeringuid sellel teemal on vĂ€ga vĂ€he (Habrast ei leia neid ĂŒldse). SeetĂ”ttu oleme rÔÔmsad, et saame teile pakkuda teise artikli tĂ”lget â ehkki see on juba peaaegu aasta vana! â ettevĂ”ttelt Weaveworks, kelle juht leiutas termini âGitOpsâ. Artiklis selgitatakse lĂ€henemise olemust ja peamisi erinevusi juba olemasolevatest lahendustest.
Aasta tagasi avaldasime . Siis rÀÀkisime, kuidas Weaveworksi meeskond kÀivitas SaaS-i, mis pÔhineb tÀielikult Kubernetesel, ning töötas vÀlja parimate praktikate komplekti, et juurutada, hallata ja jÀlgida pilvepÔhises keskkonnas.
Artikkel osutus populaarseks. Teised inimesed hakkasid rÀÀkima GitOpsist, ja avaldama uusi tööriistu , , , , jne. Meie veebisaidile ilmus publikatsioone ja kasutusjuhtumeid GitOpsi kohta. Kuid mĂ”nede inimeste jaoks on siiski jÀÀnud kĂŒsimusi. Kuidas mudel erineb traditsioonilisest ja pidevast tarnimisest ()? Kas Kubernetes on hĂ€davajalik?
Varsti mÔistsime, et on vajalik uus kirjeldus, mis pakub:
- Suurt hulka nÀiteid ja lugusid;
- Konkreetsed mÀÀratlus GitOps'i kohta;
- VÔrdlus traditsioonilise pideva tarnimisega.
Selles artiklis pĂŒĂŒdsime kattuda nende kĂ”igi teemadega. Leiate uuendatud ĂŒlevaate GitOps'ist ja arendajate ning CI/CD vaatenurga. Me keskendume peamiselt Kubernetes'ele, kuigi mudelit on vĂ”imalik ĂŒldistada.
Tutvuge: GitOps
Kujutage ette Alice'i. Ta juhib Family Insurance'i, mis pakub tervise-, auto-, kinnisvara- ja reisikindlustuspolisse inimestele, kes on liiga hĂ”ivatud, et ise lepingute nĂŒanssidega tegeleda. Tema Ă€ri algas kĂ”rvalprojektina, kui Alice töötas pangas andmete teadlasena. Ăhel pĂ€eval taipas ta, et saab kasutada tipptasemel arvutialgoritme andmete tĂ”husamaks analĂŒĂŒsimiseks ja kindlustuspakkumiste koostamiseks. Investorid finantseerisid projekti, ja nĂŒĂŒd teenib tema ettevĂ”te ĂŒle 20 miljoni dollari aastas ning kasvab kiiresti. Hetkel töötab seal erinevatel ametikohtadel 180 inimest. Nende seas on tehniline meeskond, mis tegeleb veebisaidi, andmebaasi arendamise ja kliendibaasi analĂŒĂŒsiga. 60 inimese meeskonda juhib Bob, ettevĂ”tte tehnoloogia direktor.
Bob'i meeskond kĂ€itab produzirimissĂŒsteeme pilves. Nende peamised rakendused töötavad GKE-l, kasutades Kubernetes'i eeliseid Google Cloudis. Lisaks kasutavad nad erinevaid tööriistu andmete töötlemiseks ja analĂŒĂŒsiks.
Family Insurance ei plaaninud konteinerite kasutamist, kuid nakatus Dockerist entusiasmiga. Varsti avastas ettevÔtte spetsialistid, et GKE vÔimaldab kergesti ja muretult juurutada klasse uute funktsioonide testimiseks. Lisati Jenkins CI jaoks ja Quay konteineriregistri haldamiseks, kirjutati Jenkinsile skripte, mis edastasid uusi konteinerite ja konfiguratsioonide GKE.
Möödus veidi aega. Alice ja Bob olid valitud lĂ€henemise tootlikkuse ja selle mĂ”ju Ă€businessist pettunud. Mahutite kasutuselevĂ”tt ei parandanud tootlikkust nii palju, kui meeskond oli lootnud. MĂ”nikord lĂ€ksid juurutamised katki, ja ei olnud selge, kas probleemid olid seotud koodimuudatustega. Samuti oli keeruline jĂ€lgida konfiguratsioonimuudatusi. Tihti tuli luua uus klaster ja tĂ”sta sinna rakendused, kuna see oli ainus lihtne viis, et likvideerida segadus, milleks sĂŒsteem oli muutunud. Alice kartis, et olukord halveneb rakenduse arenedes (lisaks oli tekkimas uus masinĂ”ppe projekt). Bob oli suure osa tööst automatiseerinud ja ei mĂ”istnud, miks torustik endiselt ebastabiilne on, halvasti skaleerub ja nĂ”uab perioodiliselt kĂ€sitsi sekkumist?
Siis said nad teada GitOps'ist. See lahendus osutus just selleks, mida nad vajusid kindlalt edasi liikumiseks.
Aliisa ja Bob on juba aastaid kuulnud Git, DevOps ja infrastructure as code tööprotsessidest. GitOps'i eripĂ€ra on see, et see toob kaasa rida parimaid praktikaid â kategoorilisi ja regulatiivseid â nende ideede elluviimiseks Kubernetes'i kontekstis. See teema , sealhulgas .
Family Insurance otsustab rakendada GitOps'i. NĂŒĂŒd on ettevĂ”ttel automatiseeritud töömudel, mis on kokku sobiv Kubernetes'iga ja ĂŒhendab kiiruse ja stabiilsuse, kuna nad:
- avastasid, et meeskonna tootlikkus on kahekordistunud ning keegi ei lÀhe seetÔttu hulluks;
- on lĂ”petanud skriptide hooldamise. Selle asemel saavad nad nĂŒĂŒd keskenduda uutele funktsioonidele ja tĂ€iustada insenerimeetodeid â nĂ€iteks rakendada kanarullide vĂ€ljaandeid ja parandada testimist;
- on tĂ€iustanud juurutamisprotsessi â see katkeb nĂŒĂŒd harva;
- on saanud vÔimaluse taastada juurutamisi osaliste tÔrgete korral ilma kÀsitsi sekkumiseta;
- on saavutanud suurema kindluse tarnesĂŒsteemides. Aliisa ja Bob avastasid, et meeskonna saab jagada rĂŒhmadesse, mis tegelevad mikroteenustega ja töötavad paralleelselt;osuuremat kindlustunnet tarnesĂŒsteemides. Alice ja Bob avastasid, et meeskonna saab jagada gruppideks, kes tegelevad mikroteenustega ja töötavad paralleelselt;
- iga pÀev iga meeskonna jÔududega saavad teha 30-50 muudatust projektis ja katsetada uusi tehnikaid;
- kergesti kaasavad projekti uusi arendajaid, kellel on vÔimalus lisada tootmisversioonile uuendusi pull request'ide kaudu juba paar tunni pÀrast;
- lĂ€bivad SOC2 raames auditi lihtsasti (teenusepakkujate vastavuse tagamine andmete turvalise haldamise nĂ”uetele; lisainfot leiate nĂ€iteks â kt. tĂ”lge).
Mis juhtus?
GitOps â see on kaks asja:
- Kubernetes'e ja pilvetehnoloogia töömudel. See pakub parimate praktikate kogumit konteinerisse pakitud klastrite ja rakenduste juurutamiseks, haldamiseks ja jĂ€lgimiseks. Elegantne mÀÀratlemine ĂŒhel slaidil. alates :
- Tee arendajakeskse keskkonna loomiseni rakenduste haldamiseks. Kasutame Git'i töövoogu nii tootmises kui ka arenduses. Pange tÀhele, et see ei puuduta ainult Git push'i, vaid kogu CI/CD ja UI/UX tööriistade komplekti organiseerimist.
MÔned sÔnad Git-ist
Kui te pole tuttav versioonihaldussĂŒsteemide ja Git-pĂ”hise töövooga, soovitame tungivalt neid uurida. Harjumatu on alguses töötada harude ja pull request'idega, kuid saadud kasu on vaeva vÀÀrt. Siin on alustamiseks.
Kuidas Kubernetes töötab
Meie loos pöördusid Alice ja Bob GitOps'i poole, pĂ€rast pikka töötamist Kubernetesega. TĂ”epoolest, GitOps on tihedalt seotud Kubernetesega â see on Kubernetesel pĂ”hinevate infrastruktuuri ja rakenduste haldamise mudel.
Mida Kubernetes kasutajatele pakub?
Siin on mÔned pÔhifunktsioonid:
- Kubernetes mudelis saab kÔike kirjeldada deklaratiivsel viisil.
- Kubernetes API-server vĂ”tab sellise deklaratsiooni sisendina ja pĂŒĂŒab pidevalt tuua klastrit seisundisse, mis on kirjeldatud deklaratsioonis.
- Deklaratsioonid on piisavad, et kirjeldada ja hallata laia valikut töökoormusi â 'rakendusi'.
- Tulemusena toimub rakenduste ja klastrite muutmine jÀrgmiste tÔttu:
- muutused konteineripiltides;
- muutused deklaratiivses spetsifikatsioonis;
- vead keskkonnas â nĂ€iteks konteinerite kokku kukkumised.
Kubernetes'e iseloomulikud suurepÀrased konvergentsi vÔimed
Kui haldur muudab seadistusi, rakendab Kubernetes'i orkestreerija neid klastrisse, kuni selle seisund lÀheneb uuele seadistusele. See mudel töötab igasuguste Kubernetes'i ressursside jaoks ja seda saab laiendada Custom Resource Definitions (CRD) abil. SeetÔttu on Kubernetesi rakendustel jÀrgmised imelised omadused:
- Automatiseerimine: Kubernetes'i uuendused pakuvad mehhanismi muutuste rakendamise protsessi automatiseerimiseks korrektselt ja Ôigeaegselt.
- Konvergents: Kubernetes jÀtkab uuenduste katsetamist, kuni need Ônnestuvad.
- Idempotentsus: korduvad konvergeerimised viivad sama tulemuse juurde.
- Determinism: piisavate ressursside korral sÔltub vÀrskendatud klastriseisund ainult soovitud olekust.
Kuidas GitOps töötab
Oleme piisavalt palju teada saanud Kubernetes'ist, et selgitada GitOps'i tööpÔhimÔtteid.
Naasime tagasi pereliikmete kindlustusmeeskondade juurde, mis tegelevad mikroteenustega. Mida nad tavaliselt teevad? Vaadake allolevat loetelu (kui mÔni punkt tundub kummaline vÔi tundmatu, palun Àrge kiirustage kriitikaga ning jÀÀge meiega). Need on vaid nÀited tööprotsessidest, mis pÔhinevad Jenkinsil. Samuti on olemas palju muid protsesse, mis kasutavad erinevaid tööriistu.
Peamine on see, et iga vÀrskendus lÔpeb konfiguratsiooni failide ja Git repode muutmisega. Need muudatused Gitis toovad kaasa selle, et 'GitOps operaator' vÀrskendab klastrit:
1. Tööprotsess: 'Jenkinsi ehitus â master haru».
Ălesannete loetelu:
- Jenkins pushâib mĂ€rgistatud pildid Quaysse;
- Jenkins pushâib konfiguratsiooni ja Helm graafikud master-hoidla Ă€mbri;
- Pilveteenus kopeerib konfiguratsiooni ja graafikud master-hoidla Àmbrist Git reposse master;
- GitOps operaator vÀrskendab klastrit.
2. Jenkinsi ehitus â release vĂ”i hotfix haru:
- Jenkins pushâib mĂ€rgistamata pildid Quaysse;
- Jenkins pushâib konfiguratsiooni ja Helm graafikud staging-hoidla Ă€mbri;
- Pilveteenus kopeerib konfiguratsiooni ja graafikud staging-hoidla Àmbrist Git reposse staging;
- GitOps operaator vÀrskendab klastrit.
3. Jenkinsi ehitus â develop vĂ”i feature haru:
- Jenkins pushâib mĂ€rgistamata pildid Quaysse;
- Jenkins push'ib konfiguratsiooni ja Helm graafikud develop-hoidla anumisse;
- Pilvefunktsioon kopeerib konfiguratsiooni ja graafikud develop-hoidla anumast Git-repositsiooni develop;
- GitOps operaator vÀrskendab klastrit.
4. Uue kliendi lisamine:
- Juhataja vÔi administraator (LCM/ops) kutsub esile Gradle'i esialgseks paigaldamiseks ja vÔrgu ko-load tasakaalustajate (NLB) seadistamiseks;
- LCM/ops kommenteerib uue konfiguratsiooni, et valmistada deployment'i vÀrskendusteks;
- GitOps operaator vÀrskendab klastrit.
LĂŒhike ĂŒlevaade GitOps'ist
- Kirjeldage kogu sĂŒsteemi soovitud seisundit, kasutades deklaratiivseid spetsifikatsioone iga keskkonna jaoks (meie loos mÀÀrab Bobi meeskond kogu sĂŒsteemi konfiguratsiooni Git'is).
- Git-repositsioon on ainus tĂ”e allikas kogu sĂŒsteemi soovitud seisundi osas.
- KÔik muudatused soovitud seisundisse viiakse ellu Git'isse komiteerimise teel.
- KÔik soovitud klastriparametrid on samuti nÀhtavad klastris endas. Seega saame mÀÀrata, kas soovitud ja nÀhtud seisundid on kooskÔlas (konvergivad, converge) vÔi erinevad (diverge, diverge) soovitud ja nÀhtud seisunditest.
- Kui soovitud ja nÀhtud seisundid erinevad, siis:
- On olemas konvergentsimehhanism, mis sĂŒnkroniseerib sihitud ja tĂ€heldatud olekud varem vĂ”i hiljem automaatselt. Klastri sees tegeleb sellega Kubernetes.
- Protsess algab koheselt teatega "change committed".
- MÔne konfigureeritava ajavahemiku jooksul vÔib saadetud olla teade "diff", kui olekud erinevad.
- Seega pÔhjustavad kÔik Git'i commitid kontrollitavaid ja idempotentseid uuendusi klastris.
- Tagasiulatuv on konvergents varasema, soovitud oleku juurde.
- Konvergents on lÔplik. Selle toimumise nÀitajad on:
- Teadete "diff" puudumine teatud ajavahemiku jooksul.
- Teade "converged" (nĂ€iteks webhook, Git writeback'i sĂŒndmus).
Mis on divergeerumine?
Korratakse veel kord: kÔik soovitud omadused peavad olema klastris nÀhtavad.
MÔned nÀited divergeerumisest:
- Konfiguratsioonifaili muutmine Git'i harude ĂŒhendamise tĂ”ttu.
- Konfiguratsioonifaili muutmine Git'i commit'i tÔttu, mis tehti GUI-klientidega.
- Mitmed soovitud oleku muutused Git'i PR tÔttu, mille jÀrgselt ehitati konteineri pilt ja muudeti konfiguratsiooni.
- Klastri oleku muutmine vigade, ressursside konfliktide, 'halva kÀitumise' vÔi lihtsalt algse oleku juhusliku kÔrvalekalde tÔttu.
Mis on konvergentsimehhanism?
MÔned nÀited:
- Konteinerite ja klastrite jaoks pakub konvergentsimehhanism Kubernetes.
- Sama mehhanismi saab kasutada rakenduste ja Kubernetesel pÔhinevate konstruktide haldamiseks (nt Istio ja Kubeflow).
- Töösuhete haldamise mehhanism Kubernetes'i, pildirepositoariumide ja Git'i vahel vÔimaldab , mis on osa .
- Baasmachines peab konvergentsimehhanism olema deklaratiivne ja autonoomne. Oma kogemuste pÔhjal vÔime öelda, et see on lÀhim sellele mÀÀratlemisele, siiski nÔuab see siiski inimkontrolli. Selle mÔttes laiendab GitOps traditsioone Infrastructure as Code.
GitOps ĂŒhendab Git'i suurepĂ€rase Kubernetes'e konvergentsimehhanismi, pakkudes ekspluateerimise mudelit.
GitOps vĂ”imaldab meil kinnitada: automaatika ja kontrollitavad on ainult need sĂŒsteemid, mida saab kirjeldada ja jĂ€lgida..
GitOps on mĂ”eldud kogu cloud native-ökoĂŒstele (nt Terraform jne).
GitOps ei tĂ€henda ainult Kubernetes't. Me tahame, et kogu sĂŒsteem oleks deklareeritud juhtimise alusel ning kasutaks konvergentsi. Aluses mĂ”istame kogu sĂŒsteemi, mis koosneb Kubernetes'ega töötavatest keskondadest â nĂ€iteks "dev cluster 1", "production" jne. Igas keskkonnas on masinad, klastrid, rakendused ning liidesed, mis ĂŒhendavad vĂ€liseid teenuseid andmete, jĂ€lgimise jne jaoks.
Pange tÀhele, kui oluline on Terraform antud juhul bootstrapping'i probleemi jaoks. Kubernetes peab olema kusagil juurutatud ning Terraformi kasutamine vÔimaldab meil rakendada samu GitOps tööprotsesse, et luua juhtimislÀbilöök, mis toetab Kubernetes'e ja rakendusi. See on kasulik parim praktika.
Suurt tĂ€helepanu pööratakse GitOps kontseptsioonide rakendamisele Kubernetes'e kohal olevates kihtides. Praegu on olemas GitOps-tĂŒĂŒpi lahendusi Istio, Helm, Ksonnet, OpenFaaS ja Kubeflow jaoks, samuti nĂ€iteks Pulumi, mis loovad kihtide arendamiseks cloud native.
Kubernetes CI/CD: GitOps'i ja teiste lÀhenemisviiside vÔrdlus.
Nagu varem mainitud, on GitOps kaks asja:
- KĂ€itamismudel Kubernetes'e ja cloud native jaoks, nagu eespool kirjeldatud.
- Arendatud keskkonna loomine rakenduste haldamiseks arendajatele.
Paljude jaoks on GitOps peamiselt Git-pushâidele pĂ”hinev töövoog. Meile meeldib see ka. Kuid see pole veel kĂ”ik: vaatame nĂŒĂŒd CI/CD torustikke.
GitOps tagab pideva juurutamise (CD) Kubernetes'e all.
GitOps pakub pideva juurutamise mehhanismi, mis elimineerib vajaduse eraldi 'juurutamissĂŒsteemide' jĂ€rele. Kogu töö teeb teie eest Kubernetes.
- Rakenduse vÀrskendamine nÔuab vÀrskendamist Git'is. See on tehinguline vÀrskendus soovitud olekusse. 'Juurutamine' toimub seejÀrel klastris ise Kubernetes'e poolt vÀrskendatud kirjelduse pÔhjal.
- Kubernetes'e tööpÔhimÔtete tÔttu on need vÀrskendused konvergentsed. See tagab mehhanismi pidevaks juurutamiseks, kus kÔik vÀrskendused on aatomaarne.
- MÀrkus: pakub GitOps'i operaatorit, mis integreerib Git'i ja Kubernetes'e, vÔimaldades CD-d, sobitades klastris soovitud ja praegust olekut.
Ilma kubectl'i ja skriptideta.
VĂ€ltida tuleks Kubectli kasutamist klastri vĂ€rskendamiseks, eriti kubectl kĂ€skude rĂŒhmitamise skripte. Selle asemel saab kasutaja GitOps torustiku kaudu oma Kubernetes klastrit Git'i kaudu uuendada.
Eelised hÔlmavad:
- Ăigsus. Uuenduste gruppi saab rakendada, konvergida ja lĂ”puks valideerida, mis viib meid lĂ€hemale aatomse paigaldamise eesmĂ€rgile. Vastupidiselt ei paku skriptide kasutamine mingeid konvergentsi garantiisid (rohkem sellest allpool).
- Ohutus. Kelsey Hightowerit: «Piira juurdepÀÀs Kubernetes klastri tööriistadele ja administratoridele, kellele kuulub selle tÔrkeotsing vÔi töökorras hoidmine». Vaata ka turbe ja tehniliste nÔuete tÀitmise kohta, samuti kasutajakontode varastamise kaudu hoolimatult koostatud Jenkins skripti kaudu.
- Kasutajakogemus. Kubectl paljastab Kubernetes objekti mudeli mehhanismi, mis on ĂŒsna keeruline. Ideaalis peaksid kasutajad sĂŒsteemiga suhtlema kĂ”rgemal abstraktsiooni tasemel. Siin viitan taas Kelsey'le ja soovitan vaadata .
Erinevus CI ja CD vahel
GitOps parandab olemasolevaid CI/CD mudeleid.
Moodne CI-server on vahend orkestreerimiseks. TÀpsemalt on see vahend CI-pipeline'ide orkestreerimiseks. Need sisaldavad ehitamist, testimist, peamisse haru liitmist jne. CI-serverid automatiseerivad keerukate mitmeastmeliste pipeline'ide haldamist. Levinud kiusatus on luua skript Kubernetes'i uuenduste komplekti jaoks ja kÀivitada see kui element pipeline'is muudatuste surumiseks klastrisse. TÔepoolest, paljud spetsialistid toimivad nii. Kuid see ei ole optimaalne, ja siin on miks.
CI peaks olema kasutusel muudatuste tegemiseks peaharusse, samas kui Kubernetes'i klaster peaks oma muutusi pÔhjal nende muudatuste alusel juhtima, et hallata CD-d "sisemiselt". Me nimetame seda , erinevalt CI tÔukemudelidest. CD on osa runtime-orkestreerimisest.
Miks CI-serverid ei tohiks teha CD-d otseuuenduste kaudu Kubernetes's
Ărge kasutage CI-serverit, et orkestreerida otseseid uuendusi Kubernetes's CI-tööde komplekti kujul. See on anti-pattern, millest me oma blogis.
Na lÀhme tagasi Alisse ja Bobisse.
Milliste probleemidega nad silmitsi seisavad? Bobi CI-server rakendab muudatused klastrisse, kuid kui see protsessi kÀigus kokku kukub, ei tea Bob, millises seisundis klaster on (vÔi peaks olema) ja kuidas seda parandada. Sama kehtib ka siis, kui jÀtkub edukalt.
Oletame, et Bobi meeskond on loonud uue pildi ja seejÀrel uuendanud oma rakendusi selle juurutamiseks (kÔik see CI-protsessist).
Kui pilt koostatakse normaalselt, kuid protsess kukub kokku, peab meeskond vÀlja selgitama:
- Kas uuendus on rakendatud?
- Kas me kĂ€ivitame uut kogumist? Kas see toob kaasa soovimatuid kĂ”rvalmĂ”jusid â nĂ€iteks kaht erinevat sama muutumatut pilti?
- Kas peaksime ootama jÀrgmist uuendust, enne kui kÀivitame kogumise?
- Mis tÀpselt valesti lÀks? Milliseid samme tuleb korrata (ja milliseid on ohutu korrata)?
Git-pÔhise töövoo korraldus ei taga, et Bobi meeskond ei satuks nende probleemidega silmitsi. Nad vÔivad endiselt komistada commit'i pushimise, sildi vÔi mÔne muu parameetri osas; siiski on see lÀhenemine siiski palju lÀhemal vaadatule kÔik-ees vÔi mitte midagi.
KokkuvÔtteks, siin on pÔhjused, miks CI-serverid ei peaks tegelema CD-ga:
- Uuendusskriptid ei ole alati mÀÀratavad; need on kergesti eksitavad.
- CI-serverid ei konvergeeru deklareeriva klastrimudeliga.
- Isemoodulite tagamise kindel tagamine on keeruline. Kasutajad peavad olema sĂŒgava sĂŒsteemi semantika osas teadlikud.
- Osalise ebaÔnnestumise korral on taastamine keerulisem.
MĂ€rkus Helmâi kohta: kui soovite kasutada Helmi, soovitame kombineerida see GitOps operaatoriga, nagu . See aitab tagada konvergentsi. Ăksinda Helm ei ole ei mÀÀratletud ega atomaarne.
GitOps on parim viis teostada pidevat kohaletoimetamist Kuberneteses.
Alice'i ja Bob'i meeskond rakendab GitOps'i ning avastab, et on palju lihtsam töötada tarkvaratoodetega, sÀilitades kÔrge jÔudluse ja stabiilsuse. LÔpetame selle artikli illustreerimisena, mis nÀitab, kuidas nende uus lÀhenemine vÀlja nÀeb. Pidage meeles, et rÀÀgime peamiselt rakendustest ja teenustest, kuid GitOps'i saab kasutada kogu platvormi haldamiseks.
Kubernetes'e töömudel
Vaadake jĂ€rgmist diagrammi. See esindab Git'i ja konteineripiltide hoidlat kui ĂŒhiseid ressursse kahele orkestreeritud elutsĂŒklile:
- JÀtkuva integreerimise töövoogu, mis loeb ja kirjutab faile Git'i ning vÔib vÀrskendada konteineripiltide hoidlat.
- Runtime GitOps töövoogu, mis ĂŒhendab paigaldamise haldamise ja jĂ€lgimisega. See loeb ja kirjutab faile Git'i ning vĂ”ib ĂŒles laadida konteineripilte.
Millised on peamised jÀreldused?
- Probleemide eristamine: Pange tĂ€hele, et mĂ”lemad töövood saavad andmeid vahetada, vĂ€rskendades ainult Git'i vĂ”i piltide hoidlat. TeisisĂ”nu, CI ja runtime keskkonna vahel on tulemĂŒĂŒr. Me nimetame seda "immutability firewall'iks" (immutability firewall), kuna kĂ”ik hoidlate vĂ€rskendused loovad uusi versioone. TĂ€iendava teabe saamiseks selle teema kohta vaadake slaide 72-87. .
- VĂ”ib kasutada kĂ”iki CI ja Git servereid.: GitOps töötab kĂ”igi komponentidega. Saate jĂ€tkata oma lemmik CI- ja Git-serverite, pildirepositooride ja testimistsetide kasutamist. Peaaegu kĂ”ik ĂŒlejÀÀnud pideva toimetamise tööriistad turul nĂ”uavad oma CI-/Git-serverit vĂ”i pildihoidlat. See vĂ”ib osutuda takistuseks cloud native arendamisel. GitOps-i puhul vĂ”ite kasutada tuttavaid tööriistu.
- Ăritused kui integreerimisvahend: Kui andmed Git-is uuendatakse, teavitab Weave Flux (vĂ”i Weave Cloud'i operaator) sellest runtime'i. Igakord, kui Kubernetes aktsepteerib muudatusi, uuendatakse Git-i. See tagab lihtsa integreerimismodelli töövoogude korraldamiseks GitOps-i jaoks, nagu on nĂ€idatud allpool.
KokkuvÔte
GitOps pakub olulisi uuendamise garantiisid, mis on vajalikud igale modernse CI/CD tööriistale:
- automaatika;
- konvergents;
- idempotsents;
- determinism.
See on oluline, kuna see pakub töökorraldusmudelit arendajatele cloud native valdkonnas.
- Traditsioonilised sĂŒsteemide haldamise ja jĂ€lgimise tööriistad on seotud operatiivmeeskondadega, kes tegutsevad runbook'i raames (rutiinsete protseduuride ja toimingute komplekt â tlk.), mis selgelt seotud konkreetse deploymentâiga.
- Pilv-native sĂŒsteemide haldamisel on jĂ€lgimistööriist parim viis deploymendide tulemuste hindamiseks, et arendustiim saaks kiiresti reageerida.
Kujutage ette mitmeid klastreid, mis on hajutatud erinevatesse pilvedesse ja hulganisti teenuseid, millel on omad meeskonnad ja deploymendi plaanid. GitOps pakub skaala-invariantset mudelit kogu selle kĂŒlluse haldamiseks.
P.S. tÔlkija mÀrkused
Lugege ka meie blogist:
- «»;
- «»;
- «».
Ainult registreeritud kasutajad saavad kĂŒsitluses osaleda. , palun.
Kas teadsite GitOpsist enne nende kahe tÔlke ilmumist Habr's?
Jah, ma teadsin kÔigest
Ainult pinnapealselt
Ei
HÀÀletas 35 kasutajat. 10 kasutajat hoidusid.
Allikas: habr.com
