Mis on GitOps?

MĂ€rk. tĂ”lge.: PĂ€rast hiljutist avaldust materjali 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 sissejuhatuse GitOpsi. 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 git push, arendamiseks, saladused, funktsiooni, katkematule integreerimisele jne. Meie veebisaidile ilmus suure hulga publikatsioone ja kasutusjuhtumeid GitOpsi kohta. Kuid mĂ”nede inimeste jaoks on siiski jÀÀnud kĂŒsimusi. Kuidas mudel erineb traditsioonilisest infrastructure as code ja pidevast tarnimisest (continuous delivery)? Kas Kubernetes on hĂ€davajalik?

Varsti mÔistsime, et on vajalik uus kirjeldus, mis pakub:

  1. Suurt hulka nÀiteid ja lugusid;
  2. Konkreetsed mÀÀratlus GitOps'i kohta;
  3. 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 on korduvalt tĂ”statunud, sealhulgas Weaveworks'i blogis..

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 siit — kt. tĂ”lge).

Mis juhtus?

GitOps — see on kaks asja:

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

  1. Kubernetes mudelis saab kÔike kirjeldada deklaratiivsel viisil.
  2. Kubernetes API-server vĂ”tab sellise deklaratsiooni sisendina ja pĂŒĂŒab pidevalt tuua klastrit seisundisse, mis on kirjeldatud deklaratsioonis.
  3. Deklaratsioonid on piisavad, et kirjeldada ja hallata laia valikut töökoormusi — 'rakendusi'.
  4. 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

  1. 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.
  2. 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.
  3. Seega pÔhjustavad kÔik Git'i commitid kontrollitavaid ja idempotentseid uuendusi klastris.
    • Tagasiulatuv on konvergents varasema, soovitud oleku juurde.
  4. 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 GitOps operaator Weave Flux, mis on osa Weave Cloud.
  • Baasmachines peab konvergentsimehhanism olema deklaratiivne ja autonoomne. Oma kogemuste pĂ”hjal vĂ”ime öelda, et Terraform 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:

  1. KĂ€itamismudel Kubernetes'e ja cloud native jaoks, nagu eespool kirjeldatud.
  2. 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: Weave Cloud 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:

  1. Õ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).
  2. Ohutus. Tsiteerides Kelsey Hightowerit: «Piira juurdepÀÀs Kubernetes klastri tööriistadele ja administratoridele, kellele kuulub selle tÔrkeotsing vÔi töökorras hoidmine». Vaata ka minu postitust turbe ja tehniliste nÔuete tÀitmise kohta, samuti artiklit HomebrewŽ hÀkkimise kohta kasutajakontode varastamise kaudu hoolimatult koostatud Jenkins skripti kaudu.
  3. 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 selline CV.

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 cd-mudelis tÔmbamise mudeliks, 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 oleme juba rÀÀkinud 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 Flux-Helm. 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?

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

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster