Kodi GitOps ndi chiyani?

Zindikirani. transl.: Pambuyo pa chofalitsa chaposachedwapa zakuthupi za njira zokoka ndikukankhira mu GitOps, tidawona chidwi ndi chitsanzochi mwachisawawa, koma panali zofalitsa zochepa za chilankhulo cha Chirasha pamutuwu (palibe chilichonse pa HabrΓ©). Choncho, ndife okondwa kupereka kwa inu kumasulira kwa nkhani ina - ngakhale pafupifupi chaka chapitacho! - kuchokera ku Weaveworks, mutu wake womwe unapanga mawu akuti "GitOps." Mawuwa akufotokoza chiyambi cha njirayo komanso kusiyana kwakukulu ndi zomwe zilipo kale.

Chaka chapitacho tinasindikiza chiyambi cha GitOps. Kalelo, tidagawana momwe gulu la Weaveworks lidakhazikitsira SaaS kwathunthu kutengera Kubernetes ndikupanga njira zabwino zoperekera, kuyang'anira, ndi kuyang'anira mumtambo wachilengedwe.

Nkhaniyo inakhala yotchuka. Anthu ena adayamba kuyankhula za GitOps ndikuyamba kusindikiza zida zatsopano za git kukankha, chitukuko, zinsinsi, ntchito, kuphatikiza mosalekeza ndi zina zotero. Zawonekera patsamba lathu ambiri zolemba ndi ma GitOps amagwiritsa ntchito. Koma anthu ena amakhalabe ndi mafunso. Kodi chitsanzocho chikusiyana bwanji ndi chachikhalidwe? zomangamanga monga code ndi kutumiza mosalekeza (kupititsa patsogolo)? Kodi ndikofunikira kugwiritsa ntchito Kubernetes?

Posakhalitsa tinazindikira kuti kulongosola kwatsopano kunali kofunika, kupereka:

  1. Chiwerengero chachikulu cha zitsanzo ndi nkhani;
  2. Kutanthauzira kwachindunji kwa GitOps;
  3. Poyerekeza ndi miyambo yopereka mosalekeza.

M’nkhaniyi tayesetsa kutchula mitu yonseyi. Imapereka mawu oyambira osinthidwa a GitOps komanso wopanga mapulogalamu ndi CI/CD. Timayang'ana kwambiri Kubernetes, ngakhale mtunduwo ukhoza kukhala wamba.

Kumanani ndi GitOps

Tangolingalirani za Alice. Amayendetsa Inshuwaransi ya Banja, yomwe imapereka inshuwaransi yaumoyo, galimoto, nyumba, ndi maulendo kwa anthu omwe ali otanganidwa kwambiri kuti azindikire zomwe zimafunikira komanso zotuluka m'makontrakitala. Bizinesi yake idayamba ngati projekiti yapambali pomwe Alice amagwira ntchito kubanki ngati wasayansi ya data. Tsiku lina adazindikira kuti atha kugwiritsa ntchito njira zotsogola zamakompyuta kuti azisanthula bwino deta ndikupanga phukusi la inshuwaransi. Otsatsa ndalama adathandizira ntchitoyi, ndipo tsopano kampani yake imabweretsa ndalama zoposa $ 20 miliyoni pachaka ndipo ikukula mofulumira. Pakadali pano, imalemba anthu 180 m'maudindo osiyanasiyana. Izi zikuphatikiza gulu laukadaulo lomwe limapanga, kusunga webusayiti, database, ndikusanthula makasitomala. Gulu la anthu 60 limatsogozedwa ndi Bob, director director akampani.

Gulu la Bob limagwiritsa ntchito machitidwe opanga mumtambo. Ntchito zawo zazikulu zimayendera GKE, kugwiritsa ntchito Kubernetes pa Google Cloud. Kuphatikiza apo, amagwiritsa ntchito zida zosiyanasiyana za data ndi analytics pantchito yawo.

