Unsa ang GitOps?

Nota. transl.: Human sa bag-o nga publikasyon materyal bahin sa mga pamaagi sa pagbitad ug pagduso sa GitOps, nakita namon ang interes sa kini nga modelo sa kinatibuk-an, apan gamay ra ang mga publikasyon nga sinultian nga Ruso bahin niini nga hilisgutan (wala ra sa Habré). Busa, nalipay kami nga itanyag sa imong pagtagad ang usa ka paghubad sa laing artikulo - bisan hapit usa ka tuig ang milabay! — gikan sa Weaveworks, ang ulo nga nagmugna sa termino nga "GitOps." Gipatin-aw sa teksto ang esensya sa pamaagi ug hinungdanon nga mga kalainan gikan sa mga naa na.

Usa ka tuig ang milabay among gimantala pasiuna sa GitOps. Kaniadto, among gipaambit kung giunsa ang koponan sa Weaveworks naglansad sa usa ka SaaS nga hingpit nga gibase sa Kubernetes ug nagpalambo usa ka hugpong sa mga prescriptive nga labing kaayo nga gawi alang sa pag-deploy, pagdumala, ug pag-monitor sa usa ka lumad nga palibot sa panganod.

Ang artikulo nahimong popular. Ang ubang mga tawo nagsugod sa paghisgot bahin sa GitOps ug nagsugod sa pagmantala sa bag-ong mga himan alang sa gitusok, pag-uswag, mga sekreto, gimbuhaton, padayon nga paghiusa ug uban pa. Nagpakita sa among website usa ka dako nga gidaghanon publikasyon ug mga kaso sa paggamit sa GitOps. Apan adunay mga tawo nga adunay mga pangutana. Sa unsang paagi lahi ang modelo gikan sa tradisyonal? imprastraktura isip code ug padayon nga paghatod (padayon nga paghatud)? Kinahanglan ba nga gamiton ang Kubernetes?

Naamgohan dayon namo nga gikinahanglan ang bag-ong deskripsyon, nga nagtanyag:

  1. Daghang mga pananglitan ug mga istorya;
  2. Piho nga kahulugan sa GitOps;
  3. Pagtandi sa tradisyonal nga padayon nga paghatod.

Niini nga artikulo gisulayan namon nga hisgutan ang tanan nga kini nga mga hilisgutan. Naghatag kini usa ka bag-o nga pasiuna sa GitOps ug usa ka developer ug panan-aw sa CI / CD. Nag-una kami sa pag-focus sa mga Kubernetes, bisan kung ang modelo mahimong i-generalize.

Himamata ang GitOps

Hunahunaa si Alice. Gipadagan niya ang Family Insurance, nga nagtanyag og health, auto, home, ug travel insurance sa mga tawo nga busy kaayo nga dili makahibalo sa mga ins and outs sa mga kontrata sa ilang kaugalingon. Nagsugod ang iyang negosyo isip side project sa dihang nagtrabaho si Alice sa usa ka bangko isip data scientist. Usa ka adlaw nakaamgo siya nga mahimo niyang gamiton ang mga advanced algorithm sa kompyuter aron mas epektibo nga pag-analisar sa datos ug paghimo og mga pakete sa paniguro. Gipondohan sa mga mamumuhunan ang proyekto, ug karon ang iyang kompanya nagdala ug kapin sa $20 milyon sa usa ka tuig ug kusog nga mitubo. Sa pagkakaron, nag-empleyo kini og 180 ka mga tawo sa nagkalain-laing posisyon. Naglakip kini sa usa ka team sa teknolohiya nga nagpalambo, nagmintinar sa website, database, ug nag-analisar sa base sa kostumer. Ang grupo sa 60 ka tawo gipangulohan ni Bob, ang technical director sa kompanya.

Ang grupo ni Bob nag-deploy sa mga sistema sa produksiyon sa panganod. Ang ilang kinauyokan nga mga aplikasyon nagdagan sa GKE, nga nagpahimulos sa Kubernetes sa Google Cloud. Dugang pa, naggamit sila og lain-laing mga datos ug mga himan sa analytics sa ilang trabaho.

