Seo re se fumaneng ho tloha selemong sa ho fallela GitLab.com ho ea Kubernetes

Hlokomela. fetolela.: Kamohelo ea Kubernetes ho GitLab e nkuoa e le e 'ngoe ea lintlha tse peli tse tlatselitseng kholong ea k'hamphani. Leha ho le joalo, ho fihlela haufinyane tjena, meaho ea ts'ebeletso ea marang-rang ea GitLab.com e hahiloe mecheng ea sebele, 'me ke hoo e ka bang selemo se fetileng ho falla ha eona ho ea ho K8s ho qalile, e ntseng e e-s'o phethoe. Re thabetse ho hlahisa phetolelo ea sengoloa sa morao-rao se entsoeng ke moenjiniere oa GitLab SRE mabapi le hore na sena se etsahala joang le hore na baenjiniere ba kenang morerong ba etsa liqeto life.

Seo re se fumaneng ho tloha selemong sa ho fallela GitLab.com ho ea Kubernetes

Hoo e ka bang selemo joale, karolo ea rona ea litšebeletso tsa motheo e ntse e fallisa litšebeletso tsohle tse sebetsang ho GitLab.com ho ea Kubernetes. Nakong ena, re ile ra kopana le mathata a sa amaneng feela le ho tsamaisa lits'ebeletso ho Kubernetes, empa hape le ho laola ho tsamaisoa ha motsoako nakong ea phetoho. Lithuto tsa bohlokoa tseo re ithutileng tsona li tla tšohloa sehloohong sena.

Ho tloha qalong ea GitLab.com, li-server tsa eona li ne li matha ka har'a leru ka mechini ea sebele. Mechini ena e sebetsang e laoloa ke Chef mme e kentsoe ho sebelisoa rona sephutheloana sa molao sa Linux. Leano la ho tsamaisa haeba ts'ebeliso e hloka ho ntlafatsoa, ​​​​e kenyelletsa feela ho nchafatsa likepe tsa seva ka mokhoa o hokahaneng, ka tatellano o sebelisa pipeline ea CI. Mokhoa ona - le hoja o lieha le hanyenyane bora - e netefatsa hore GitLab.com e sebelisa mekhoa e tšoanang ea ho kenya le ho e lokisa joaloka basebelisi ba offline (ea itsamaisa) Lisebelisoa tsa GitLab li sebelisa liphutheloana tsa rona tsa Linux bakeng sa sena.

Re sebelisa mokhoa ona hobane ho bohlokoa haholo ho utloa masoabi le thabo eo batho ba tloaelehileng sechabeng ba e fumanang ha ba kenya le ho hlophisa likopi tsa bona tsa GitLab. Mokhoa ona o sebelitse hantle ka nako e itseng, empa ha palo ea merero ea GitLab e feta limilione tse 10, re ile ra elelloa hore ha e sa kopana le litlhoko tsa rona tsa ho phahamisa le ho romelloa.

Mehato ea pele ea ho ea Kubernetes le GitLab ea leru

Morero o thehiloe ka 2017 Lits'oants'o tsa GitLab ho lokisa GitLab bakeng sa ho tsamaisoa ha maru, le ho nolofalletsa basebelisi ho kenya GitLab ho lihlopha tsa Kubernetes. Ka nako eo re ne re tseba hore ho falla GitLab ho Kubernetes ho tla eketsa sekhahla sa sethala sa SaaS, ho nolofatsa li-deployments, le ho ntlafatsa katleho ea lisebelisoa tsa k'homphieutha. Ka nako e ts'oanang, mesebetsi e mengata ea ts'ebeliso ea rona e ne e itšetlehile ka likaroloana tsa NFS tse kentsoeng, tse liehisang phetoho ho tloha mechineng ea sebele.

Ho sutumelletsa ho ea sebakeng sa leru le Kubernetes ho lumelletse baenjiniere ba rona ho rera phetoho butle-butle, nakong eo re ileng ra lahla tse ling tsa ts'ebeliso ea ts'ebeliso ea polokelo ea marang-rang ha re ntse re tsoela pele ho hlahisa likarolo tse ncha. Ho tloha ha re qala ho rera ho falla lehlabuleng la 2019, boholo ba mefokolo ena e rarollotsoe, 'me mokhoa oa ho fallela GitLab.com ho ea Kubernetes o se o ntse o tsoela pele!

