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?
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;
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:
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:
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:
Mu chitsanzo cha Kubernetes, chirichonse chikhoza kufotokozedwa mu mawonekedwe olengeza.
Seva ya Kubernetes API imatenga chilengezochi ngati chothandizira ndikuyesa kubweretsa gululo m'boma lomwe likufotokozedwa mu chilengezocho.
Zilengezo ndi zokwanira kufotokoza ndi kuyang'anira ntchito zosiyanasiyana - "ntchito."
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.
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:
Mtundu wogwirira ntchito wa Kubernetes ndi mbadwa zamtambo zomwe zafotokozedwa pamwambapa.
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
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:
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).
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.
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.
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?
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.
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.