Ang Seguro sa Pamilya wala magtakda sa paggamit sa mga sudlanan, apan nasakpan sa kadasig sa Docker. Sa wala madugay nahibal-an sa kompanya nga gipasayon ​​sa GKE ang pag-deploy sa mga cluster aron masulayan ang mga bag-ong bahin. Gidugang ang Jenkins para sa CI ug Quay aron maorganisar ang rehistro sa sudlanan, gisulat ang mga script para sa Jenkins nga nagduso sa mga bag-ong sudlanan ug mga pag-configure sa GKE.

Pipila ka panahon ang milabay. Si Alice ug Bob nasagmuyo sa nahimo sa ilang gipili nga pamaagi ug sa epekto niini sa negosyo. Ang pagpaila sa mga sudlanan wala makapauswag sa pagka-produktibo sama sa gilauman sa team. Usahay ang mga pag-deploy maguba, ug dili klaro kung ang mga pagbag-o sa code ang basulon. Nahimo usab nga lisud ang pagsubay sa mga pagbag-o sa config. Kasagaran kinahanglan nga maghimo usa ka bag-ong cluster ug ibalhin ang mga aplikasyon niini, tungod kay kini ang labing kadali nga paagi aron mawagtang ang kagubot nga nahimo sa sistema. Nahadlok si Alice nga mograbe ang sitwasyon samtang naugmad ang aplikasyon (dugang pa, usa ka bag-ong proyekto nga gibase sa pagkat-on sa makina ang nag-uswag). Gi-automate ni Bob ang kadaghanan sa trabaho ug wala makasabot nganong dili pa stable ang pipeline, dili maayo ang sukod, ug gikinahanglan ang manual intervention matag karon ug unya?

Unya nahibal-an nila ang bahin sa GitOps. Kini nga desisyon nahimo nga eksakto kung unsa ang ilang kinahanglan aron masaligon nga magpadayon.

Si Alice ug Bob nakadungog bahin sa Git, DevOps, ug imprastraktura isip mga workflow sa code sa daghang tuig. Unsa ang talagsaon sa GitOps mao nga nagdala kini usa ka hugpong sa labing kaayo nga mga gawi—parehong depinitibo ug normatibo—alang sa pagpatuman niini nga mga ideya sa konteksto sa Kubernetes. Kini nga tema mibangon balik-balik, lakip sa Blog sa Weaveworks.

Ang Seguro sa Pamilya nagdesisyon nga ipatuman ang GitOps. Ang kompanya karon adunay usa ka awtomatiko nga modelo sa operasyon nga nahiuyon sa Kubernetes ug naghiusa speed uban sa kalig-onkay sila:

  • nakit-an nga ang pagka-produktibo sa team midoble nga walay bisan kinsa nga nabuang;
  • mihunong sa pag-alagad sa mga script. Hinuon, mahimo na silang mag-focus sa mga bag-ong bahin ug mapaayo ang mga pamaagi sa engineering - pananglitan, pagpaila sa mga rollout sa canary ug pagpaayo sa pagsulay;
  • among gipauswag ang proseso sa pag-deploy aron kini panagsa ra maguba;
  • nakabaton ug kahigayonan sa pagpasig-uli sa mga deployment human sa partial failures nga walay manual intervention;
  • gipalit gigamitоMas dako nga pagsalig sa mga sistema sa paghatod. Nadiskobrehan ni Alice ug Bob nga mahimo nilang bahinon ang team ngadto sa mga microservice team nga nagtrabaho nga managsama;
  • makahimo og 30-50 ka kausaban sa proyekto kada adlaw pinaagi sa mga paningkamot sa matag grupo ug mosulay sa bag-ong mga teknik;
  • dali nga madani ang mga bag-ong developer sa proyekto, nga adunay higayon nga i-roll out ang mga update sa produksiyon gamit ang mga hangyo sa pagbitad sulod sa pipila ka oras;
  • dali nga makapasa sa pag-audit sulod sa gambalay sa SOC2 (alang sa pagsunod sa mga service provider nga adunay mga kinahanglanon alang sa luwas nga pagdumala sa datos; basaha ang dugang, pananglitan, dinhi - gibanabana. transl.).

