Abubuwan da muka samo daga shekara guda na ƙaura GitLab.com zuwa Kubernetes

Lura. fassara: Kubernetes tallafi a GitLab ana ɗaukar ɗayan manyan abubuwan biyu waɗanda ke ba da gudummawa ga haɓakar kamfani. Koyaya, har zuwa kwanan nan, an gina ababen more rayuwa na sabis na kan layi na GitLab.com akan injina, kuma kusan shekara guda da ta gabata ƙaura zuwa K8s ya fara, wanda har yanzu ba a gama ba. Mun yi farin cikin gabatar da fassarar wani labarin kwanan nan ta injiniyan GitLab SRE game da yadda hakan ke faruwa da kuma abin da injiniyoyin da ke shiga aikin suka yanke.

Abubuwan da muka samo daga shekara guda na ƙaura GitLab.com zuwa Kubernetes

Kimanin shekara guda yanzu, sashin kayan aikin mu yana ƙaura duk ayyukan da ke gudana akan GitLab.com zuwa Kubernetes. A wannan lokacin, mun ci karo da ƙalubale masu alaƙa ba wai kawai don ƙaura sabis zuwa Kubernetes ba, har ma da gudanar da jigilar matasan yayin canjin yanayi. Za a tattauna darussa masu tamani a wannan talifin.

Tun daga farkon GitLab.com, sabobin sa sun yi gudu a cikin gajimare akan injunan kama-da-wane. Chef ne ke sarrafa waɗannan injunan kama-da-wane kuma an sanya su ta amfani da namu fakitin Linux na hukuma. Dabarun turawa idan ana buƙatar sabunta aikace-aikacen, ya ƙunshi kawai sabunta rundunar jiragen ruwa na uwar garken a cikin haɗin kai, tsari na tsari ta amfani da bututun CI. Wannan hanya - ko da yake a hankali da kadan m - yana tabbatar da cewa GitLab.com yana amfani da shigarwa iri ɗaya da ayyukan daidaitawa kamar masu amfani da layi (mai sarrafa kansa) GitLab ta amfani da fakitinmu na Linux don wannan.

Muna amfani da wannan hanyar saboda yana da matuƙar mahimmanci mu fuskanci duk baƙin ciki da jin daɗin da talakawan al'umma ke fuskanta yayin shigarwa da daidaita kwafin GitLab. Wannan tsarin ya yi aiki da kyau na ɗan lokaci, amma lokacin da adadin ayyukan a kan GitLab ya zarce miliyan 10, mun fahimci cewa bai ƙara biyan bukatunmu na ƙima da turawa ba.

Matakan farko zuwa Kubernetes da GitLab na asali na girgije

An kirkiro aikin a cikin 2017 GitLab Charts don shirya GitLab don ƙaddamar da girgije, da kuma baiwa masu amfani damar shigar da GitLab akan gungu na Kubernetes. Mun san a lokacin cewa motsi GitLab zuwa Kubernetes zai ƙara haɓakar dandamali na SaaS, sauƙaƙe ƙaddamarwa, da inganta ingantaccen kayan aikin lissafi. A lokaci guda, yawancin ayyukan aikace-aikacenmu sun dogara ne akan ɓangarorin NFS da aka ɗora, wanda ya rage saurin sauyawa daga injunan kama-da-wane.

Yunkurin zuwa ga 'yan asalin gajimare da Kubernetes ya ba injiniyoyinmu damar tsara sauye-sauye a hankali, yayin da muka watsar da wasu abubuwan dogaro da aikace-aikacen kan ajiyar hanyar sadarwa yayin da muke ci gaba da haɓaka sabbin abubuwa. Tun lokacin da muka fara shirin ƙaura a lokacin rani na 2019, yawancin waɗannan iyakokin an warware su, kuma tsarin ƙaura GitLab.com zuwa Kubernetes yanzu yana kan aiki sosai!

Siffofin GitLab.com a cikin Kubernetes

Don GitLab.com, muna amfani da gungu na GKE guda ɗaya wanda ke sarrafa duk zirga-zirgar aikace-aikacen. Don rage rikitarwa na ƙaura (riga mai banƙyama), muna mai da hankali kan ayyukan da ba su dogara ga ma'ajiyar gida ko NFS ba. GitLab.com yana amfani da tsarin layin dogo na monolithic, kuma muna kan zirga-zirgar ababen hawa dangane da halayen aikin aiki zuwa wuraren ƙarewa daban-daban waɗanda ke ware cikin wuraren tafkunan nasu.

