Zomwe tapeza kuchokera chaka chosamuka GitLab.com kupita Kubernetes

Zindikirani. transl.: Kukhazikitsidwa kwa Kubernetes ku GitLab kumawerengedwa kuti ndi chimodzi mwazinthu ziwiri zomwe zikuthandizira kukula kwa kampaniyo. Komabe, mpaka posachedwa, zomangamanga za ntchito yapaintaneti ya GitLab.com zidamangidwa pamakina enieni, ndipo pafupifupi chaka chapitacho kusamuka kwake kupita ku K8s kudayamba, komwe sikunamalizidwebe. Ndife okondwa kupereka kumasulira kwa nkhani yaposachedwa ndi injiniya wa GitLab SRE za momwe izi zimachitikira komanso zomwe mainjiniya omwe akuchita nawo ntchitoyi amapeza.

Zomwe tapeza kuchokera chaka chosamuka GitLab.com kupita Kubernetes

Kwa pafupifupi chaka tsopano, gawo lathu la zomangamanga lasamutsa ntchito zonse zomwe zikuchitika pa GitLab.com kupita Kubernetes. Panthawiyi, tinakumana ndi zovuta zokhudzana ndi kusamutsa mautumiki ku Kubernetes, komanso kuyang'anira kutumizidwa kwa hybrid panthawi ya kusintha. M’nkhani ino tikambirana mfundo zofunika kwambiri zimene taphunzira.

Kuyambira pachiyambi cha GitLab.com, ma seva ake adathamanga mumtambo pamakina enieni. Makina awa amayendetsedwa ndi Chef ndikuyika pogwiritsa ntchito athu phukusi lovomerezeka la Linux. Njira yotumizira ngati pulogalamuyo ikufunika kusinthidwa, imangokhala ndikusintha ma seva molumikizana, motsatizana pogwiritsa ntchito payipi ya CI. Njira iyi - ngakhale pang'onopang'ono komanso pang'ono wotopetsa - imawonetsetsa kuti GitLab.com imagwiritsa ntchito njira zokhazikitsira ndikusintha momwemo ngati ogwiritsa ntchito osagwiritsa ntchito intaneti (odziyendetsa) Kuyika kwa GitLab pogwiritsa ntchito phukusi lathu la Linux pa izi.

Timagwiritsa ntchito njirayi chifukwa ndikofunikira kwambiri kukhala ndi zisoni ndi chisangalalo zomwe anthu wamba amakumana nazo akamakhazikitsa ndikusintha makope awo a GitLab. Njirayi idagwira ntchito bwino kwakanthawi, koma kuchuluka kwa ma projekiti pa GitLab kupitilira 10 miliyoni, tidazindikira kuti sikukwaniritsanso zosowa zathu pakukulitsa ndi kutumiza.

Njira zoyambira ku Kubernetes ndi GitLab yamtambo

Ntchitoyi idapangidwa mu 2017 Zithunzi za GitLab kukonzekera GitLab kuti igwiritsidwe ntchito pamtambo, ndikupangitsa ogwiritsa ntchito kukhazikitsa GitLab pamagulu a Kubernetes. Tidadziwa pamenepo kuti kusuntha GitLab kupita ku Kubernetes kukulitsa scalability ya nsanja ya SaaS, kufewetsa kutumiza, ndikuwongolera magwiridwe antchito apakompyuta. Nthawi yomweyo, ntchito zambiri zomwe timagwiritsa ntchito zidadalira magawo okwera a NFS, omwe adachepetsa kusintha kwa makina enieni.

Kukankhira komwe kumachokera kumtambo komanso Kubernetes kunalola mainjiniya athu kukonza zosintha pang'onopang'ono, pomwe tidasiya zina mwazodalira pakugwiritsa ntchito kusungirako maukonde pomwe tikupitiliza kupanga zatsopano. Chiyambireni kukonzekera kusamuka m'chilimwe cha 2019, zambiri mwazolepheretsazi zathetsedwa, ndipo njira yosamukira GitLab.com kupita Kubernetes tsopano ili mkati!

Mawonekedwe a GitLab.com ku Kubernetes

Kwa GitLab.com, timagwiritsa ntchito gulu limodzi lachigawo la GKE lomwe limayang'anira magalimoto onse. Kuti tichepetse zovuta za kusamuka (kovuta kale), timayang'ana kwambiri ntchito zomwe sizidalira kusungirako komweko kapena NFS. GitLab.com imagwiritsa ntchito codebase yomwe imakhala ndi monolithic Rails, ndipo timayendetsa magalimoto kutengera kuchuluka kwa ntchito kupita kumalo osiyanasiyana omwe amadzipatula m'madziwe awo.