Unsay nahitabo?

Ang GitOps duha ka butang:

  1. Operational model para sa Kubernetes ug cloud native. Naghatag kini usa ka hugpong sa labing kaayo nga mga gawi alang sa pag-deploy, pagdumala, ug pag-monitor sa mga containerized nga cluster ug aplikasyon. Elegant nga kahulugan sa porma usa ka slide gikan sa Luis Faceira:
  2. Ang dalan sa paghimo sa usa ka developer-centric application management environment. Among gipadapat ang Git workflow sa mga operasyon ug kalamboan. Palihug timan-i nga kini dili lamang mahitungod sa Git push, apan mahitungod sa pag-organisar sa tibuok set sa CI/CD ug UI/UX nga mga himan.

Pipila ka mga pulong bahin sa Git

Kung dili ka pamilyar sa mga sistema sa pagkontrol sa bersyon ug workflow nga nakabase sa Git, girekomenda namon nga mahibal-an ang bahin niini. Ang pagtrabaho kauban ang mga sanga ug mga hangyo sa pagbitad mahimo’g ingon sa itom nga salamangka sa una, apan ang mga benepisyo takus sa paningkamot. Dinhi maayong artikulo sa pagsugod.

Giunsa pagtrabaho ang Kubernetes

Sa among istorya, si Alice ug Bob milingi sa GitOps pagkahuman nagtrabaho sa Kubernetes sa makadiyot. Sa tinuud, ang GitOps suod nga konektado sa Kubernetes - kini usa ka modelo sa operasyon alang sa imprastraktura ug aplikasyon nga gibase sa Kubernetes.

Unsa ang gihatag sa Kubernetes sa mga tiggamit?

Ania ang pipila ka mga nag-unang bahin:

  1. Sa modelo sa Kubernetes, ang tanan mahimong ihulagway sa deklaratibo nga porma.
  2. Ang Kubernetes API server nagkuha niini nga deklarasyon isip input ug dayon padayon nga misulay sa pagdala sa cluster ngadto sa estado nga gihulagway sa deklarasyon.
  3. Ang mga deklarasyon igo na aron ihulagway ug madumala ang daghang lainlain nga mga buluhaton sa trabaho—“mga aplikasyon.”
  4. Ingon usa ka sangputanan, ang mga pagbag-o sa aplikasyon ug cluster mahitabo tungod sa:
    • mga pagbag-o sa mga hulagway sa sudlanan;
    • mga pagbag-o sa deklaratibo nga detalye;
    • mga kasaypanan sa palibot - pananglitan, nahagsa ang sudlanan.

Dakong Kapabilidad sa Paghiusa sa Kubernetes

Kung ang usa ka administrador maghimo mga pagbag-o sa pag-configure, ang Kubernetes orchestrator magamit kini sa cluster basta ang kahimtang niini dili moduol sa bag-ong configuration. Kini nga modelo magamit alang sa bisan unsang Kubernetes nga kapanguhaan ug mapadako sa Custom Resource Definitions (CRDs). Busa, ang mga pag-deploy sa Kubernetes adunay mosunod nga nindot nga mga kabtangan:

  • Automation: Ang mga update sa Kubernetes naghatag ug mekanismo sa pag-automate sa proseso sa pagpadapat sa mga kausaban sa maayo ug sa tukma nga panahon.
  • Convergence: Ang mga Kubernetes magpadayon sa pagsulay sa mga update hangtod nga malampuson.
  • Idempotency: Ang gibalikbalik nga paggamit sa convergence mosangpot sa samang resulta.
  • Determinismo: Kung ang mga kahinguhaan igo na, ang estado sa gi-update nga cluster nagdepende lamang sa gusto nga estado.

Giunsa pagtrabaho ang GitOps

Igo na ang among nakat-onan bahin sa Kubernetes aron ipatin-aw kung giunsa ang pagtrabaho sa GitOps.