Likarolo tsa GitLab.com ho Kubernetes

Bakeng sa GitLab.com, re sebelisa sehlopha se le seng sa sebaka sa GKE se sebetsanang le sephethephethe sa lits'ebetso. Ho fokotsa ho rarahana ha phalliso (e seng e qhekella), re tsepamisa maikutlo litšebeletsong tse sa itšetleheng ka polokelo ea lehae kapa NFS. GitLab.com e sebelisa "monolithic Rails codebase" haholo-holo, 'me re tsamaisa sephethe-phethe se ipapisitseng le litšobotsi tsa mosebetsi ho ea libakeng tse fapaneng tse ikhethileng matamong a tsona.

Tabeng ea frontend, mefuta ena e arotsoe ka likopo ho web, API, Git SSH/HTTPS le Registry. Tabeng ea backend, re arola mesebetsi moleng ho ea ka litšobotsi tse sa tšoaneng ho itšetlehile ka mellwane ya mohlodi e hlalositsweng esale pele, e re lumellang ho beha Lipheo tsa Boemo ba Ts'ebeletso (SLOs) bakeng sa mesebetsi e fapaneng.

Litšebeletso tsena kaofela tsa GitLab.com li hlophisitsoe ho sebelisoa chate e sa fetoloang ea GitLab Helm. Tlhophiso e etsoa ka li-subcharts, tse ka sebelisoang ka mokhoa o ikhethileng ha butle-butle re fetisetsa litšebeletso ho sehlopha. Leha re nkile qeto ea ho se kenyelle tse ling tsa lits'ebeletso tsa rona tsa boemo bo holimo ho phalliso, joalo ka Redis, Postgres, GitLab Pages le Gitaly, ho sebelisa Kubernetes ho re lumella ho fokotsa haholo palo ea li-VM tseo Chef a li laolang hajoale.

Ponahalo ea Tlhophiso ea Kubernetes le Tsamaiso

Litlhophiso tsohle li laoloa ke GitLab ka boeona. Bakeng sa sena, ho sebelisoa merero e meraro ea tlhophiso e thehiloeng ho Terraform le Helm. Re leka ho sebelisa GitLab ka boeona neng kapa neng ha ho khoneha ho tsamaisa GitLab, empa bakeng sa mesebetsi ea ts'ebetso re na le ts'ebetso e fapaneng ea GitLab. Sena sea hlokahala ho etsa bonnete ba hore ha o itšetlehe ka boteng ba GitLab.com ha o etsa lipehelo le liapdeite tsa GitLab.com.

Leha liphaephe tsa rona tsa sehlopha sa Kubernetes li sebetsa sebakeng se arohaneng sa GitLab, ho na le liipone tsa polokelo ea khoutu tse fumanehang phatlalatsa liatereseng tse latelang:

  • k8s-workloads/gitlab-com - Moralo oa tlhophiso oa GitLab.com bakeng sa chate ea GitLab Helm;
  • k8s-workloads/gitlab-helmfiles - E na le litlhophiso tsa lits'ebeletso tse sa amaneng ka kotloloho le sesebelisoa sa GitLab. Tsena li kenyelletsa litlhophiso tsa ho rema lifate le ho lekola lihlopha, hammoho le lisebelisoa tse kopaneng tse kang PlantUML;
  • Gitlab-com-infrastructure - Tlhophiso ea Terraform bakeng sa Kubernetes le lisebelisoa tsa VM tsa lefa. Mona o hlophisa lisebelisoa tsohle tse hlokahalang ho tsamaisa sehlopha, ho kenyeletsoa sehlopha ka boeona, matamo a node, li-account tsa lits'ebeletso, le lipeeletso tsa aterese ea IP.

Seo re se fumaneng ho tloha selemong sa ho fallela GitLab.com ho ea Kubernetes
Pono ea sechaba e bontšoa ha liphetoho li etsoa. kgutsufatso e kgutshwane e nang le sehokelo sa phapano e qaqileng eo SRE e e hlahlobang pele e etsa liphetoho sehlopheng.