Pankhani ya kutsogolo, mitundu iyi imagawidwa kukhala zopempha ku intaneti, API, Git SSH/HTTPS ndi Registry. Pankhani ya backend, timagawaniza ntchito pamzere molingana ndi mawonekedwe osiyanasiyana malire opangira zida, zomwe zimatilola kukhazikitsa Zolinga za Service-Level (SLOs) pazantchito zosiyanasiyana.

Ntchito zonsezi za GitLab.com zimakonzedwa pogwiritsa ntchito tchati cha GitLab Helm chosasinthidwa. Kukonzekera kumachitika mumagulu ang'onoang'ono, omwe amatha kuthandizidwa mwachisawawa pamene tikusamutsa mautumiki kupita kumagulu. Ngakhale tidasankha kuti tisaphatikizepo zina mwazinthu zodziwika bwino pakusamuka, monga Redis, Postgres, GitLab Pages ndi Gitaly, kugwiritsa ntchito Kubernetes kumatilola kuchepetsa kwambiri ma VM omwe Chef amayang'anira pano.

Kubernetes Configuration Visibility and Management

Zokonda zonse zimayendetsedwa ndi GitLab yokha. Pazifukwa izi, ma projekiti atatu okhazikika ozikidwa pa Terraform ndi Helm amagwiritsidwa ntchito. Timayesa kugwiritsa ntchito GitLab yokha ngati kuli kotheka kuyendetsa GitLab, koma pazantchito tili ndi kukhazikitsa kwa GitLab kosiyana. Izi ndizofunikira kuti muwonetsetse kuti simukudalira kupezeka kwa GitLab.com mukamatumiza ndi zosintha za GitLab.com.

Ngakhale mapaipi athu a gulu la Kubernetes amayenda pakuyika kosiyana kwa GitLab, pali magalasi osungiramo ma code omwe amapezeka poyera pama adilesi awa:

  • k8s-workloads/gitlab-com - Kukonzekera kwa GitLab.com kwa tchati cha GitLab Helm;
  • k8s-workloads/gitlab-helmfiles - Imakhala ndi masinthidwe a ntchito zomwe sizikukhudzana mwachindunji ndi pulogalamu ya GitLab. Izi zikuphatikiza masinthidwe odula mitengo ndi kuyang'anira magulu, komanso zida zophatikizika monga PlantUML;
  • Gitlab-com-infrastructure - Kusintha kwa Terraform kwa Kubernetes ndi zomangamanga za VM. Apa mukukonzekera zonse zofunikira kuti muyendetse gululo, kuphatikiza gululo lokha, maiwe a node, maakaunti autumiki, ndi kusungitsa ma adilesi a IP.

Zomwe tapeza kuchokera chaka chosamuka GitLab.com kupita Kubernetes
Mawonekedwe a anthu amawonetsedwa pamene zosintha zapangidwa. mwachidule mwachidule ndi ulalo watsatanetsatane watsatanetsatane womwe SRE imawunika isanasinthe gululo.

Kwa SRE, ulalowu umabweretsa kusiyanasiyana kwatsatanetsatane pakuyika kwa GitLab, komwe kumagwiritsidwa ntchito kupanga ndi kupeza komwe kuli koletsedwa. Izi zimalola ogwira ntchito ndi anthu ammudzi, popanda mwayi wopeza ntchito (yomwe imatsegulidwa kwa ma SRE okha), kuti awone zosintha zosinthidwa. Mwa kuphatikiza chitsanzo cha GitLab chapagulu cha ma code ndi zochitika zapadera za mapaipi a CI, timasunga kayendedwe ka ntchito kamodzi ndikuwonetsetsa kudziyimira pawokha kuchokera ku GitLab.com kuti zisinthidwe.

Zomwe tidazipeza panthawi yakusamuka

Pakusuntha, zokumana nazo zidapezeka zomwe timagwiritsa ntchito pakusamuka kwatsopano ndi kutumizidwa ku Kubernetes.

1. Kukwera mtengo chifukwa cha kuchuluka kwa magalimoto pakati pa madera omwe alipo

Zomwe tapeza kuchokera chaka chosamuka GitLab.com kupita Kubernetes
Ziwerengero za tsiku ndi tsiku (mabyte patsiku) za zombo za Git pa GitLab.com

Google imagawa maukonde ake m'magawo. Izi, nawonso, zimagawidwa m'magawo opezeka (AZ). Git hosting imalumikizidwa ndi kuchuluka kwa data, chifukwa chake ndikofunikira kuti tiwongolere kutuluka kwa netiweki. Kwa magalimoto amkati, egress ndi yaulere ngati ikhala m'dera lomwe likupezeka. Polemba izi, tikutumizira pafupifupi 100 TB ya data patsiku lantchito (ndipo ndizo zosungira za Git). Ntchito zomwe zinkakhala m'makina omwewo mu topology yathu yakale ya VM tsopano ikuyenda mumitundu yosiyanasiyana ya Kubernetes. Izi zikutanthauza kuti magalimoto ena omwe kale anali apafupi kupita ku VM amatha kuyenda kunja kwa madera omwe alipo.