Balik ta sa mga grupo sa microservice sa Family Insurance. Unsa ang kasagaran nilang buhaton? Tan-awa ang lista sa ubos (kung adunay mga butang niini nga ingon katingad-an o dili pamilyar, palihug ayaw paghunong sa pagsaway ug pagpabilin uban kanamo). Kini mga pananglitan lamang sa mga workflow nga nakabase sa Jenkins. Adunay daghang uban pang mga proseso kung nagtrabaho kauban ang ubang mga himan.

Ang panguna nga butang mao nga nakita namon nga ang matag pag-update natapos sa mga pagbag-o sa mga file sa pagsumpo ug mga repositoryo sa Git. Kini nga mga pagbag-o sa Git hinungdan sa "GitOps operator" sa pag-update sa cluster:

1. Proseso sa pagtrabaho: "Jenkins build - master branch".
Listahan sa buluhaton:

  • Giduso ni Jenkins ang gi-tag nga mga imahe sa Quay;
  • Giduso ni Jenkins ang config ug Helm chart sa master storage bucket;
  • Ang cloud function nagkopya sa config ug mga tsart gikan sa master storage bucket ngadto sa master Git repository;
  • Gi-update sa operator sa GitOps ang cluster.

2. Jenkins build - buhian o hotfix nga sanga:

  • Giduso ni Jenkins ang wala ma-tag nga mga imahe sa Quay;
  • Giduso ni Jenkins ang config ug Helm nga mga tsart ngadto sa balde sa pagtipig sa dula;
  • Ang cloud function nagkopya sa config ug mga tsart gikan sa staging storage bucket ngadto sa staging Git repository;
  • Gi-update sa operator sa GitOps ang cluster.

3. Jenkins build - pagpalambo o feature branch:

  • Giduso ni Jenkins ang wala ma-tag nga mga imahe sa Quay;
  • Giduso ni Jenkins ang config ug Helm charts ngadto sa develop storage bucket;
  • Ang cloud function nagkopya sa config ug mga tsart gikan sa develop storage bucket ngadto sa develop Git repository;
  • Gi-update sa operator sa GitOps ang cluster.

4. Pagdugang og bag-ong kliyente:

  • Ang manedyer o tigdumala (LCM/ops) nagtawag kang Gradle aron sa unang pag-deploy ug pag-configure sa mga network load balancers (NLBs);
  • Naghimo ang LCM/ops og bag-ong config aron maandam ang deployment alang sa mga update;
  • Gi-update sa operator sa GitOps ang cluster.

Mubo nga paghulagway sa GitOps

  1. Ihulagway ang gitinguha nga kahimtang sa tibuok sistema gamit ang deklaratibong mga espesipikasyon alang sa matag palibot (sa among istorya, gihubit sa team ni Bob ang tibuok sistema sa configuration sa Git).
    • Ang Git repository mao ang bugtong tinubdan sa kamatuoran mahitungod sa gitinguha nga kahimtang sa tibuok sistema.
    • Ang tanan nga mga pagbag-o sa gusto nga estado gihimo pinaagi sa mga commit sa Git.
    • Ang tanan nga gusto nga mga parameter sa cluster makita usab sa cluster mismo. Niining paagiha atong mahibal-an kung sila ba magkatakdo (nagtapok, magtapok) o magkalainlain (nagkalainlain, magkalahi) gitinguha ug naobserbahan nga mga estado.
  2. Kung magkalainlain ang gitinguha ug naobserbahan nga estado, nan:
    • Adunay usa ka mekanismo sa convergence nga sa madugay o sa madali awtomatikong mag-synchronize sa target ug naobserbahan nga mga estado. Sa sulod sa cluster, gibuhat kini ni Kubernetes.
    • Ang proseso magsugod dayon sa usa ka alerto nga "gihimo sa pagbag-o".
    • Human sa pipila ka ma-configure nga yugto sa panahon, usa ka "diff" nga alerto mahimong ipadala kung ang mga estado lahi.
  3. Niining paagiha, ang tanan nga commit sa Git hinungdan sa mapamatud-an ug idempotent nga mga update sa cluster.
    • Ang rollback mao ang convergence sa usa ka gusto nga kahimtang kaniadto.
  4. Ang convergence mao ang katapusan. Ang panghitabo niini gipakita sa:
    • Walay mga diff alert sa usa ka piho nga yugto sa panahon.
    • "nahiusa" nga alerto (eg webhook, Git writeback nga panghitabo).