Bakeng sa SRE, sehokelo se lebisa phapanong e felletseng ea ho kenya GitLab, e sebelisetsoang tlhahiso le phihlello e thibetsoeng. Sena se lumella basebeletsi le sechaba, ntle le ho fumana morero oa ts'ebetso (o buletsoeng feela ho li-SRE), ho sheba liphetoho tse reriloeng tsa tlhophiso. Ka ho kopanya mohlala oa sechaba oa GitLab bakeng sa khoutu le mohlala oa poraefete bakeng sa liphaephe tsa CI, re boloka ts'ebetso e le 'ngoe ha re ntse re tiisa boipuso ho tsoa ho GitLab.com bakeng sa lisebelisoa tsa tlhophiso.

Seo re se fumaneng nakong ea ho falla

Nakong ea ho falla, ho ile ha fumanoa phihlelo eo re e sebelisang ho phalliso e ncha le ho tsamaisoa ho Kubernetes.

1. Litšenyehelo tse eketsehileng ka lebaka la sephethephethe pakeng tsa libaka tse fumanehang

Seo re se fumaneng ho tloha selemong sa ho fallela GitLab.com ho ea Kubernetes
Lipalopalo tsa letsatsi le letsatsi (li-byte ka letsatsi) bakeng sa likepe tsa polokelo ea Git ho GitLab.com

Google e arola marang-rang a eona ka libaka. Tseo, ka lehlakoreng le leng, li arotsoe ka libaka tsa phihlello (AZ). Git hosting e amahanngoa le palo e kholo ea data, kahoo ke habohlokoa hore re laole ho tsoa ha marang-rang. Bakeng sa sephethephethe sa ka hare, egress e lokolohile feela haeba e lula ka har'a sebaka se tšoanang sa ho fumaneha. Ha re ngola sena, re sebeletsa hoo e ka bang 100 TB ea data ka letsatsi le tloaelehileng la mosebetsi ('me ke bakeng sa polokelo ea Git feela). Litšebeletso tse neng li lula ka har'a mechini e ts'oanang ho topology ea rona ea khale ea VM e se e sebetsa ka mefuta e fapaneng ea Kubernetes. Sena se bolela hore sephethephethe se seng se neng se le sebakeng sa VM se ne se ka khona ho tsamaea ka ntle ho libaka tse teng.

Lihlopha tsa GKE tsa libaka li u lumella ho sebelisa libaka tse ngata tse fumanehang bakeng sa ho fokotsa mosebetsi. Re ntse re nahana ka monyetla oo arola sehlopha sa sebaka sa GKE ka lihlopha tsa sebaka se le seng bakeng sa lits'ebeletso tse hlahisang bongata ba sephethephethe. Sena se tla fokotsa litšenyehelo tsa egress ha ho ntse ho bolokoa khaello ea maemo a cluster.

2. Meeli, likopo tsa lisebelisoa le ho eketsa

Seo re se fumaneng ho tloha selemong sa ho fallela GitLab.com ho ea Kubernetes
Palo ea sephethephethe sa tlhahiso ea li-replicas ho registry.gitlab.com. Sephethephethe se phahame ka ~15:00 UTC.

Pale ea rona ea ho falla e qalile ka Phato 2019, ha re fallisetsa tšebeletso ea rona ea pele, GitLab Container Registry, ho ea Kubernetes. Ts'ebeletso ena ea bohlokoahali, e nang le sephethephethe se phahameng e bile khetho e ntle bakeng sa phalliso ea pele hobane ke ts'ebeliso e se nang naha e nang le litšepe tse fokolang tsa kantle. Bothata ba pele boo re ileng ra kopana le bona e ne e le palo e kholo ea li-pods tse lelekiloeng ka lebaka la ho hloka mohopolo ho li-node. Ka lebaka la sena, re ile ra tlameha ho fetola likopo le meeli.