Magulu a GKE Achigawo amakulolani kuti mudutse Magawo angapo Opezeka kuti muwonjezeke. Tikulingalira zotheka adagawa gulu la GKE lachigawo kukhala masango a zone imodzi ntchito zomwe zimapanga kuchuluka kwa magalimoto. Izi zidzachepetsa mtengo wotuluka pomwe mukusunga zisankho za cluster-level redundancy.

2. Malire, zopempha zothandizira ndi makulitsidwe

Zomwe tapeza kuchokera chaka chosamuka GitLab.com kupita Kubernetes
Chiwerengero cha replicas processing kupanga traffic pa registry.gitlab.com. Magalimoto amakwera mpaka 15:00 UTC.

Nkhani yathu yosamuka idayamba mu Ogasiti 2019, pomwe tidasamutsa ntchito yathu yoyamba, GitLab Container Registry, kupita Kubernetes. Ntchito yofunika kwambiri iyi, yokhala ndi magalimoto ambiri inali yabwino kusamuka koyamba chifukwa ndi ntchito yopanda malire yokhala ndi zodalira zochepa zakunja. Vuto loyamba lomwe tidakumana nalo linali kuchuluka kwa ma pod othamangitsidwa chifukwa chosowa kukumbukira pama node. Chifukwa cha izi, tinayenera kusintha zopempha ndi malire.

Zinapezeka kuti pakugwiritsa ntchito komwe kukumbukira kumachulukira pakapita nthawi, kutsika kwa zopempha (kusunga kukumbukira kwa poto iliyonse) kuphatikiza ndi "zowolowa manja" zolimba pakugwiritsa ntchito kumabweretsa kuchulukira. (kuchuluka) nodes ndi mlingo waukulu wa kuthamangitsidwa. Pofuna kuthana ndi vutoli, zinali choncho adaganiza zoonjezera zopempha ndi kuchepetsa malire. Izi zidachotsa kupsinjika kwa ma node ndikuwonetsetsa kuti ma pod ali ndi moyo womwe sunakhazikitse kwambiri mfundozo. Tsopano timayamba kusamuka ndi zopempha zowolowa manja (komanso zofanana) ndikuchepetsa zikhalidwe, kuzisintha ngati pakufunika.

3. Miyezo ndi zipika

Zomwe tapeza kuchokera chaka chosamuka GitLab.com kupita Kubernetes
Gawo lachitukuko limayang'ana kwambiri latency, kuchuluka kwa zolakwika ndi kuchuluka komwe kumayikidwa zolinga za utumiki (SLO) yolumikizidwa ndi kupezeka kwadongosolo kwadongosolo lathu.

M’chaka chathachi, chimodzi mwa zinthu zofunika kwambiri m’gawo lachitukuko chakhala kusintha pakuwunika ndi kugwira ntchito ndi ma SLO. Ma SLO adatilola kukhazikitsa zolinga zantchito zapayekha zomwe tidaziyang'anitsitsa panthawi yomwe tikusamuka. Koma ngakhale ndikuwoneka bwino kumeneku, sizotheka nthawi zonse kuwona zovuta pogwiritsa ntchito ma metric ndi zidziwitso. Mwachitsanzo, poyang'ana kwambiri za latency ndi zolakwika, sitipereka zonse zomwe zimagwiritsidwa ntchito pa ntchito yomwe ikusamukira.

Nkhaniyi idadziwika nthawi yomweyo pambuyo posamutsa zolemetsa zina kupita kumagulu. Zinakhala zovuta kwambiri pamene timayenera kuyang'ana ntchito zomwe chiwerengero cha zopempha chinali chaching'ono, koma chomwe chinali ndi kudalira kwapadera kwapadera. Chimodzi mwa maphunziro ofunikira pa kusamuka chinali kufunika koganizira osati ma metrics poyang'anira, komanso zipika ndi "mchira wautali" (izi ndi za kotero kugawa kwawo pa tchati - pafupifupi. transl.) zolakwika. Tsopano pakusamuka kulikonse timaphatikizapo mndandanda wa mafunso olembera (mafunso) ndikukonzekera njira zobwezera zomveka bwino zomwe zingathe kusamutsidwa kuchoka ku kusintha kwina kupita kwina ngati mavuto abuka.