Unsa ang divergence?

Atong balikon pag-usab: ang tanan nga gitinguha nga mga kabtangan sa cluster kinahanglan nga makita sa cluster mismo.

Pipila ka mga pananglitan sa divergence:

  • Pagbag-o sa configuration file tungod sa paghiusa sa mga sanga sa Git.
  • Usa ka pagbag-o sa configuration file tungod sa usa ka Git commit nga gihimo sa GUI client.
  • Daghang mga pagbag-o sa gusto nga estado tungod sa PR sa Git nga gisundan sa paghimo sa imahe sa sulud ug pagbag-o sa config.
  • Usa ka pagbag-o sa estado sa cluster tungod sa usa ka sayup, panagbangi sa kapanguhaan nga nagresulta sa "dili maayo nga pamatasan", o yano nga random nga pagtipas gikan sa orihinal nga kahimtang.

Unsa ang mekanismo sa convergence?

Pipila ka mga pananglitan:

  • Para sa mga sudlanan ug mga cluster, ang mekanismo sa convergence gihatag sa Kubernetes.
  • Ang parehas nga mekanismo mahimong magamit sa pagdumala sa mga aplikasyon ug disenyo nga nakabase sa Kubernetes (sama sa Istio ug Kubeflow).
  • Usa ka mekanismo alang sa pagdumala sa interaksyon sa operasyon tali sa Kubernetes, mga repositoryo sa imahe ug gihatag sa Git GitOps operator Weave Flux, nga maoy bahin Paghabol sa Cloud.
  • Alang sa base nga mga makina, ang mekanismo sa convergence kinahanglan nga deklaratibo ug awtonomiya. Gikan sa atong kaugalingong kasinatian makaingon kita niana Terraform labing duol niini nga kahulugan, apan nagkinahanglan gihapon og kontrol sa tawo. Niini nga diwa, gipadako sa GitOps ang tradisyon sa Infrastructure isip Code.

Gikombinar sa GitOps ang Git sa maayo kaayong convergence engine sa Kubernetes aron makahatag ug modelo sa pagpahimulos.

GitOps nagtugot kanato sa pag-ingon: Kadto lamang nga mga sistema nga mahulagway ug maobserbahan ang mahimong awtomatiko ug makontrol.

GitOps gituyo alang sa tibuok cloud native stack (pananglitan, Terraform, ug uban pa)

Ang GitOps dili lang Kubernetes. Gusto namon nga ang tibuuk nga sistema mapalihok nga deklaratibo ug magamit ang panagsama. Sa tibuok nga sistema gipasabot namo ang usa ka koleksyon sa mga palibot nga nagtrabaho uban sa Kubernetes - pananglitan, "dev cluster 1", "produksyon", ug uban pa. Ang matag palibot naglakip sa mga makina, clusters, aplikasyon, ingon man usab sa mga interface alang sa gawas nga mga serbisyo nga naghatag og data, monitoring ug etc.

Matikdi kung unsa ka hinungdanon ang Terraform sa problema sa bootstrap sa kini nga kaso. Ang mga Kubernetes kinahanglang i-deploy sa usa ka dapit, ug ang paggamit sa Terraform nagpasabot nga mahimo natong i-apply ang parehas nga mga workflow sa GitOps aron makamugna ang control layer nga nagpaluyo sa Kubernetes ug mga aplikasyon. Kini usa ka mapuslanon nga labing maayo nga praktis.

Adunay lig-on nga pagtutok sa paggamit sa mga konsepto sa GitOps sa mga layer sa ibabaw sa Kubernetes. Sa pagkakaron, adunay GitOps-type nga mga solusyon alang sa Istio, Helm, Ksonnet, OpenFaaS ug Kubeflow, ingon man, pananglitan, alang sa Pulumi, nga naghimo og usa ka layer alang sa pagpalambo sa mga aplikasyon alang sa cloud native.

Kubernetes CI/CD: pagtandi sa GitOps sa ubang mga pamaagi