Inshuwaransi ya Banja sinayambe kugwiritsa ntchito zotengera, koma idagwidwa ndi chidwi cha Docker. Kampaniyo posakhalitsa idazindikira kuti GKE idapangitsa kuti zikhale zosavuta kuyika magulu kuti ayese zatsopano. Jenkins wa CI ndi Quay adawonjezedwa kuti akonze zolembera zolembera, zolembera zidalembedwa za Jenkins zomwe zidakankhira zida zatsopano ndi masinthidwe ku GKE.

Nthawi ina yapita. Alice ndi Bob adakhumudwa ndi momwe adasankhira njira yomwe adasankha komanso momwe zimakhudzira bizinesiyo. Kukhazikitsidwa kwa makontena sikunapangitse zokolola monga momwe gulu limayembekezera. Nthawi zina kutumizidwa kunkasweka, ndipo sizinkadziwika ngati kusintha kwa ma code ndiko chifukwa. Zinakhalanso zovuta kutsatira zosintha za config. Nthawi zambiri zinali zofunikira kupanga gulu latsopano ndikusunthira mapulogalamu kwa ilo, chifukwa iyi inali njira yosavuta yochotsera chisokonezo chomwe dongosololi lidakhala. Alice ankawopa kuti zinthu zidzaipiraipira pamene ntchitoyo ikukula (kuphatikizanso, pulojekiti yatsopano yochokera pamakina ophunzirira inali kupangidwa). Bob anali atagwiritsa ntchito nthawi zambiri ndipo samamvetsetsa chifukwa chake mapaipiwo anali osakhazikika, osakwera bwino, ndipo amafunikira kuchitapo kanthu pamanja nthawi ndi nthawi?

Kenako adaphunzira za GitOps. Chisankhochi chinakhaladi chomwe amafunikira kuti apite patsogolo molimba mtima.

Alice ndi Bob akhala akumva za Git, DevOps, ndi zomangamanga monga ma code workflows kwa zaka zambiri. Chomwe chili chapadera pa GitOps ndikuti imabweretsa machitidwe abwino kwambiri, onse otsimikizika komanso okhazikika - pakukhazikitsa malingaliro awa potengera Kubernetes. Mutu uwu anawuka mobwerezabwereza, kuphatikizapo mu Weaveworks blog.

Inshuwaransi ya Banja imasankha kukhazikitsa GitOps. Kampaniyo tsopano ili ndi makina opangira ntchito omwe amagwirizana ndi Kubernetes ndikuphatikiza liwiro ndi batachifukwa iwo:

  • anapeza kuti zokolola za timuyi zawonjezeka kawiri popanda wina wopenga;
  • anasiya kutumikira zolembedwa. M'malo mwake, tsopano atha kuyang'ana kwambiri zatsopano ndikuwongolera njira zaumisiri - mwachitsanzo, kuyambitsa kutulutsa kwa canary ndikuwongolera kuyesa;
  • takonza njira yotumizira anthu kuti isagwe;
  • adapeza mwayi wobwezeretsa ntchito pambuyo polephera pang'ono popanda kulowererapo pamanja;
  • kugula ntchitoΠΎKudalira kwakukulu mu machitidwe operekera. Alice ndi Bob adapeza kuti atha kugawa gululo kukhala magulu ang'onoang'ono omwe amagwira ntchito limodzi;
  • akhoza kupanga 30-50 kusintha kwa polojekiti tsiku lililonse kupyolera mu khama la gulu lirilonse ndikuyesa njira zatsopano;
  • n'zosavuta kukopa omanga atsopano ku polojekiti, omwe ali ndi mwayi wofalitsa zosintha pakupanga pogwiritsa ntchito zopempha kukoka mkati mwa maola angapo;
  • kukwanitsa kufufuza mosavuta mkati mwa SOC2 (kuti zitsatire opereka chithandizo ndi zofunikira pakuwongolera kotetezedwa kwa data; werengani zambiri, mwachitsanzo, apa - pafupifupi. transl.).