Kutumikira zopempha zomwezo mofanana ndi zomangamanga zakale za VM ndi zomangamanga zatsopano za Kubernetes zinali zovuta. Mosiyana ndi kunyamuka-ndi-kusintha kusamuka (kutumiza mwachangu kwa mapulogalamu "monga momwe ziliri" kumalo atsopano; zambiri zitha kuwerengedwa, mwachitsanzo, apa - pafupifupi. transl.), ntchito yofananira pa ma VM "akale" ndi Kubernetes imafuna kuti zida zowunikira zigwirizane ndi madera onse awiri ndikutha kuphatikiza ma metric kukhala amodzi. Ndikofunikira kuti tigwiritse ntchito ma dashboard omwewo ndi mafunso a log kuti tikwaniritse kuwonetseredwa kosasintha panthawi ya kusintha.

4. Kusintha magalimoto kukhala gulu latsopano

Kwa GitLab.com, gawo la ma seva laperekedwa canary stage. Canary Park imapereka ntchito zathu zamkati komanso imatha yothandizidwa ndi ogwiritsa ntchito. Koma idapangidwa kuti iyese zosintha zomwe zachitika pakupanga ndikugwiritsa ntchito. Ntchito yoyamba yosamuka idayamba ndikuvomera kuchuluka kwa magalimoto amkati, ndipo tikupitilizabe kugwiritsa ntchito njirayi kuti tiwonetsetse kuti ma SLO akukwaniritsidwa tisanatumize magalimoto onse kugulu.

Pankhani ya kusamuka, izi zikutanthauza kuti zopempha zamapulojekiti amkati zimatumizidwa ku Kubernetes poyamba, ndiyeno pang'onopang'ono timasintha magalimoto onse kumagulu mwa kusintha kulemera kwa backend kupyolera mu HAProxy. Panthawi yosamuka kuchokera ku VM kupita ku Kubernetes, zinaonekeratu kuti zinali zopindulitsa kwambiri kukhala ndi njira yosavuta yolondolera magalimoto pakati pa zowonongeka zakale ndi zatsopano ndipo, motero, sungani zowonongeka zakale kuti zibwezeretsedwe m'masiku oyambirira pambuyo pa kusamuka.

5. Kusungirako mphamvu za poto ndi ntchito yake

Nthawi yomweyo vuto lotsatirali lidadziwika: ma pod a Registry service adayamba mwachangu, koma kukhazikitsa ma pod a Sidekiq kudayamba. mphindi ziwiri. Nthawi yayitali yoyambira ma pod a Sidekiq idakhala vuto pomwe tidayamba kusamuka ku Kubernetes kwa ogwira ntchito omwe amafunikira kukonza ntchito mwachangu komanso mwachangu.

Pachifukwa ichi, phunziro linali lakuti ngakhale Kubernetes 'Horizontal Pod Autoscaler (HPA) imayendetsa bwino kukula kwa magalimoto, ndikofunika kulingalira za makhalidwe a ntchito ndikugawa mphamvu zosungirako ma pod (makamaka pamene zofunikira zikugawidwa mosagwirizana). Kwa ife, panali kuwonjezeka kwadzidzidzi kwa ntchito, zomwe zinapangitsa kuti ntchito ziwonjezeke mofulumira, zomwe zinapangitsa kuti ma CPU achuluke tisanakhale ndi nthawi yowonjezera dziwe la node.

Nthawi zonse pamakhala chiyeso chofinyira momwe tingathere kuchokera mgulu, komabe, popeza tidakumana ndi zovuta zogwira ntchito, tsopano tikuyamba ndi bajeti yowolowa manja ndikuyichepetsa pambuyo pake, kuyang'anitsitsa ma SLO. Kukhazikitsa ma pod a ntchito ya Sidekiq kwakwera kwambiri ndipo tsopano kumatenga pafupifupi masekondi 40 pafupifupi. Kuchokera pakuchepetsa nthawi yoyambitsa ma pod adapambana onse a GitLab.com ndi ogwiritsa ntchito athu odziyendetsa okha omwe akugwira ntchito ndi tchati chovomerezeka cha GitLab Helm.

Pomaliza

Titasamuka ntchito iliyonse, tidakondwera ndi maubwino ogwiritsira ntchito Kubernetes popanga: kutumizira mwachangu komanso kotetezeka, kukulitsa, komanso kugawa bwino zinthu. Kuphatikiza apo, zabwino zakusamuka zimapitilira ntchito ya GitLab.com. Kusintha kulikonse pa tchati chovomerezeka cha Helm kumapindulitsa ogwiritsa ntchito ake.

Ndikukhulupirira kuti mwasangalala ndi nkhani yathu ya Kubernetes yosamukirako. Tikupitiriza kusamutsa mautumiki onse atsopano ku gulu. Zambiri zowonjezera zitha kupezeka m'mabuku otsatirawa:

PS kuchokera kwa womasulira

Werenganinso pa blog yathu:

Source: www.habr.com

Kuwonjezera ndemanga