A cikin yanayin gaba, ana rarraba waɗannan nau'ikan zuwa buƙatun zuwa gidan yanar gizo, API, Git SSH/HTTPS da Rijista. A cikin yanayin baya, muna raba ayyukan a cikin layi bisa ga halaye daban-daban dangane da iyakokin albarkatun da aka riga aka ƙayyade, wanda ke ba mu damar saita Maƙasudin Matsayin Sabis (SLOs) don nauyin ayyuka daban-daban.

Duk waɗannan ayyukan GitLab.com an saita su ta amfani da ginshiƙi GitLab Helm wanda ba a canza shi ba. Ana aiwatar da tsarin aiki a cikin ƙananan sigogi, waɗanda za a iya kunna su yayin da muke ƙaura a hankali a hankali zuwa gungu. Ko da yake mun yanke shawarar cewa ba za mu haɗa wasu ayyukan mu na jiha ba a cikin ƙaura, kamar Redis, Postgres, GitLab Pages da Gitaly, ta yin amfani da Kubernetes yana ba mu damar rage adadin VM da Chef ke gudanarwa a halin yanzu.

Ganuwa da Gudanarwar Kubernetes Kanfigareshan

GitLab da kanta ke sarrafa duk saituna. Don wannan, ana amfani da ayyukan daidaitawa guda uku dangane da Terraform da Helm. Muna ƙoƙari mu yi amfani da GitLab kanta a duk lokacin da zai yiwu don gudanar da GitLab, amma don ayyukan aiki muna da shigarwar GitLab daban. Ana buƙatar wannan don tabbatar da cewa ba ku dogara da samuwar GitLab.com lokacin yin jigilar GitLab.com da sabuntawa ba.

Kodayake bututunmu na gungu na Kubernetes yana gudana akan wani shigarwa na GitLab daban, akwai madubai na wuraren ajiyar lambobin da ake samu a bainar jama'a a adireshi masu zuwa:

  • k8s-nauyin aiki/gitlab-com - Tsarin tsarin GitLab.com don taswirar GitLab Helm;
  • k8s-nauyin aiki/gitlab-helmfiles - Ya ƙunshi daidaitawa don ayyukan da ba su da alaƙa kai tsaye da aikace-aikacen GitLab. Waɗannan sun haɗa da daidaitawa don shiga da saka idanu ta gungu, da kuma kayan aikin da aka haɗa kamar PlantUML;
  • Gitlab-com-Infrastructure - Tsarin tsari don Kubernetes da kayan aikin VM na gado. Anan kuna saita duk albarkatun da ake buƙata don gudanar da tarin, gami da gungu kanta, wuraren waha, asusun sabis, da adiresoshin IP.

Abubuwan da muka samo daga shekara guda na ƙaura GitLab.com zuwa Kubernetes
Ana nuna kallon jama'a lokacin da aka yi canje-canje. taƙaitaccen taƙaitaccen bayani tare da hanyar haɗi zuwa cikakken bambance-bambancen da SRE ke tantancewa kafin yin canje-canje ga tari.

Don SRE, hanyar haɗin kai tana kaiwa zuwa cikakken bambance-bambance a cikin shigarwar GitLab, wanda ake amfani dashi don samarwa da samun damar zuwa wanda ke iyakance. Wannan yana bawa ma'aikata da al'umma damar, ba tare da samun damar yin aiki ba (wanda ke buɗe kawai ga SREs), don duba canje-canjen tsarin da aka tsara. Ta hanyar haɗa misalin GitLab na jama'a don lamba tare da misali mai zaman kansa don bututun CI, muna kula da aikin guda ɗaya yayin da muke tabbatar da 'yancin kai daga GitLab.com don sabuntawar sanyi.

Abin da muka gano a lokacin hijira

A yayin tafiyar, an sami gogewa cewa muna amfani da sabbin ƙaura da turawa a Kubernetes.

1. Ƙara yawan kuɗi saboda zirga-zirga tsakanin yankunan samuwa

Abubuwan da muka samo daga shekara guda na ƙaura GitLab.com zuwa Kubernetes
Ƙididdiga na yau da kullun (bytes a kowace rana) don Git ma'ajiyar jiragen ruwa akan GitLab.com