Ho ile ha sibolloa hore molemong oa ts'ebeliso moo ts'ebeliso ea memori e eketsehang ha nako e ntse e feta, litekanyetso tse tlase tsa likopo (ho boloka mohopolo bakeng sa pod e 'ngoe le e 'ngoe) hammoho le moeli o thata oa tšebeliso o lebisitse ho tlala. (saturation) mahono le boemo bo hodimo ba ho lelekoa. Ho sebetsana le bothata bona, ho ne ho le joalo ho ile ha etsoa qeto ea ho eketsa likōpo le ho fokotsa meeli. Sena se ile sa tlosa khatello ho li-node mme sa etsa bonnete ba hore li-pods li na le mokhoa oa bophelo o neng o sa behe khatello e ngata ho node. Hona joale re qala ho falla ka likopo tse ngata (le tse batlang li tšoana) le ho fokotsa litekanyetso, ho li lokisa ha ho hlokahala.

3. Metrics le logs

Seo re se fumaneng ho tloha selemong sa ho fallela GitLab.com ho ea Kubernetes
Karohano ea meaho e shebana le latency, litekanyetso tsa liphoso le saturation e kentsoeng lipakane tsa boemo ba tšebeletso (SLO) e hokahaneng le ho fumaneha ha tsamaiso ea rona ka kakaretso.

Selemong se fetileng, e 'ngoe ea liketsahalo tsa bohlokoa karohanong ea meralo ea motheo e bile lintlafatso tsa ho beha leihlo le ho sebetsa le li-SLO. Li-SLO li re lumelletse ho ipehela lipakane bakeng sa litšebeletso tsa motho ka mong tseo re li behileng leihlo nakong ea ho falla. Empa leha o na le ts'ebetso ena e ntlafalitsoeng, ha se kamehla ho ka khonehang ho bona mathata hang hang ka metrics le litemoso. Mohlala, ka ho tsepamisa maikutlo ho latency le litefiso tsa liphoso, ha re koahele ka botlalo linyeoe tsohle tsa ts'ebeliso ea ts'ebeletso e fallang.

Taba ena e ile ea sibolloa hang ka mor'a ho fallisetsa mesebetsi e meng sehlopheng. E ile ea e-ba mpe haholo ha re tlameha ho hlahloba mesebetsi eo palo ea likopo e neng e le nyane ho eona, empa e neng e e-na le litšepiso tse khethehileng haholo tsa tlhophiso. E 'ngoe ea lithuto tsa bohlokoa ho tloha ho falla e ne e le tlhokahalo ea ho ela hloko metrics feela ha ho hlahlojoa, empa hape le lifate le "mohatla o molelele" (sena se mabapi le joalo kabo ea bona chateng - hoo e ka bang. fetolela.) liphoso. Hona joale bakeng sa phalliso e 'ngoe le e' ngoe re kenyelletsa lethathamo le qaqileng la lipotso tsa log (lipotso tsa log) le ho rera mekhoa e hlakileng ea ho khutlisa e ka fetisetsoang ho tloha ho e 'ngoe ho ea ho e' ngoe haeba mathata a hlaha.

Ho sebeletsa likopo tse ts'oanang ka mokhoa o ts'oanang ho meralo ea khale ea VM le meaho e mecha e thehiloeng ho Kubernetes e hlahisitse phephetso e ikhethang. Ho fapana le phalliso-le-shift falla (phetisetso e potlakileng ea likopo "joalo ka" ho lisebelisoa tse ncha; lintlha tse ling li ka baloa, mohlala, mona - hoo e ka bang. fetolela.), mosebetsi o tšoanang ho li-VM tse "khale" le Kubernetes o hloka hore lisebelisoa tsa ho beha leihlo li lumellane le libaka tseo ka bobeli 'me li khone ho kopanya metrics ho pono e le' ngoe. Ho bohlokoa hore re sebelise li-dashboards tse tšoanang le lipotso tsa log ho fihlela ponahalo e tsitsitseng nakong ea phetoho.

4. Ho fetola sephethephethe ho sehlopha se secha

Bakeng sa GitLab.com, karolo ea li-server e nehetsoe ho sethala sa canary. Canary Park e sebeletsa merero ea rona ea kahare hape e ka khona matlafatsoa ke basebelisi. Empa e etselitsoe ho leka liphetoho tse entsoeng ho meralo le ts'ebeliso. Ts'ebeletso ea pele e faliloeng e qalile ka ho amohela palo e lekanyelitsoeng ea sephethephethe sa ka hare, 'me re tsoela pele ho sebelisa mokhoa ona ho netefatsa hore li-SLO li finyelloa pele re romela sephethephethe kaofela ho sehlopha.