Chinachitika ndi chiyani?

GitOps ndi zinthu ziwiri:

  1. Chitsanzo chogwirira ntchito cha Kubernetes ndi chikhalidwe cha mtambo. Imapereka njira zabwino zoperekera, kuyang'anira, ndi kuyang'anira magulu omwe ali ndi zida ndi ntchito. Kutanthauzira kokongola mu mawonekedwe slide imodzi ΠΎΡ‚ Luis Faceira:
  2. Njira yopangira chilengedwe chowongolera mapulogalamu. Timagwiritsa ntchito mayendedwe a Git pazochita zonse ndi chitukuko. Chonde dziwani kuti izi sizongokhudza Git kukankha, komanso kukonza zida zonse za CI/CD ndi UI/UX.

Mawu ochepa okhudza Git

Ngati simukudziwa machitidwe owongolera mtundu ndi kayendedwe ka Git, timalimbikitsa kwambiri kuphunzira za iwo. Kugwira ntchito ndi nthambi ndi zopempha zokoka kungawoneke ngati matsenga akuda poyamba, koma phindu ndilofunika kuyesetsa. Pano nkhani yabwino kuyamba.

Momwe Kubernetes amagwirira ntchito

M'nkhani yathu, Alice ndi Bob adatembenukira ku GitOps atagwira ntchito ndi Kubernetes kwakanthawi. Zowonadi, GitOps imagwirizana kwambiri ndi Kubernetes - ndi chitsanzo cha magwiridwe antchito ndi ntchito zozikidwa pa Kubernetes.

Kodi Kubernetes amapereka chiyani kwa ogwiritsa ntchito?

Nazi zina zazikulu:

  1. Mu chitsanzo cha Kubernetes, chirichonse chikhoza kufotokozedwa mu mawonekedwe olengeza.
  2. Seva ya Kubernetes API imatenga chilengezochi ngati chothandizira ndikuyesa kubweretsa gululo m'boma lomwe likufotokozedwa mu chilengezocho.
  3. Zilengezo ndi zokwanira kufotokoza ndi kuyang'anira ntchito zosiyanasiyana - "ntchito."
  4. Zotsatira zake, kusintha kwa ntchito ndi masango kumachitika chifukwa cha:
    • kusintha kwa zithunzi zotengera;
    • kusintha kwa declarative specifications;
    • zolakwika m'chilengedwe - mwachitsanzo, kuwonongeka kwa chidebe.

Kuthekera Kwakukulu Kophatikizana Kwa Kubernetes

Woyang'anira akasintha masinthidwe, oimba a Kubernetes amawagwiritsa ntchito pagululo malinga ngati dziko lake lili. sichidzayandikira kusinthidwa kwatsopano. Mtunduwu umagwira ntchito pachinthu chilichonse cha Kubernetes ndipo umachulukira ndi Custom Resource Definitions (CRDs). Chifukwa chake, Kubernetes deployments ali ndi zinthu zotsatirazi:

  • Zodzichitira: Zosintha za Kubernetes zimapereka njira yosinthira njira yosinthira mwachisomo komanso munthawi yake.
  • Kusintha: Kubernetes apitiliza kuyesa zosintha mpaka zitapambana.
  • Kupanda mphamvu: Kugwiritsa ntchito mobwerezabwereza kolumikizana kumabweretsa zotsatira zomwezo.
  • Kutsimikiza: Zothandizira zikakwanira, momwe gulu lasinthidwa limatengera dziko lomwe mukufuna.

Momwe GitOps imagwirira ntchito

Taphunzira mokwanira za Kubernetes kuti tifotokoze momwe GitOps imagwirira ntchito.

Tiyeni tibwerere kumagulu a microservices a Family Insurance. Kodi nthawi zambiri amayenera kuchita chiyani? Yang'anani pamndandanda womwe uli pansipa (ngati zinthu zilimo zikuwoneka zachilendo kapena zachilendo, chonde lekani kudzudzula ndikukhala nafe). Izi ndi zitsanzo chabe za Jenkins based workflows. Pali njira zina zambiri mukamagwira ntchito ndi zida zina.