Sama sa giingon, ang GitOps duha ka butang:

  1. Ang operating model alang sa Kubernetes ug cloud native nga gihulagway sa ibabaw.
  2. Ang agianan padulong sa usa ka palibot sa pagdumala sa aplikasyon nga nakasentro sa developer.

Alang sa kadaghanan, ang GitOps sa panguna usa ka daloy sa trabaho nga gibase sa mga pagduso sa Git. Ganahan pud mi niya. Apan dili lang kana: tan-awon nato karon ang mga pipeline sa CI/CD.

GitOps makahimo sa padayon nga deployment (CD) alang sa Kubernetes

Ang GitOps nagtanyag usa ka padayon nga mekanismo sa pag-deploy nga nagtangtang sa panginahanglan alang sa bulag nga "mga sistema sa pagdumala sa pagdeploy." Gibuhat sa Kubernetes ang tanan alang kanimo.

  • Ang pag-update sa aplikasyon nanginahanglan pag-update sa Git. Kini usa ka transactional update sa gusto nga estado. Ang "Deployment" gihimo dayon sulod sa cluster ni Kubernetes mismo base sa updated nga deskripsyon.
  • Tungod sa kinaiya sa kung giunsa ang Kubernetes molihok, kini nga mga pag-update managsama. Naghatag kini usa ka mekanismo alang sa padayon nga pag-deploy diin ang tanan nga mga update kay atomic.
  • Mubo nga sulat: Paghabol sa Cloud nagtanyag ug GitOps operator nga nag-integrate sa Git ug Kubernetes ug nagtugot sa CD nga ipahigayon pinaagi sa pag-reconcile sa gitinguha ug kasamtangang kahimtang sa cluster.

Kung walay kubectl ug mga script

Kinahanglan nimong likayan ang paggamit sa Kubectl aron ma-update ang imong cluster, ug labi na nga likayan ang paggamit sa mga script sa paggrupo sa mga kubectl nga mga mando. Hinuon, sa pipeline sa GitOps, ang usa ka user maka-update sa ilang Kubernetes cluster pinaagi sa Git.

Ang mga benepisyo naglakip sa:

  1. Husto. Ang usa ka grupo sa mga pag-update mahimong magamit, mahiusa ug sa katapusan ma-validate, nga magdala kanamo nga mas duol sa katuyoan sa pag-deploy sa atomo. Sa kasukwahi, ang paggamit sa mga script wala maghatag bisan unsang garantiya sa panagtapok (dugang pa niini sa ubos).
  2. Kasegurohan. Pagkutlo Kelsey Hightower: "Ilimitahan ang pag-access sa imong Kubernetes cluster sa mga himan sa automation ug mga administrador nga responsable sa pag-debug o pagmentinar niini." tan-awa usab akong publikasyon mahitungod sa kaluwasan ug pagsunod sa teknikal nga mga detalye, ingon man usab artikulo bahin sa pag-hack sa Homebrew pinaagi sa pagpangawat sa mga kredensyal gikan sa usa ka walay pagtagad nga sinulat nga Jenkins script.
  3. Kasinatian sa Gumagamit. Gibutyag sa Kubectl ang mga mekaniko sa modelo sa butang nga Kubernetes, nga medyo komplikado. Sa tinuud, ang mga tiggamit kinahanglan nga makig-uban sa sistema sa mas taas nga lebel sa abstraction. Dinhi akong hisgotan pag-usab si Kelsey ug irekomendar ang pagtan-aw ingon ana nga resume.

Ang kalainan tali sa CI ug CD

GitOps nagpauswag sa kasamtangan nga mga modelo sa CI/CD.

Ang modernong CI server usa ka himan sa orkestra. Sa partikular, kini usa ka himan alang sa pag-orkestra sa mga pipeline sa CI. Naglakip kini sa pagtukod, pagsulay, paghiusa sa punoan, ug uban pa. Ang mga server sa CI nag-automate sa pagdumala sa mga komplikado nga multi-step pipelines. Usa ka sagad nga tentasyon mao ang pag-script sa usa ka set sa mga update sa Kubernetes ug pagdagan kini isip bahin sa usa ka pipeline aron iduso ang mga pagbag-o sa cluster. Sa pagkatinuod, kini ang gibuhat sa daghang mga eksperto. Bisan pa, dili kini labing maayo, ug ania kung ngano.