Tabeng ea ho falla, sena se bolela hore likōpo tsa merero ea ka hare li romeloa ho Kubernetes pele, ebe butle-butle re fetola karolo e setseng ea sephethephethe ho sehlopha ka ho fetola boima ba backend ka HAProxy. Nakong ea ho falla ho tloha VM ho ea Kubernetes, ho ile ha hlaka hore ho ne ho le molemo haholo ho ba le mokhoa o bonolo oa ho tsamaisa sephethephethe pakeng tsa lisebelisoa tsa khale le tse ncha 'me, ka hona, ho boloka lisebelisoa tsa khale li itokiselitse ho khutlisetsoa morao matsatsing a seng makae a pele ka mor'a ho falla.

5. Bokhoni ba ho boloka li-pods le tšebeliso ea tsona

Hoo e ka bang hang-hang bothata bo latelang bo ile ba tsejoa: li-pods tsa tšebeletso ea Registry li ile tsa qala kapele, empa ho qala li-pods bakeng sa Sidekiq ho ile ha nka nako e telele. metsotso e mmedi. Nako e telele ea ho qala ha li-pods tsa Sidekiq e ile ea e-ba bothata ha re qala ho fallela mesebetsi e mengata ho ea Kubernetes bakeng sa basebetsi ba neng ba hloka ho sebetsa mesebetsi ka potlako le ka potlako.

Tabeng ena, thuto e ne e le hore le hoja Kubernetes 'Horizontal Pod Autoscaler (HPA) e sebetsana le kholo ea sephethephethe hantle, ke habohlokoa ho nahana ka litšoaneleho tsa mesebetsi e mengata le ho fana ka bokhoni ba ho boloka li-pods (haholo-holo ha tlhokahalo e sa ajoa ka tsela e sa tšoaneng). Tabeng ea rona, ho ile ha e-ba le keketseho ea tšohanyetso ea mesebetsi, e lebisang ho phahamisoeng ka potlako, e leng se ileng sa lebisa ho ntlafala ha lisebelisoa tsa CPU pele re e-ba le nako ea ho phahamisa letamo la node.

Kamehla ho na le teko ea ho petetsa ka hohle kamoo ho ka khonehang ho tsoa sehlopheng, leha ho le joalo, ha re qala ho kopana le mathata a ts'ebetso, joale re qala ka tekanyetso ea chelete e ngata ea pod le ho e fokotsa hamorao, re ntse re shebile SLO. Ho qala li-pods bakeng sa ts'ebeletso ea Sidekiq ho potlakile haholo mme hona joale ho nka metsotsoana e ka bang 40 ka karolelano. Ho fokotsa nako ea ho qala li-pods e hapile GitLab.com ka bobeli le basebelisi ba rona ba lits'ebetso tse ikemetseng tse sebetsang le chate ea semmuso ea GitLab Helm.

fihlela qeto e

Ka mor'a ho falla tšebeletso e 'ngoe le e' ngoe, re ile ra thabela melemo ea ho sebelisa Kubernetes tlhahisong: ho tsamaisoa ka potlako le ka mokhoa o sireletsehileng oa lisebelisoa, ho eketsa, le ho fana ka lisebelisoa tse sebetsang hantle. Ho feta moo, melemo ea ho falla e feta tšebeletso ea GitLab.com. Ntlafatso e 'ngoe le e' ngoe ho chate ea semmuso ea Helm e tsoela basebelisi ba eona molemo.

Ke tšepa hore u natefeloa ke pale ea maeto a rona a ho falla a Kubernetes. Re tsoela pele ho fallisetsa lits'ebeletso tsohle tse ncha ho sehlopha. Boitsebiso bo eketsehileng bo ka fumanoa likhatisong tse latelang:

PS ho tsoa ho mofetoleli

Bala hape ho blog ea rona:

Source: www.habr.com

Eketsa ka tlhaloso