Kedu ihe bụ GitOps?

Rịba ama. ntụgharị asụsụ.: Mgbe e bipụtara na nso nso a ihe onwunwe banyere ụzọ ịdọrọ na ntinye na GitOps, anyị hụrụ mmasị na ihe nlereanya a n'ozuzu ya, mana enwere akwụkwọ asụsụ Russian dị ole na ole na isiokwu a (ọ dịghị nke ọ bụla na Habré). Ya mere, anyị nwere obi ụtọ ịnye nlebara anya gị ntụgharị asụsụ nke edemede ọzọ - n'agbanyeghị ihe fọrọ nke nta ka ọ bụrụ otu afọ gara aga! - sitere na Weaveworks, onye isi ya chepụtara okwu ahụ bụ "GitOps." Edemede ahụ na-akọwa ihe bụ isi nke ụzọ na isi ọdịiche dị na ndị dị adị.

Otu afọ gara aga anyị bipụtara mmalite nke GitOps. Laa azụ n'oge ahụ, anyị kesara otu ndị otu Weaveworks siri wepụta SaaS kpamkpam dabere na Kubernetes wee mepụta usoro kachasị mma maka itinye, jikwaa na nleba anya na gburugburu igwe ojii.

Akụkọ ahụ wee bụrụ nke a ma ama. Ndị ọzọ malitere ikwu maka GitOps wee malite ibipụta ngwaọrụ ọhụrụ maka gbaa ọsọ, mmepe, ihe nzuzo, ọrụ, na-aga n'ihu mwekota were gabazie. Pụtara na webụsaịtị anyị ọnụ ọgụgụ buru ibu mbipụta na GitOps jiri ikpe. Ma ụfọdụ ndị ka nwere ajụjụ. Kedu ka ihe nlereanya si dị iche na nke omenala? akụrụngwa dị ka koodu na nnyefe na-aga n'ihu (nnyefe na-aga n'ihu)? Ọ dị mkpa iji Kubernetes?

N'oge na-adịghị anya, anyị chọpụtara na nkọwa ọhụrụ dị mkpa, na-enye:

  1. Ọnụ ọgụgụ dị ukwuu nke ihe atụ na akụkọ;
  2. Nkọwa akọwapụtara nke GitOps;
  3. Tụnyere na nnyefe ọdịnala na-aga n'ihu.

N'isiokwu a, anyị gbalịrị ikpuchi isiokwu ndị a niile. Ọ na-enye mmeghe emelitere GitOps yana onye nrụpụta yana echiche CI/CD. Anyị na-elekwasị anya na Kubernetes n'ụzọ bụ isi, n'agbanyeghị na enwere ike ịkọwapụta ihe nlereanya ahụ.

Zute GitOps

Were ya na Alice. Ọ na-agbakọ Inshọransị Ezinụlọ, nke na-enye mkpuchi ahụike, ụgbọ ala, ụlọ, na njem njem nye ndị na-arụsi ọrụ ike iji chọpụta ihe ndị dị na nkwekọrịta n'onwe ha. Azụmahịa ya malitere dị ka ọrụ n'akụkụ mgbe Alice na-arụ ọrụ n'ụlọ akụ dị ka ọkà mmụta sayensị data. Otu ụbọchị ọ chọpụtara na ya nwere ike iji algọridim kọmputa dị elu iji nyochaa data nke ọma na ịmepụta ngwugwu mkpuchi. Ndị ọchụnta ego kwadoro ọrụ ahụ, ugbu a ụlọ ọrụ ya na-eweta ihe karịrị nde $20 kwa afọ ma na-eto ngwa ngwa. Ugbu a, ọ na-ewe mmadụ 180 n'ọrụ n'ọkwa dị iche iche. Nke a gụnyere otu teknụzụ na-etolite, na-edobe webụsaịtị, nchekwa data, na nyochaa isi ndị ahịa. Ndị otu nke mmadụ iri isii na-edu Bob, onye ntụzi teknụzụ nke ụlọ ọrụ ahụ.

Ndị otu Bob na-ebuga usoro mmepụta na igwe ojii. Ngwa isi ha na-agba na GKE, na-eji Kubernetes eme ihe na Google Cloud. Na mgbakwunye, ha na-eji data dị iche iche na ngwaọrụ nyocha na ọrụ ha.

Inshọransị ezinụlọ ewepụtaghị iji arịa, mana ọ dabara na ịnụ ọkụ n'obi Docker. Ụlọ ọrụ ahụ chọpụtara n'oge na-adịghị anya na GKE mere ka ọ dị mfe ibugharị ụyọkọ iji nwalee atụmatụ ọhụrụ. Agbakwunyere Jenkins maka CI na Quay iji hazie ndekọ ndekọ akpa, edere ederede maka Jenkins nke kpaliri igbe ọhụrụ na nhazi na GKE.

Oge ụfọdụ agafeela. Alice na Bob nwere ndakpọ olileanya na arụmọrụ nke ụzọ ha họọrọ na mmetụta ọ na-enwe na azụmahịa ahụ. Iwebata arịa emeghị ka nrụpụta dị ka ndị otu ahụ tụrụ anya. Mgbe ụfọdụ mbugharị ga-agbaji, ma amabeghị ma ọ bụ mgbanwe koodu ga-ata ụta. Ọ tụgharịrị bụrụ ihe siri ike ịchọta mgbanwe nhazi. Ọtụtụ mgbe, ọ dị mkpa ịmepụta ụyọkọ ọhụrụ ma bugharịa ngwa na ya, ebe ọ bụ na nke a bụ ụzọ kachasị mfe iji kpochapụ ọgbaghara nke usoro ahụ aghọwo. Alice na-atụ egwu na ọnọdụ ahụ ga-akawanye njọ ka ngwa ahụ mepụtara (na mgbakwunye, ọrụ ọhụrụ dabere na mmụta igwe na-emepụta). Bob ewepụtala ọtụtụ n'ime ọrụ ahụ ma ọ ghọtaghị ihe kpatara pipeline ahụ ka na-akwụsighị ike, ọ gbachaghị nke ọma, ma chọọ enyemaka aka site n'oge ruo n'oge?

Mgbe ahụ, ha mụtara gbasara GitOps. Mkpebi a mechara bụrụ kpọmkwem ihe ha kwesịrị iji obi ike gaa n'ihu.

Alice na Bob na-anụ maka Git, DevOps, na akụrụngwa dị ka koodu na-arụ ọrụ ruo ọtụtụ afọ. Ihe dị iche na GitOps bụ na ọ na-eweta usoro omume kachasị mma-ma nke doro anya na nke ziri ezi-maka mmejuputa echiche ndị a na gburugburu Kubernetes. Isiokwu a bilie ugboro ugboro, gụnyere na blọọgụ weaveworks.

Inshọransị ezinụlọ kpebiri ime GitOps. Ụlọ ọrụ ugbu a nwere ụdị ọrụ akpaghị aka nke dabara na Kubernetes ma jikọta ya speed na nkwụsi iken'ihi na ha:

  • chọpụtara na mmepụta nke otu ahụ mụbara okpukpu abụọ n'enweghị onye ọ bụla na-agba ara;
  • kwụsịrị ijere edemede ozi. Kama, ha nwere ike itinye uche ugbu a na njirimara ọhụrụ ma melite usoro injinia - dịka ọmụmaatụ, iwebata canary rollouts na imeziwanye ule;
  • anyị emeziwanyela usoro ntinye ihe nke mere na ọ na-adịkarịghị agbaji;
  • nwetara ohere iweghachite deployments mgbe obere akụkụ ọdịda na-enweghị aka aka;
  • zụrụ ejiоNtụkwasị obi ka ukwuu na usoro nnyefe. Alice na Bob chọpụtara na ha nwere ike kewaa otu ahụ n'ime otu microservice na-arụ ọrụ n'usoro;
  • nwere ike ime mgbanwe 30-50 na ọrụ ahụ kwa ụbọchị site na mgbalị nke otu ọ bụla ma gbalịa usoro ọhụrụ;
  • ọ dị mfe ịdọta ndị mmepe ọhụrụ na ọrụ ahụ, ndị nwere ohere ịmepụta mmelite na mmepụta site na iji arịrịọ ịdọrọ n'ime awa ole na ole;
  • dị mfe ịgafe nyocha n'ime usoro nke SOC2 (maka nnabata nke ndị na-enye ọrụ nwere ihe achọrọ maka njikwa data echekwara; gụkwuo, dịka ọmụmaatụ, ebe a - ihe ruru. ntụgharị asụsụ.).

Kedu ihe mere?

GitOps bụ ihe abụọ:

  1. Ụdị ọrụ maka Kubernetes na igwe ojii. Ọ na-enye usoro kachasị mma maka ibugharị, jikwaa, na nyochaa ụyọkọ na ngwa nwere akpa. Nkọwa mara mma n'ụdị otu slide si Luis Faceira:
  2. Ụzọ nke ịmepụta gburugburu ebe njikwa ngwa nke onye nrụpụta-centric. Anyị na-etinye usoro ọrụ Git na arụmọrụ yana mmepe. Biko mara na nke a abụghị naanị maka Git push, kama maka ịhazi ngwa CI/CD na UI/UX dum.

Okwu ole na ole gbasara Git

Ọ bụrụ na ịmabeghị sistemụ njikwa ụdị yana usoro ọrụ dabere na Git, anyị na-akwado ka ị mụta banyere ha. Ịrụ ọrụ na alaka na ịdọrọ arịrịọ nwere ike iyi ka anwansi ojii na mbụ, mana uru bara uru mgbalị ahụ. Ebe a ezi isiokwu ibido.

Ka Kubernetes si arụ ọrụ

Na akụkọ anyị, Alice na Bob tụgharịrị na GitOps ka ha na Kubernetes rụkọrọ ọrụ ruo nwa oge. N'ezie, GitOps nwere njikọ chiri anya na Kubernetes - ọ bụ ihe nlere arụmọrụ maka akụrụngwa na ngwa dabere na Kubernetes.

Kedu ihe Kubernetes na-enye ndị ọrụ?

Nke a bụ ụfọdụ isi atụmatụ:

  1. Na ụdị Kubernetes, enwere ike ịkọwa ihe niile n'ụdị nkwupụta.
  2. Sava Kubernetes API na-ewere nkwupụta a dị ka ntinye wee na-agba mbọ iwebata ụyọkọ ahụ na steeti akọwara na nkwupụta ahụ.
  3. Nkwupụta zuru ezu iji kọwaa na jikwaa ụdị ọrụ dị iche iche - "ngwa."
  4. N'ihi ya, mgbanwe na ngwa na ụyọkọ na-eme n'ihi:
    • mgbanwe na ihe oyiyi akpa;
    • mgbanwe na nkọwapụta nkwupụta;
    • njehie na gburugburu ebe obibi - dịka ọmụmaatụ, mkpọka akpa.

Ike nnabata Kubernetes

Mgbe onye nchịkwa mere mgbanwe nhazi, Kubernetes orchestrator ga-etinye ha na ụyọkọ ahụ ma ọ bụrụhaala na steeti ya dị. agaghị abịaru nso na nhazi ọhụrụ ahụ. Ihe nlereanya a na-arụ ọrụ maka akụrụngwa Kubernetes ọ bụla ma bụrụ nke a na-emezigharị ya na nkọwapụta akụrụngwa omenala (CRDs). Ya mere, ntinye nke Kubernetes nwere ihe ndị a magburu onwe ya:

  • Akpaka: Mmelite Kubernetes na-enye usoro iji megharịa usoro nke itinye mgbanwe n'ụzọ amara na n'oge.
  • Nkwekọrịta: Kubernetes ga-aga n'ihu na-anwa mmelite ruo mgbe ịga nke ọma.
  • Enweghị ike: Ngwa ugboro ugboro nke convergence na-eduga otu nsonaazụ ahụ.
  • Mkpebi: Mgbe akụrụngwa zuru oke, ọnọdụ ụyọkọ emelitere na-adabere naanị na steeti achọrọ.

Ka GitOps si arụ ọrụ

Anyị amụtala nke ọma gbasara Kubernetes iji kọwaa otu GitOps si arụ ọrụ.

Ka anyị laghachi na otu microservices inshọransị ezinụlọ. Gịnị ka ha na-emekarị? Lee ndepụta dị n'okpuru (ọ bụrụ na ihe ọ bụla dị na ya dị ka ihe ijuanya ma ọ bụ na-amaghị ama, biko kwụsị ịkatọ ma nọrọnyere anyị). Ndị a bụ naanị ihe atụ nke usoro ọrụ dabere na Jenkins. Enwere ọtụtụ usoro ndị ọzọ mgbe ị na-arụ ọrụ na ngwaọrụ ndị ọzọ.

Ihe bụ isi bụ na anyị na-ahụ na mmelite ọ bụla na-ejedebe na mgbanwe na faịlụ nhazi na Git repositories. Mgbanwe ndị a na Git kpatara "onye ọrụ GitOps" imelite ụyọkọ:

1. Usoro ọrụ: "Jenkins wu - ngalaba ukwu".
Ndepụta ọrụ:

  • Jenkins na-ebugharị ihe onyonyo akpado na Quay;
  • Jenkins na-ebugharị nhazi na eserese Helm na bọket nchekwa nna ukwu;
  • Ọrụ igwe ojii na-ebipụta nhazi na eserese site na bọket nchekwa nna ukwu gaa na ebe nchekwa Git;
  • Onye ọrụ GitOps na-emelite ụyọkọ ahụ.

2. Jenkins wuo - ngalaba ntọhapụ ma ọ bụ hotfix:

  • Jenkins na-akwali onyonyo na-enweghị akara na Quay;
  • Jenkins na-ebugharị config na Helm chaatị na ịwụ nchekwa nchekwa;
  • Ọrụ igwe ojii na-edepụta nhazi na eserese site na ịwụ nchekwa nchekwa na ebe nchekwa Git;
  • Onye ọrụ GitOps na-emelite ụyọkọ ahụ.

3. Jenkins wuo - wulite ma ọ bụ nwee alaka ụlọ ọrụ:

  • Jenkins na-akwali onyonyo na-enweghị akara na Quay;
  • Jenkins na-akwali nhazi na eserese Helm n'ime bọket nchekwa mmepe;
  • Ọrụ igwe ojii na-edepụta nhazi na eserese site na bọket nchekwa mmepe gaa na ebe nchekwa Git mmepe;
  • Onye ọrụ GitOps na-emelite ụyọkọ ahụ.

4. Na-agbakwụnye onye ahịa ọhụrụ:

  • Onye njikwa ma ọ bụ onye nchịkwa (LCM/ops) na-akpọ Gradle ka ọ buru ibu ma hazie ndị na-ebu ibu netwọk (NLBs);
  • LCM/ops na-eme nhazi ọhụrụ iji kwado ntinye maka mmelite;
  • Onye ọrụ GitOps na-emelite ụyọkọ ahụ.

Nkọwa dị nkenke nke GitOps

  1. Kọwaa ọnọdụ a chọrọ nke sistemụ niile site na iji nkọwa nkọwa maka gburugburu ebe ọ bụla (na akụkọ anyị, ndị otu Bob na-akọwa nhazi usoro niile na Git).
    • Ebe nchekwa Git bụ otu isi iyi nke eziokwu gbasara ọnọdụ achọrọ nke sistemụ niile.
    • A na-eme mgbanwe niile na steeti achọrọ site na ntinye aka na Git.
    • A na-ahụkwa parampat ụyọkọ niile achọrọ na ụyọkọ n'onwe ya. N'ụzọ dị otú a, anyị nwere ike ikpebi ma ha dabara (converge, ịgbakọta) ma ọ bụ dị iche (iche, iche) chọrọ ma hụ na steeti.
  2. Ọ bụrụ na ọnọdụ achọrọ na nke a hụrụ dị iche, mgbe ahụ:
    • Enwere usoro nchikota nke n'oge na-adịghị anya na-emekọrịta ihe ebumnuche yana steeti ndị a hụrụ. N'ime ụyọkọ ahụ, Kubernetes na-eme nke a.
    • Usoro a na-amalite ozugbo site na “mgbanwe emere”.
    • Mgbe ụfọdụ configurable oge oge, a "dịff" njikere nwere ike izipu ma ọ bụrụ na steeti ndị dị iche iche.
  3. N'ụzọ dị otú a, ihe niile na-eme na Git na-ebute nkwalite nkwenye na nke nwere ike na ụyọkọ ahụ.
    • Rollback bụ njikọta na steeti achọrọ na mbụ.
  4. Nkwekọrịta ahụ bụ nke ikpeazụ. E gosiputara ihe omume ya site na:
    • Enweghị ọkwa dị iche maka oge ụfọdụ.
    • Njikere 'gbakọrọ' (dịka webhook, ihe omume ederede Git).

Kedu ihe bụ divergence?

Ka anyị kwugharịa ọzọ: Ngwongwo ụyọkọ niile achọrọ ga-enwerịrị ike ịhụ ya na ụyọkọ n'onwe ya.

Ụfọdụ ọmụmaatụ nke iche iche:

  • Gbanwee faịlụ nhazi n'ihi njikọta alaka na Git.
  • Mgbanwe na faịlụ nhazi n'ihi ntinye Git nke onye ahịa GUI mere.
  • Ọtụtụ mgbanwe na steeti achọrọ n'ihi PR na Git na-esote site na ịmepụta onyonyo akpa na mgbanwe nhazi.
  • Mgbanwe na steeti ụyọkọ ahụ n'ihi mperi, esemokwu akụrụngwa na-ebute "omume ọjọọ", ma ọ bụ naanị ndapụ site na steeti mbụ.

Gịnị bụ usoro nke convergence?

Ihe atụ ole na ole:

  • Maka arịa na ụyọkọ, Kubernetes na-enye usoro nnabata.
  • Enwere ike iji otu usoro ahụ jikwaa ngwa na atụmatụ dabere na Kubernetes (dịka Istio na Kubeflow).
  • Usoro maka ijikwa mmekọrịta arụ ọrụ n'etiti Kubernetes, ebe nchekwa ihe onyonyo na Git na-enye Onye ọrụ GitOps Weave Flux, nke bụ akụkụ Weave ígwé ojii.
  • Maka igwe isi, usoro njikọta ga-abụrịrị nkwupụta na nke kwụụrụ onwe ya. Site n'ahụmahụ nke anyị, anyị nwere ike ikwu nke ahụ Terraform kacha nso na nkọwa a, mana ka na-achọ njikwa mmadụ. N'echiche a, GitOps gbatịpụrụ ọdịnala akụrụngwa dịka Koodu.

GitOps na-ejikọta Git na ezigbo njiri mara mma nke Kubernetes iji nye ihe nlereanya maka nrigbu.

GitOps na-enye anyị ohere ịsị: Naanị usoro ndị ahụ nwere ike ịkọwa ma hụ nwere ike ịmegharị ma chịkwaa ya.

Ezubere GitOps maka mkpokọta igwe ojii niile (dịka ọmụmaatụ, Terraform, wdg)

GitOps abụghị naanị Kubernetes. Anyị na-achọ ka a na-ebugharị sistemu niile n'ụzọ nkwupụta ma jiri njikọta. Site na usoro dum anyị pụtara mkpokọta gburugburu na-arụ ọrụ na Kubernetes - dịka ọmụmaatụ, "dev cluster 1", "mmepụta", wdg. Ebe ọ bụla na-agụnye igwe, ụyọkọ, ngwa, yana interfaces maka ọrụ mpụga na-enye data, nlekota oru. na wdg.

Rịba ama ka Terraform dị mkpa na nsogbu bootstrapping na nke a. A ghaghị ibuga Kubernetes ebe, na iji Terraform pụtara na anyị nwere ike itinye otu GitOps workflows iji mepụta akara nchịkwa nke na-akwado Kubernetes na ngwa. Nke a bụ omume kacha mma bara uru.

A na-elekwasị anya na itinye echiche GitOps n'ígwé n'elu Kubernetes. N'oge a, e nwere ụdị GitOps-ụdị ngwọta maka Istio, Helm, Ksonnet, OpenFaaS na Kubeflow, yana dịka ọmụmaatụ, maka Pulumi, nke na-emepụta oyi akwa maka ịmepụta ngwa maka nwa amaala ígwé ojii.

Kubernetes CI/CD: atụnyere GitOps na ụzọ ndị ọzọ

Dị ka ekwuru, GitOps bụ ihe abụọ:

  1. Ụdị ọrụ maka Kubernetes na igwe ojii akọwara n'elu.
  2. Ụzọ na gburugburu ebe njikwa ngwa-centric nke onye nrụpụta.

Nye ọtụtụ ndị, GitOps bụ usoro ọrụ dabere na mkpali Git. Ọ na-amasịkwa anyị. Mana nke ahụ abụghị naanị: ka anyị leba anya na pipeline CI/CD.

GitOps na-eme ka ntinye aka na-aga n'ihu (CD) maka Kubernetes

GitOps na-enye usoro mbugharị na-aga n'ihu nke na-ewepụ mkpa maka "sistemụ njikwa nnyefe" dị iche iche. Kubernetes na-arụ ọrụ niile maka gị.

  • Imelite ngwa a chọrọ imelite na Git. Nke a bụ mmelite azụmahịa na steeti achọrọ. "Nkwanye" bụ nke Kubernetes n'onwe ya na-eme n'ime ụyọkọ ahụ dabere na nkọwa emelitere.
  • N'ihi ọdịdị nke ka Kubernetes si arụ ọrụ, mmelite ndị a na-ejikọta ọnụ. Nke a na-enye usoro maka mbugharị na-aga n'ihu nke mmelite niile bụ atọm.
  • Cheta na: Weave ígwé ojii na-enye onye na-ahụ maka GitOps nke jikọtara Git na Kubernetes ma na-enye ohere ka CD rụọ ya site n'ịmekọrịta ihe achọrọ na nke ugbu a nke ụyọkọ.

Enweghị kubectl na scripts

Ị kwesịrị izere iji Kubectl iji melite ụyọkọ gị, ma zere iji scripts iji hazie kubectl iwu. Kama, site na iji pipeline GitOps, onye ọrụ nwere ike imelite ụyọkọ Kubernetes ha site na Git.

Uru gụnyere:

  1. Right. Enwere ike itinye otu mmelite, jikọta na n'ikpeazụ kwadoro, na-eme ka anyị bịaruo nso ebumnuche nke mbugharị atomic. N'ụzọ dị iche, iji scripts anaghị enye nkwa ọ bụla maka njikọta (karịa na nke a n'okpuru).
  2. Nche. Na-ekwu okwu Kelsey Hightower: "Machibido ịbanye na ụyọkọ Kubernetes gị ka ọ bụrụ ngwaọrụ akpaaka yana ndị nchịkwa na-ahụ maka nbibi ma ọ bụ idobe ya." hụkwa akwụkwọ m banyere nchekwa na nnabata na nkọwa teknụzụ, yana akụkọ gbasara hacking Homebrew site na izu ohi nzere site na edemede Jenkins edeghị nke ọma.
  3. Ahụmahụ onye ọrụ. Kubectl na-ekpughe ihe arụ ọrụ nke ihe nlereanya Kubernetes, nke dị mgbagwoju anya. Dị ka o kwesịrị, ndị ọrụ kwesịrị ịmekọrịta usoro ahụ na ọkwa dị elu nke abstraction. N'ebe a, m ga-ezo aka na Kelsey ọzọ wee kwado ikiri malitegharịa dị otú ahụ.

Ọdịiche dị n'etiti CI na CD

GitOps na-eme ka ụdị CI/CD dị adị.

Ihe nkesa CI ọgbara ọhụrụ bụ ngwá ọrụ orchestration. Karịsịa, ọ bụ ngwá ọrụ maka nhazi pipeline CI. Ndị a na-agụnye wuo, nwalee, jikota na ogwe, wdg. CI sava na-akpaghị aka njikwa nke mgbagwoju multi-nzọụkwụ pipeline. Ọnwụnwa a na-ahụkarị bụ ịdepụta otu mmelite Kubernetes wee mee ya dịka akụkụ nke pipeline iji kwalite mgbanwe na ụyọkọ ahụ. N'ezie, nke a bụ ihe ọtụtụ ndị ọkachamara na-eme. Otú ọ dị, nke a adịghị mma, na ebe a bụ ihe kpatara ya.

Ekwesịrị iji CI kwalite mmelite na ogwe osisi, na ụyọkọ Kubernetes kwesịrị ịgbanwe onwe ya dabere na mmelite ndị ahụ iji jikwaa CD n'ime. Anyị na-akpọ ya sere nlereanya maka CD, n'adịghị ka CI push nlereanya. CD bụ akụkụ oge ịgba egwu.

Ihe kpatara na sava CI ekwesịghị ime CD site na mmelite ozugbo na Kubernetes

Ejila ihe nkesa CI hazie mmelite Kubernetes ozugbo dịka otu ọrụ CI. Nke a bụ mgbochi ụkpụrụ anyị na-ekwu maka ya agwalarị na blọọgụ gị.

Ka anyị laghachi azụ Alice na Bob.

Olee nsogbu ndị ha chere ihu? Ihe nkesa CI nke Bob na-etinye mgbanwe na ụyọkọ ahụ, mana ọ bụrụ na ọ daa na usoro ahụ, Bob agaghị ama ihe steeti ụyọkọ ahụ bụ (ma ọ bụ kwesịrị ịdị) ma ọ bụ otu esi edozi ya. Otú ahụ ka ọ dịkwa ma e nwee ihe ịga nke ọma.

Ka anyị were ya na ndị otu Bob rụrụ ihe onyonyo ọhụrụ wee mechie ọrụ ha iji bunye onyonyo a (niile sitere na pipeline CI).

Ọ bụrụ na ihe onyonyo a na-ewuli nke ọma, mana pipeline ada ada, otu ahụ ga-achọpụta:

  • Emelitela mmelite ahụ?
  • Anyị na-amalite ihe nrụpụta ọhụrụ? Nke a ọ ga-eduga ná mmetụta ndị na-enweghị isi - yana enwere ike inwe ụlọ abụọ nke otu ihe oyiyi na-adịghị agbanwe agbanwe?
  • Anyị kwesịrị ichere maka mmelite na-esote tupu ịgba ọsọ ụlọ ahụ?
  • Kedu ihe mere nke ọma? Kedu usoro a ga-eme ugboro ugboro (na nke dị mma ịmegharị)?

Ịmepụta usoro ọrụ dabere na Git anaghị ekwe nkwa na ndị otu Bob agaghị ezute nsogbu ndị a. Ha ka nwere ike imehie ihe site na ntinye aka, mkpado, ma ọ bụ ihe ndị ọzọ; Otú ọ dị, ụzọ a ka dị nso na ụzọ doro anya ma ọ bụ ihe ọ bụla.

Iji chịkọta ọnụ, nke a bụ ihe mere sava CI na-ekwesịghị ijikọ CD:

  • Mmelite scripts abụghị mgbe niile deterministic; Ọ dị mfe imehie ihe na ha.
  • Sava CI anaghị ejikọta na ụdị ụyọkọ nkwupụta.
  • O siri ike ikwe nkwa ike. Ndị ọrụ ga-aghọta ihe omimi omimi nke usoro.
  • Ọ na-esi ike karịa ị nwetaghachi site na ọdịda akụkụ.

Rịba ama gbasara Helm: Ọ bụrụ na ịchọrọ iji Helm, anyị na-akwado ijikọ ya na onye ọrụ GitOps dịka. Flux-Helm. Nke a ga-enyere aka hụ na njikọta. Helm n'onwe ya abụghị deterministic ma ọ bụ atọm.

GitOps dị ka ụzọ kachasị mma iji mejuputa nnyefe na-aga n'ihu maka Kubernetes

Ndị otu Alice na Bob na-arụ ọrụ GitOps wee chọpụta na ọ dịla mfe ịrụ ọrụ na ngwaahịa ngwanrọ, jikwaa arụmọrụ dị elu na nkwụsi ike. Ka anyị jiri ihe atụ na-egosi otú ụzọ ọhụrụ ha si yie, mechie akụkọ a. Buru n'uche na anyị na-ekwukarị maka ngwa na ọrụ, mana enwere ike iji GitOps jikwaa ikpo okwu dum.

Ụdị ọrụ maka Kubernetes

Lee eserese na-esonụ. Ọ na-ewepụta Git na ebe nchekwa ihe onyonyo akpa dị ka akụrụngwa ekekọrịtara maka okirikiri ndụ abụọ a haziri ahazi:

  • Pipeline njikọta na-aga n'ihu na-agụ ma na-ede faịlụ na Git ma nwee ike imelite ebe nchekwa ihe onyonyo akpa.
  • Pipeline GitOps Runtime na-ejikọta ntinye ya na njikwa na nleba anya. Ọ na-agụ ma na-ede faịlụ na Git ma nwee ike budata onyonyo akpa.

Gịnị bụ isi nchoputa?

  1. Nkewa nke nchegbuBiko mara na pipeline abụọ nwere ike ịkpakọrịta naanị site na imelite Git ma ọ bụ ebe nchekwa ihe onyonyo. N'ikwu ya n'ụzọ ọzọ, e nwere firewall n'etiti CI na gburugburu oge ịgba ọsọ. Anyị na-akpọ ya "Imutability firewall" (Firewall adịghị agbanwe agbanwe), ebe ọ bụ na mmelite nchekwa niile na-emepụta ụdị ọhụrụ. Maka ozi ndị ọzọ gbasara isiokwu a, rụtụ aka na slide 72-87 ihe ngosi a.
  2. Ị nwere ike iji sava CI na Git ọ bụla: GitOps na-arụ ọrụ na akụrụngwa ọ bụla. Ị nwere ike ịga n'ihu na-eji sava CI na Git ọkacha mmasị gị, ebe nchekwa ihe oyiyi, na ụlọ nyocha. Ihe fọrọ nke nta ka ọ bụrụ ngwaọrụ ndị ọzọ na-aga n'ihu na-aga n'ihu n'ahịa chọrọ ihe nkesa CI/Git nke ha ma ọ bụ ebe nchekwa onyonyo. Nke a nwere ike bụrụ ihe na-egbochi mmepe nke nwa afọ igwe ojii. Iji GitOps, ị nwere ike iji ngwaọrụ ndị ama ama.
  3. Ihe omume dị ka ngwa ntinye: Ozugbo emelitere data dị na Git, Weave Flux (ma ọ bụ onye na-arụ ọrụ Weave Cloud) na-egosi oge ọ ga-agba ọsọ. Mgbe ọ bụla Kubernetes na-anabata nhazi mgbanwe, Git na-emelite. Nke a na-enye usoro ntinye dị mfe maka ịhazi usoro ọrụ maka GitOps, dị ka egosiri n'okpuru.

nkwubi

GitOps na-enye nkwa nkwalite siri ike nke ngwa CI/CD ọgbara ọhụrụ chọrọ:

  • akpaaka;
  • nchikota;
  • ike ike;
  • determinism.

Nke a dị mkpa n'ihi na ọ na-enye ihe nlereanya na-arụ ọrụ maka igwe ojii mmepe mmepe.

  • Ejikọtara ngwaọrụ ọdịnala maka ijikwa na nleba anya sistemu na otu ọrụ na-arụ ọrụ n'ime akwụkwọ ịgba ọsọ (usoro usoro na arụrụ ọrụ - ihe dị ka transl.), kegidere n'ebe a kapịrị ọnụ.
  • Na njikwa ala igwe ojii, ngwaọrụ nleba anya bụ ụzọ kachasị mma iji tụọ nsonaazụ mbugharị ka ndị otu mmepe nwee ike ịzaghachi ngwa ngwa.

Cheedị echiche ọtụtụ ụyọkọ gbasasịrị n'ofe igwe ojii dị iche iche yana ọtụtụ ọrụ nwere ndị otu ha na atụmatụ ibunye ha. GitOps na-enye ihe atụ na-enweghị atụ maka ijikwa ụbara ihe a niile.

PS sitere na onye ntụgharị

Gụọkwa na blọọgụ anyị:

Naanị ndị ọrụ edebanyere aha nwere ike isonye na nyocha a. banye, Biko.

Ị maara maka GitOps tupu ntụgharị asụsụ abụọ a apụta na Habré?

  • Ee, amaara m ihe niile

  • Naanị elu elu

  • Ọ dịghị

Ndị ọrụ 35 tụrụ vootu. Ndị ọrụ 10 anabataghị.

isi: www.habr.com

Tinye a comment