Ang CI kinahanglan nga gamiton sa pagduso sa mga update sa punoan, ug ang Kubernetes cluster kinahanglan nga mag-usab sa kaugalingon base sa mga update aron sa pagdumala sa CD sa sulod. Gitawag namo kini modelo sa pagbitad alang sa CD, dili sama sa modelo sa pagduso sa CI. Ang CD usa ka bahin runtime nga orkestra.

Ngano nga ang mga CI Server Dili Kinahanglan nga Magbuhat sa mga CD pinaagi sa Direktang Mga Update sa Kubernetes

Ayaw gamita ang CI server aron i-orkestrate ang direktang mga update sa Kubernetes isip set sa mga trabaho sa CI. Kini ang anti-pattern nga atong gihisgutan gisulti na sa imong blog.

Balikan nato si Alice ug Bob.

Unsang mga problema ang ilang giatubang? Ang CI server ni Bob nag-aplay sa mga pagbag-o sa cluster, apan kung kini nag-crash sa proseso, si Bob dili mahibal-an kung unsa ang kahimtang sa cluster (o kinahanglan) sa o kung giunsa kini pag-ayo. Tinuod usab kini sa kaso sa kalampusan.

Ibutang ta nga ang team ni Bob nagtukod ug bag-ong imahe ug dayon gi-patch ang ilang mga deployment aron ma-deploy ang imahe (tanan gikan sa CI pipeline).

Kung ang imahe magtukod normal, apan ang pipeline mapakyas, ang team kinahanglan nga mahibal-an:

  • Nahimo na ba ang pag-update?
  • Naglunsad ba kami og bag-ong pagtukod? Motultol ba kini sa wala kinahanglana nga mga epekto - nga adunay posibilidad nga adunay duha nga pagtukod sa parehas nga dili mausab nga imahe?
  • Kinahanglan ba naton maghulat alang sa sunod nga pag-update sa dili pa ipadagan ang pagtukod?
  • Unsa man gyud ang nahitabo? Unsa nga mga lakang ang kinahanglan nga balikon (ug hain ang luwas nga balikon)?

Ang pag-establisar og Git-based workflow dili garantiya nga ang grupo ni Bob dili makasugat niini nga mga problema. Mahimo gihapon silang masayop sa commit push, tag, o uban pang parameter; bisan pa, kini nga pamaagi mas duol sa usa ka klaro nga tanan-o-wala nga pamaagi.

Sa pag-summarize, ania kung ngano nga ang mga server sa CI dili kinahanglan mag-atubang sa CD:

  • Ang pag-update sa mga script dili kanunay nga deterministiko; Sayon ra ang masayop niini.
  • Ang mga server sa CI wala mag-converge sa declarative cluster model.
  • Lisod ang paggarantiya sa pagka-idempotency. Ang mga tiggamit kinahanglan nga makasabut sa lawom nga semantika sa sistema.
  • Mas lisud ang pagbawi gikan sa usa ka partial failure.

Matikdi bahin sa Helm: Kung gusto nimo gamiton ang Helm, among girekomenda nga ikombinar kini sa usa ka GitOps operator sama sa Flux-Helm. Makatabang kini nga masiguro ang panagsama. Ang timon mismo dili deterministiko o atomiko.

GitOps isip labing maayong paagi sa pagpatuman sa Padayon nga Paghatud para sa Kubernetes

Ang grupo ni Alice ug Bob nagpatuman sa GitOps ug nakadiskobre nga nahimong mas sayon ​​ang pagtrabaho sa mga produkto sa software, pagmintinar sa taas nga performance ug kalig-on. Tapuson nato kini nga artikulo sa usa ka ilustrasyon nga nagpakita kung unsa ang hitsura sa ilang bag-ong pamaagi. Hinumdumi nga kasagaran naghisgut kami bahin sa mga aplikasyon ug serbisyo, apan ang GitOps mahimong magamit sa pagdumala sa usa ka tibuuk nga plataporma.

Operating model para sa Kubernetes