Chachikulu ndichakuti tikuwona kuti zosintha zilizonse zimatha ndikusintha kwamafayilo osintha ndi ma Git repositories. Kusintha kumeneku kwa Git kumapangitsa kuti "GitOps operator" asinthe gululo:

1. Njira yogwirira ntchito: "Jenkins kumanga - nthambi ya master".
Mndandanda wa ntchito:

  • Jenkins amakankhira zithunzi zojambulidwa ku Quay;
  • Jenkins amakankhira ma chart a config ndi Helm ku chidebe chosungira;
  • Ntchito yamtambo imakopera ma config ndi ma chart kuchokera ku chidebe chosungira chachikulu kupita ku master Git repository;
  • Wothandizira GitOps amasintha gululo.

2. Jenkins build - kumasula kapena hotfix nthambi:

  • Jenkins amakankhira zithunzi zosatchulidwa ku Quay;
  • Jenkins amakankhira ma chart a config ndi Helm ku chidebe chosungirako;
  • Ntchito yamtambo imakopera ma config ndi ma chart kuchokera pachidebe chosungirako kupita kumalo osungira a Git;
  • Wothandizira GitOps amasintha gululo.

3. Jenkins amamanga - yambitsani kapena perekani nthambi:

  • Jenkins amakankhira zithunzi zosatchulidwa ku Quay;
  • Jenkins amakankhira ma chart a config ndi Helm mu chidebe chosungiramo;
  • Ntchito yamtambo imakopera ma config ndi ma chart kuchokera pachidebe chosungirako chosungirako kupita kumalo osungira a Git;
  • Wothandizira GitOps amasintha gululo.

4. Kuwonjeza kasitomala watsopano:

  • Woyang'anira kapena woyang'anira (LCM / ops) amayitana Gradle kuti ayambe kutumiza ndi kukonza zolemetsa zolemetsa za netiweki (NLBs);
  • LCM/ops imapanga masinthidwe atsopano kuti akonzekere kutumizidwa kwa zosintha;
  • Wothandizira GitOps amasintha gululo.