Google yana raba hanyar sadarwarsa zuwa yankuna. Waɗanda kuma, an raba su zuwa wuraren samun dama (AZ). Git hosting yana da alaƙa da ɗimbin bayanai, don haka yana da mahimmanci a gare mu mu sarrafa fitar da hanyar sadarwa. Don zirga-zirgar ababen hawa na ciki, egress kyauta ce kawai idan ta tsaya a cikin yankin samuwa iri ɗaya. Har zuwa wannan rubutun, muna ba da kusan TB 100 na bayanai a cikin ranakun aiki na yau da kullun (kuma don ma'ajin Git ne kawai). Sabis ɗin da ke zaune a cikin injina iri ɗaya a cikin tsoffin kayan aikinmu na tushen VM yanzu suna gudana a cikin kwas ɗin Kubernetes daban-daban. Wannan yana nufin cewa wasu zirga-zirgar ababen hawa waɗanda a baya na gida zuwa VM na iya yuwuwar yin tafiya a wajen wuraren samuwa.

Gungun GKE na yanki suna ba ku damar faɗaɗa Wuraren Samar da yawa don sakewa. Muna la'akari da yiwuwar raba gungu na GKE na yanki zuwa gungu na yanki guda ɗaya don ayyukan da ke haifar da yawan zirga-zirga. Wannan zai rage tsadar kuɗaɗe yayin da ake ci gaba da samun raguwar matakin gungu.

2. Iyaka, buƙatun albarkatun da ƙima

Abubuwan da muka samo daga shekara guda na ƙaura GitLab.com zuwa Kubernetes
Adadin kwafin sarrafa zirga-zirgar samarwa akan registry.gitlab.com. Kololuwar zirga-zirga a ~15:00 UTC.

Labarin ƙauranmu ya fara ne a watan Agusta 2019, lokacin da muka ƙaura sabis ɗinmu na farko, GitLab Registry Container, zuwa Kubernetes. Wannan mahimmin manufa, sabis na zirga-zirgar ababen hawa ya kasance kyakkyawan zaɓi don ƙaura na farko saboda aikace-aikacen da ba shi da ƙasa tare da ƴan abubuwan dogaro na waje. Matsala ta farko da muka ci karo da ita ita ce ɗimbin ɓangarorin da aka kora saboda ƙarancin ƙwaƙwalwar ajiya akan nodes. Saboda wannan, dole ne mu canza buƙatun da iyaka.

An gano cewa a cikin yanayin aikace-aikacen inda amfani da ƙwaƙwalwar ajiya ke ƙaruwa akan lokaci, ƙarancin ƙima don buƙatun (ajiye ƙwaƙwalwar ajiya ga kowane kwafsa) haɗe tare da ƙaƙƙarfan ƙaƙƙarfan “karimci” akan amfani ya haifar da jikewa. (jikewa) nodes da babban matakin fitar da su. Don magance wannan matsala, ya kasance an yanke shawarar ƙara buƙatun da ƙananan iyaka. Wannan ya kawar da matsa lamba daga nodes kuma ya tabbatar da kwas ɗin suna da yanayin rayuwa wanda bai sanya matsi mai yawa akan kumburi ba. Yanzu mun fara ƙaura tare da buƙatu mai karimci (kuma kusan iri ɗaya) da iyakance ƙima, daidaita su yadda ya cancanta.

3. Metrics da logs

Abubuwan da muka samo daga shekara guda na ƙaura GitLab.com zuwa Kubernetes
Sashen abubuwan more rayuwa yana mai da hankali kan jinkiri, ƙimar kuskure da jikewa tare da shigar burin matakin sabis (SLO) an haɗa zuwa samuwar tsarin mu gaba ɗaya.

A cikin shekarar da ta gabata, ɗaya daga cikin mahimman abubuwan da suka faru a cikin sashin samar da ababen more rayuwa shine haɓakawa a cikin kulawa da aiki tare da SLOs. SLOs sun ba mu damar saita maƙasudai don sabis na ɗaiɗaikun waɗanda muka sa ido sosai yayin ƙaura. Amma ko da tare da wannan ingantaccen abin lura, ba koyaushe yana yiwuwa a ga matsaloli nan da nan ta amfani da awo da faɗakarwa. Misali, ta hanyar mai da hankali kan latency da ƙimar kurakurai, ba mu cika cika dukkan shari'o'in amfani da sabis na ƙaura.

An gano wannan batu kusan nan da nan bayan ƙaura wasu ayyukan aiki zuwa gungu. Ya zama mai tsanani musamman lokacin da dole ne mu bincika ayyuka waɗanda adadin buƙatun ya kasance ƙanana, amma waɗanda ke da takamaiman abin dogaro. Ɗaya daga cikin mahimman darussan daga ƙaura shine buƙatar yin la'akari ba kawai ma'auni ba lokacin saka idanu ba, har ma da rajistan ayyukan da "dogon wutsiya" (wannan game da irin rabonsu a kan ginshiƙi - kimanin. fassara) kurakurai. Yanzu ga kowane ƙaura mun haɗa da cikakken jerin tambayoyin log (tambayoyin log) da kuma tsara bayyanannun hanyoyin sake dawowa waɗanda za a iya canjawa wuri daga wannan motsi zuwa na gaba idan matsaloli suka taso.

Hidimar buƙatun iri ɗaya a layi daya akan tsoffin kayan aikin VM da sabbin kayan aikin Kubernetes sun gabatar da ƙalubale na musamman. Sabanin ƙaura daga ɗagawa da motsi (canja wurin aikace-aikace cikin sauri "kamar yadda yake" zuwa sabon kayan aikin; ana iya karanta ƙarin cikakkun bayanai, misali, a nan - kimanin. fassara), Aiki na layi daya akan "tsohuwar" VMs da Kubernetes yana buƙatar kayan aikin saka idanu su dace da yanayin biyu kuma su iya haɗa ma'auni a cikin ra'ayi ɗaya. Yana da mahimmanci mu yi amfani da dashboards iri ɗaya da tambayoyin log don cimma daidaiton lura yayin lokacin miƙa mulki.

4. Canja wurin zirga-zirga zuwa sabon tari

Don GitLab.com, an sadaukar da wani ɓangare na sabobin matakin canary. Canary Park yana hidimar ayyukanmu na ciki kuma yana iya an kunna ta masu amfani. Amma an tsara shi da farko don gwada canje-canjen da aka yi ga abubuwan more rayuwa da aikace-aikace. Sabis ɗin ƙaura na farko ya fara ne ta hanyar karɓar iyakataccen adadin zirga-zirgar cikin gida, kuma muna ci gaba da yin amfani da wannan hanyar don tabbatar da cewa an cika SLOs kafin aika duk zirga-zirga zuwa gungu.

Game da ƙaura, wannan yana nufin cewa ana aika buƙatun zuwa ayyukan cikin gida zuwa Kubernetes da farko, sa'an nan kuma a hankali mu canza sauran zirga-zirga zuwa gungu ta hanyar canza nauyi don baya ta hanyar HAProxy. A lokacin ƙaura daga VM zuwa Kubernetes, ya bayyana a fili cewa yana da matukar fa'ida don samun hanya mai sauƙi don karkatar da zirga-zirgar ababen more rayuwa tsakanin tsofaffi da sabbin ababen more rayuwa kuma, bisa ga haka, ajiye tsoffin abubuwan more rayuwa a shirye don sake dawowa cikin 'yan kwanaki na farko bayan ƙaura.

5. Ajiye damar kwasfa da amfaninsu

Kusan nan da nan aka gano matsala mai zuwa: kwas ɗin sabis ɗin rajista ya fara da sauri, amma ƙaddamar da kwas ɗin na Sidekiq ya ɗauki har zuwa minti biyu. Tsawon lokacin farawa na Sidekiq pods ya zama matsala lokacin da muka fara ƙaura zuwa Kubernetes don ma'aikatan da ke buƙatar aiwatar da ayyuka da sauri da sauri.

A wannan yanayin, darasin shine cewa yayin da Kubernetes' Horizontal Pod Autoscaler (HPA) ke kula da ci gaban zirga-zirga da kyau, yana da mahimmanci a yi la'akari da halayen kayan aikin da keɓance iyawar kayan aiki ga kwas ɗin (musamman lokacin da ake rarraba buƙatun ba daidai ba). A cikin yanayinmu, an sami karuwar ayyuka ba zato ba tsammani, wanda ke haifar da saurin haɓakawa, wanda ya haifar da jikewa na albarkatun CPU kafin mu sami lokacin da za mu iya haɓaka tafkin kumburi.

Koyaushe akwai jaraba don matse gwargwadon yuwuwa daga gungu, duk da haka, tun da farko mun fuskanci matsalolin aiki, yanzu muna farawa da kasafin kuɗi mai karimci da rage shi daga baya, muna sa ido kan SLOs. Ƙaddamar da kwas ɗin don sabis na Sidekiq ya haɓaka sosai kuma yanzu yana ɗaukar kusan daƙiƙa 40 akan matsakaita. Daga rage lokacin ƙaddamar da kwasfa ya ci duka GitLab.com da masu amfani da kayan aikin da ke sarrafa kansu da ke aiki tare da taswirar GitLab Helm na hukuma.

ƙarshe

Bayan ƙaura kowane sabis, mun yi farin ciki da fa'idodin yin amfani da Kubernetes a cikin samarwa: ƙaddamar da aikace-aikacen sauri da aminci, ƙima, da ingantaccen rarraba albarkatu. Haka kuma, fa'idodin ƙaura sun wuce sabis ɗin GitLab.com. Duk wani ci gaba ga jadawalin Helm na hukuma yana amfana da masu amfani da shi.

Ina fatan kun ji daɗin labarin balaguron ƙaura na Kubernetes. Muna ci gaba da ƙaura duk sabbin ayyuka zuwa gungu. Ana iya samun ƙarin bayani a cikin littattafai masu zuwa:

PS daga mai fassara

Karanta kuma a kan shafinmu:

source: www.habr.com

Add a comment