Tan-awa ang mosunod nga diagram. Gipresentar niini ang Git ug ang container image repository isip shared resources para sa duha ka orchestrated lifecycles:

  • Usa ka padayon nga integration pipeline nga nagbasa ug nagsulat sa mga file ngadto sa Git ug maka-update sa usa ka repository sa mga hulagway sa sudlanan.
  • Usa ka Runtime GitOps pipeline nga naghiusa sa pag-deploy sa pagdumala ug pag-obserbar. Nagbasa ug nagsulat kini sa mga file sa Git ug maka-download sa mga imahe sa sulud.

Unsa ang mga panguna nga nahibal-an?

  1. Pagbulag sa mga kabalaka: Palihug timan-i nga ang duha ka mga pipeline mahimo ra nga makigkomunikar pinaagi sa pag-update sa Git o sa repository sa imahe. Sa laing pagkasulti, adunay usa ka firewall tali sa CI ug sa runtime nga palibot. Gitawag namo kini nga "immutability firewall" (dili mausab nga firewall), tungod kay ang tanan nga mga update sa repository naghimo og bag-ong mga bersyon. Para sa dugang nga impormasyon bahin niini nga hilisgutan, tan-awa ang mga slide 72-87 kini nga presentasyon.
  2. Mahimo nimong gamiton ang bisan unsang CI ug Git server: GitOps nagtrabaho uban sa bisan unsa nga component. Mahimo nimong ipadayon ang paggamit sa imong paborito nga mga server sa CI ug Git, mga repositoryo sa imahe, ug mga suite sa pagsulay. Hapit tanan nga uban nga Padayon nga Paghatud nga mga himan sa merkado nanginahanglan sa ilang kaugalingon nga CI / Git server o repository sa imahe. Mahimo kini nga usa ka limitasyon nga hinungdan sa pag-uswag sa cloud native. Uban sa GitOps, mahimo nimong gamiton ang pamilyar nga mga himan.
  3. Mga panghitabo isip himan sa paghiusa: Sa diha nga ang data sa Git gi-update, ang Weave Flux (o ang Weave Cloud operator) nagpahibalo sa runtime. Sa matag higayon nga dawaton sa Kubernetes ang usa ka set sa pagbag-o, gi-update ang Git. Naghatag kini usa ka yano nga modelo sa panagsama alang sa pag-organisar sa mga daloy sa trabaho alang sa GitOps, sama sa gipakita sa ubos.

konklusyon

GitOps naghatag sa lig-on nga update garantiya nga gikinahanglan sa bisan unsa nga modernong CI/CD himan:

  • automation;
  • panagtapok;
  • pagkawalay mahimo;
  • determinismo.

Mahinungdanon kini tungod kay nagtanyag kini usa ka modelo sa operasyon alang sa mga lumad nga developer sa panganod.

  • Ang tradisyonal nga mga himan alang sa pagdumala ug pagmonitor sa mga sistema gilambigit sa mga operations team nga naglihok sulod sa usa ka runbook (usa ka set sa naandan nga mga pamaagi ug operasyon - gibanabana nga transl.), gihigot sa usa ka piho nga deployment.
  • Sa cloud native management, ang observability tools mao ang pinakamaayong paagi sa pagsukod sa mga resulta sa deployment aron ang development team makatubag dayon.

Hunahunaa ang daghang mga kumpol nga nagkatag sa lainlaing mga panganod ug daghang mga serbisyo nga adunay ilang kaugalingon nga mga koponan ug mga plano sa pag-deploy. Ang GitOps nagtanyag ug scale-invariant nga modelo para sa pagdumala niining tanan nga kadagaya.

PS gikan sa tighubad

Basaha usab sa among blog:

Ang mga rehistradong tiggamit lamang ang makaapil sa survey. Sign in, walay sapayan.

Nahibal-an ba nimo ang bahin sa GitOps sa wala pa kini nga duha nga paghubad nagpakita sa Habré?

  • Oo, nahibal-an nako ang tanan

  • Sa taphaw lang

  • Dili

35 ka tiggamit ang nagboto. 10 ka tiggamit ang nag-abstain.

Source: www.habr.com

Idugang sa usa ka comment