Kufotokozera mwachidule kwa GitOps

  1. Fotokozani zomwe mukufuna dongosolo lonselo pogwiritsa ntchito zofotokozera za chilengedwe chilichonse (m'nkhani yathu, gulu la Bob limatanthauzira dongosolo lonse la Git).
    • Malo osungira a Git ndiye gwero limodzi la chowonadi chokhudza momwe dongosolo lonse likufunira.
    • Zosintha zonse pazomwe mukufuna zimapangidwa kudzera muzochita mu Git.
    • Ma parameter onse omwe amafunidwa amawonekeranso mumagulu omwewo. Mwanjira iyi titha kudziwa ngati zikugwirizana (kuphatikiza, kuphatikizakapena kusiyana (kusiyana, siyana) zofunidwa ndi zowonedwa.
  2. Ngati zomwe mukufuna komanso zomwe zikuwonetsedwa zikusiyana, ndiye:
    • Pali njira yolumikizirana yomwe posakhalitsa imangogwirizanitsa zomwe mukufuna ndikuwonera. Mkati mwa tsango, Kubernetes amachita izi.
    • Ntchitoyi imayamba nthawi yomweyo ndi chenjezo la "kusintha kodzipereka".
    • Pambuyo pa nthawi yosinthika, chenjezo la "diff" litha kutumizidwa ngati mayiko ali osiyana.
  3. Mwanjira iyi, zonse zomwe zimachitika mu Git zimayambitsa zosintha zotsimikizika komanso zopanda pake pagulu.
    • Rollback ndikulumikizana kudera lomwe munkafuna kale.
  4. Kulumikizana ndi komaliza. Kupezeka kwake kumawonetsedwa ndi:
    • Palibe zidziwitso zosiyana za nthawi inayake.
    • chenjezo la "converged" (mwachitsanzo, webhook, Git writeback chochitika).

Kodi kusiyana ndi chiyani?

Tiyeni tibwerezenso: zinthu zonse zofunidwa zamagulu ziyenera kuwonedwa mumagulu omwewo.

Zitsanzo zina za kusiyana:

  • Kusintha kwa fayilo yosinthira chifukwa chophatikiza nthambi mu Git.
  • Kusintha kwa fayilo yosinthira chifukwa cha kudzipereka kwa Git kopangidwa ndi kasitomala wa GUI.
  • Zosintha zingapo kudera lomwe mukufuna chifukwa cha PR mu Git ndikutsatiridwa ndi kupanga chithunzi cha chidebe ndikusintha kosintha.
  • Kusintha kwa chikhalidwe cha gulu chifukwa cha cholakwika, kusamvana kwazinthu zomwe zimabweretsa "khalidwe loyipa", kapena kungopatuka kuchokera komwe kudayambika.

Kodi njira yolumikizirana ndi chiyani?

Zitsanzo zochepa:

  • Kwa zotengera ndi magulu, njira yolumikizira imaperekedwa ndi Kubernetes.
  • Njira yomweyi ingagwiritsidwe ntchito kuyang'anira ntchito ndi mapangidwe a Kubernetes (monga Istio ndi Kubeflow).
  • Njira yoyendetsera ntchito yolumikizirana pakati pa Kubernetes, malo osungira zithunzi ndi Git imapereka Wothandizira GitOps Weave Flux, yomwe ili gawo Weave Cloud.
  • Kwa makina oyambira, njira yolumikizirana iyenera kukhala yolengeza komanso yodziyimira payokha. Kuchokera pa zimene takumana nazo tinganene zimenezo Terraform pafupi kwambiri ndi tanthauzo ili, komabe amafuna kulamulira anthu. Mwanjira iyi, GitOps imakulitsa mwambo wa Infrastructure monga Code.

GitOps imaphatikiza Git ndi injini yabwino kwambiri yolumikizira Kubernetes kuti ipereke chitsanzo chodyera masuku pamutu.

GitOps imatilola kunena kuti: Ndi machitidwe okhawo omwe angafotokozedwe ndi kuwonedwa akhoza kukhala odzipangira okha ndikuwongoleredwa.

GitOps idapangidwira mulu wonse wamtambo (mwachitsanzo, Terraform, etc.)

GitOps sikuti ndi Kubernetes chabe. Tikufuna kuti dongosolo lonse liziyendetsedwa momveka bwino ndikugwiritsa ntchito kulumikizana. Ndi dongosolo lonse timatanthawuza kusonkhanitsa kwa malo omwe akugwira ntchito ndi Kubernetes - mwachitsanzo, "dev cluster 1", "kupanga", ndi zina zotero. ndi etc.

Zindikirani momwe Terraform ilili yofunikira pavuto la bootstrapping pankhaniyi. Kubernetes iyenera kutumizidwa kwinakwake, ndipo kugwiritsa ntchito Terraform kumatanthauza kuti titha kugwiritsa ntchito mayendedwe a GitOps omwewo kuti apange gawo lowongolera lomwe limathandizira Kubernetes ndi ntchito. Iyi ndi njira yabwino yothandiza.

Pali kuyang'ana kwakukulu pakugwiritsa ntchito malingaliro a GitOps pazigawo pamwamba pa Kubernetes. Pakadali pano, pali mayankho amtundu wa GitOps a Istio, Helm, Ksonnet, OpenFaaS ndi Kubeflow, komanso, mwachitsanzo, a Pulumi, omwe amapanga wosanjikiza wopangira mapulogalamu amtundu wamtambo.

Kubernetes CI/CD: kuyerekeza GitOps ndi njira zina

Monga tanenera, GitOps ndi zinthu ziwiri:

  1. Mtundu wogwirira ntchito wa Kubernetes ndi mbadwa zamtambo zomwe zafotokozedwa pamwambapa.
  2. Njira yopita ku malo oyendetsera mapulogalamu okhazikika.

Kwa ambiri, GitOps kwenikweni ndi kayendedwe ka ntchito kutengera Git kukankha. Ifenso timamukonda. Koma si zokhazo: tiyeni tsopano tione mapaipi a CI/CD.

GitOps imathandizira kutumiza mosalekeza (CD) kwa Kubernetes

GitOps imapereka njira yotumizira mosalekeza yomwe imachotsa kufunikira kwa "machitidwe oyendetsera ntchito" osiyana. Kubernetes amakuchitirani ntchito zonse.

  • Kusintha pulogalamuyi kumafuna kusinthidwa mu Git. Uku ndikusintha kwanyengo komwe mukufuna. "Deployment" imachitidwa mkati mwa gulu la Kubernetes palokha kutengera zomwe zasinthidwa.
  • Chifukwa cha momwe Kubernetes amagwirira ntchito, zosinthazi zimasintha. Izi zimapereka njira yotumizira mosalekeza momwe zosintha zonse zili ndi atomiki.
  • Taonani: Weave Cloud imapereka wogwiritsa ntchito GitOps yemwe amaphatikiza Git ndi Kubernetes ndikulola CD kuti ichitike poyanjanitsa zomwe mukufuna komanso momwe gululi likufunira.

Popanda kubectl ndi zolemba

Muyenera kupewa kugwiritsa ntchito Kubectl kuti musinthe gulu lanu, makamaka pewani kugwiritsa ntchito zolemba pagulu la malamulo a kubectl. M'malo mwake, ndi mapaipi a GitOps, wogwiritsa ntchito amatha kusintha gulu lawo la Kubernetes kudzera pa Git.

Ubwino umaphatikizapo:

  1. Kulondola. Gulu la zosintha litha kugwiritsidwa ntchito, kusinthidwa ndikutsimikiziridwa, kutifikitsa kufupi ndi cholinga cha kutumiza ma atomiki. Mosiyana ndi izi, kugwiritsa ntchito zolembera sikumapereka chitsimikizo cha kulumikizana (zambiri pa izi pansipa).
  2. Chitetezo. Kutchula mawu Kelsey Hightower: "Ikani mwayi wofikira gulu lanu la Kubernetes pazida zodzipangira okha ndi oyang'anira omwe ali ndi udindo wowongolera kapena kuusamalira." onaninso kufalitsa kwanga za chitetezo ndi kutsatira specifications luso, komanso nkhani ya kuthyolako Homebrew poba ziphaso zolembedwa mosasamala za Jenkins script.
  3. Zochitika Zogwiritsa Ntchito. Kubectl amawulula makina amtundu wa Kubernetes, omwe ndi ovuta kwambiri. Momwemo, ogwiritsa ntchito ayenera kuyanjana ndi dongosolo pamlingo wapamwamba kwambiri. Apa ndinenanso za Kelsey ndikupangira kuwonera kuyambiranso kotere.

Kusiyana pakati pa CI ndi CD

GitOps imathandizira mitundu yomwe ilipo ya CI/CD.

Seva yamakono ya CI ndi chida choyimba. Makamaka, ndi chida chopangira mapaipi a CI. Izi zikuphatikizapo kumanga, kuyesa, kuphatikiza ku thunthu, ndi zina zotero. Ma seva a CI amayendetsa kasamalidwe ka mapaipi ovuta kwambiri. Chiyeso chofala ndikulemba zosintha za Kubernetes ndikuziyendetsa ngati gawo la mapaipi kukankhira zosintha pagulu. Ndithudi, izi n’zimene akatswiri ambiri amachita. Komabe, izi sizili bwino, ndipo ndichifukwa chake.

CI iyenera kugwiritsidwa ntchito kukankhira zosintha pa thunthu, ndipo gulu la Kubernetes lizisintha lokha kutengera zosinthazo kuti muzitha kuyang'anira CD mkati. Ife timachitcha icho kukoka chitsanzo kwa CD, mosiyana ndi mtundu wa CI push. CD ndi gawo Runtime orchestration.

Chifukwa chiyani ma seva a CI Sayenera Kuchita ma CD kudzera pa Zosintha Zachindunji ku Kubernetes

Osagwiritsa ntchito seva ya CI kukonza zosintha za Kubernetes ngati gulu la ntchito za CI. Izi ndi zotsutsana ndi chitsanzo zomwe tikukamba zanenedwa kale pa blog yanu.

Tiyeni tibwerere kwa Alice ndi Bob.

Kodi anakumana ndi mavuto otani? Seva ya CI ya Bob imagwiritsa ntchito zosintha pamaguluwo, koma ikawonongeka, Bob sangadziwe kuti gululo liri (kapena liyenera kukhala) kapena momwe angalikonzere. N'chimodzimodzinso ngati munthu wapambana.

Tiyerekeze kuti gulu la Bob lipanga chithunzi chatsopano kenako ndikuyika zida zawo kuti atumize chithunzicho (zonse kuchokera paipi ya CI).

Ngati chithunzicho chikuyenda bwino, koma payipi ikulephera, gululo liyenera kudziwa:

  • Kodi zosintha zatulutsidwa?
  • Kodi tikuyambitsa kumanga kwatsopano? Kodi izi zidzatsogolera ku zotsatira zosafunikira - ndi kuthekera kokhala ndi mapangidwe awiri a chithunzi chofanana chosasinthika?
  • Kodi tidikire zosintha zina tisanayambe kumanga?
  • Kodi chinalakwika ndi chiyani kwenikweni? Ndi masitepe ati omwe akuyenera kubwerezedwa (ndipo ndi ati omwe ali otetezeka kubwereza)?

Kukhazikitsa mayendedwe ozikidwa pa Git sikutsimikizira kuti gulu la Bob silikumana ndi mavutowa. Amatha kulakwitsabe ndikukankha, chizindikiro, kapena magawo ena; komabe, njira iyi ikadali pafupi kwambiri ndi njira yodziwikiratu kapena yopanda chilichonse.

Mwachidule, ichi ndichifukwa chake ma seva a CI sayenera kuchita ndi CD:

  • Zolemba zosintha nthawi zonse sizimatsimikizira; Ndi zophweka kulakwitsa mwa iwo.
  • Ma seva a CI sasintha kukhala gulu lolengeza.
  • Ndizovuta kutsimikizira kuti munthu sakufuna. Ogwiritsa ntchito ayenera kumvetsetsa semantics yakuya yadongosolo.
  • Ndizovuta kwambiri kuchira kulephera pang'ono.

Zindikirani za Helm: Ngati mukufuna kugwiritsa ntchito Helm, tikupangira kuti muphatikize ndi wogwiritsa ntchito GitOps monga Flux-Helm. Izi zidzathandiza kugwirizanitsa. Helm palokha si deterministic kapena atomiki.

GitOps ngati njira yabwino kwambiri yoperekera Kutumiza Kopitilira kwa Kubernetes

Gulu la Alice ndi Bob limagwiritsa ntchito GitOps ndikuzindikira kuti zakhala zosavuta kugwira ntchito ndi mapulogalamu apulogalamu, kukhalabe ndi magwiridwe antchito komanso kukhazikika. Tiyeni titsirize nkhaniyi ndi chithunzi chosonyeza momwe njira yawo yatsopano imawonekera. Kumbukirani kuti nthawi zambiri tikulankhula za mapulogalamu ndi ntchito, koma GitOps itha kugwiritsidwa ntchito kuyang'anira nsanja yonse.

Njira yogwiritsira ntchito Kubernetes

Onani chithunzi chotsatirachi. Imawonetsa Git ndi malo osungira zithunzi zachidebe ngati zida zomwe zimagawidwa pamipikisano iwiri yamoyo:

  • Njira yophatikizira yosalekeza yomwe imawerenga ndikulemba mafayilo ku Git ndipo imatha kusintha malo osungiramo zithunzi.
  • Mapaipi a Runtime GitOps omwe amaphatikiza kutumiza ndi kasamalidwe ndi kuwonera. Imawerenga ndikulemba mafayilo ku Git ndipo imatha kutsitsa zithunzi zachidebe.

Zotsatira zake zazikulu ndi zotani?

  1. Kulekana kwa nkhawa: Chonde dziwani kuti mapaipi onsewa amatha kulumikizana kokha pokonzanso Git kapena malo osungira zithunzi. Mwa kuyankhula kwina, pali firewall pakati pa CI ndi malo othamanga. Timachitcha "immutability firewall" (Immutability firewall), popeza zosintha zonse zosungira zimapanga mitundu yatsopano. Kuti mudziwe zambiri pa mutuwu, onani zithunzi 72-87 chiwonetsero ichi.
  2. Mutha kugwiritsa ntchito seva iliyonse ya CI ndi Git: GitOps imagwira ntchito ndi gawo lililonse. Mutha kupitiliza kugwiritsa ntchito ma seva omwe mumakonda a CI ndi Git, malo osungira zithunzi, ndi ma suites oyesa. Pafupifupi zida zina zonse zotumizira mosalekeza pamsika zimafuna seva yawo ya CI/Git kapena malo osungira zithunzi. Izi zitha kukhala cholepheretsa kukula kwa cloud native. Ndi GitOps, mutha kugwiritsa ntchito zida zomwe mukudziwa.
  3. Zochitika ngati chida chophatikiza: Chidziwitso mu Git chikangosinthidwa, Weave Flux (kapena Weave Cloud operator) amadziwitsa nthawi yothamanga. Nthawi zonse Kubernetes akavomereza kusintha, Git imasinthidwa. Izi zimapereka njira yosavuta yophatikizira yokonzekera mayendedwe a GitOps, monga zikuwonekera pansipa.

Pomaliza

GitOps imapereka zitsimikizo zamphamvu zomwe zimafunidwa ndi chida chilichonse chamakono cha CI/CD:

  • zochita zokha;
  • kulumikizana;
  • kusowa mphamvu;
  • determinism.

Izi ndizofunikira chifukwa zimapereka chitsanzo chogwirira ntchito kwa opanga mitambo.

  • Zida zachikhalidwe zoyendetsera ndi kuyang'anira machitidwe zimagwirizanitsidwa ndi magulu ogwira ntchito omwe akugwira ntchito mkati mwa runbook (kachitidwe kachizolowezi ndi kachitidwe - pafupifupi transl.), kumangirizidwa ku kutumizidwa kwina.
  • Mu kasamalidwe kachilengedwe kamtambo, zida zowonera ndi njira yabwino kwambiri yoyezera zotsatira za kutumizidwa kuti gulu lachitukuko liyankhe mwachangu.

Tangoganizani magulu ambiri amwazikana pamitambo yosiyanasiyana ndi mautumiki ambiri okhala ndi magulu awo komanso mapulani otumiza. GitOps imapereka chitsanzo chosasinthika chowongolera kuchuluka konseku.

PS kuchokera kwa womasulira

Werenganinso pa blog yathu:

Ogwiritsa ntchito olembetsedwa okha ndi omwe angatenge nawo gawo pa kafukufukuyu. Lowani muakauntichonde.

Kodi mumadziwa za GitOps matanthauzidwe awiriwa asadawonekere pa HabrΓ©?

  • Inde, ndinkadziwa zonse

  • Mwachiphamaso chabe

  • No

Ogwiritsa 35 adavota. Ogwiritsa ntchito 10 adakana.

Source: www.habr.com

Kuwonjezera ndemanga