Na co-dhùnaidhean againn bho bhliadhna de bhith ag imrich GitLab.com gu Kubernetes

Thoir an aire. eadar-theangachadh.: Tha uchd-mhacachd Kubernetes aig GitLab air a mheas mar aon den dà phrìomh fheart a tha a’ cur ri fàs a’ chompanaidh. Ach, gu o chionn ghoirid, chaidh bun-structar seirbheis air-loidhne GitLab.com a thogail air innealan brìgheil, agus dìreach timcheall air bliadhna air ais thòisich an imrich aige gu K8n, nach eil fhathast deiseil. Tha sinn toilichte eadar-theangachadh a thaisbeanadh de artaigil o chionn ghoirid le innleadair GitLab SRE mu mar a thachras seo agus dè na co-dhùnaidhean a bhios na h-innleadairean a tha an sàs sa phròiseact a’ dèanamh.

Na co-dhùnaidhean againn bho bhliadhna de bhith ag imrich GitLab.com gu Kubernetes

Airson timcheall air bliadhna a-nis, tha an roinn bun-structair againn air a bhith ag imrich a h-uile seirbheis a tha a’ ruith air GitLab.com gu Kubernetes. Rè na h-ùine seo, choinnich sinn ri dùbhlain co-cheangailte chan ann a-mhàin ri bhith a’ gluasad sheirbheisean gu Kubernetes, ach cuideachd ri bhith a’ riaghladh cleachdadh tar-chinealach aig àm a’ ghluasaid. Thèid na leasanan luachmhor a dh’ ionnsaich sinn a dheasbad san artaigil seo.

Bho fhìor thoiseach GitLab.com, ruith na frithealaichean aige san sgòth air innealan brìgheil. Tha na h-innealan brìgheil sin air an riaghladh leis a’ chòcaire agus air an stàladh a ’cleachdadh ar Linux a ' phacaid oifigeil. Ro-innleachd cleachdadh air eagal ‘s gum feumar an tagradh ùrachadh, tha e a’ toirt a-steach dìreach ùrachadh a dhèanamh air cabhlach an fhrithealaiche ann an dòigh cho-òrdanaichte, sreath a ’cleachdadh loidhne-phìoban CI. Tha an dòigh seo - ged a tha e slaodach agus beagan tolladh - a’ dèanamh cinnteach gu bheil GitLab.com a’ cleachdadh na h-aon chleachdaidhean stàlaidh is rèiteachaidh ri luchd-cleachdaidh far loidhne (fèin-stiùiridh) Stàladh GitLab a’ cleachdadh na pacaidean Linux againn airson seo.

Bidh sinn a’ cleachdadh an dòigh seo oir tha e air leth cudromach eòlas fhaighinn air a h-uile bròn agus toileachas a bhios buill àbhaisteach den choimhearsnachd a’ faighinn nuair a bhios iad a’ stàladh agus a’ rèiteachadh an lethbhric de GitLab. Dh’obraich an dòigh-obrach seo gu math airson ùine, ach nuair a chaidh an àireamh de phròiseactan air GitLab thairis air 10 millean, thuig sinn nach robh e a’ coinneachadh ri ar feumalachdan airson sgèileadh agus cleachdadh tuilleadh.

A’ chiad cheumannan gu Kubernetes agus GitLab dùthchasach sgòthan

Chaidh am pròiseact a chruthachadh ann an 2017 Clàran GitLab gus GitLab ullachadh airson cleachdadh sgòthan, agus gus leigeil le luchd-cleachdaidh GitLab a chuir a-steach air cruinneachaidhean Kubernetes. Bha fios againn an uairsin gum biodh gluasad GitLab gu Kubernetes ag àrdachadh scalability an àrd-ùrlar SaaS, a’ sìmpleachadh cleachdadh, agus a’ leasachadh èifeachdas ghoireasan coimpiutaireachd. Aig an aon àm, bha mòran de ghnìomhan an tagraidh againn an urra ri sgaraidhean NFS stèidhichte, a chuir maill air an eadar-ghluasad bho innealan brìgheil.

Le bhith a’ putadh a dh’ionnsaigh sgòthan dùthchasach agus Kubernetes leig leis na h-innleadairean againn eadar-ghluasad mean air mhean a dhealbhadh, nuair a thrèig sinn cuid de eisimeileachd an tagraidh air stòradh lìonra fhad ‘s a bha sinn a’ leantainn air adhart a ’leasachadh feartan ùra. Bho thòisich sinn a’ dealbhadh an imrich as t-samhradh 2019, chaidh mòran de na cuingeadan sin fhuasgladh, agus tha pròiseas imrich GitLab.com gu Kubernetes a-nis air tòiseachadh!

Feartan GitLab.com ann an Kubernetes

Airson GitLab.com, bidh sinn a’ cleachdadh aon bhuidheann GKE roinneil a bhios a’ làimhseachadh a h-uile trafaic tagraidh. Gus iom-fhillteachd an imrich (a tha mar-thà duilich) a lughdachadh, bidh sinn a’ cuimseachadh air seirbheisean nach eil an urra ri stòradh ionadail no NFS. Bidh GitLab.com a’ cleachdadh bunait còd Rails a tha gu ìre mhòr monolithic, agus bidh sinn a’ stiùireadh trafaic stèidhichte air feartan eallach obrach gu diofar phuingean crìochnachaidh a tha aonaranach a-steach do na linneachan noda aca fhèin.

A thaobh an aghaidh, tha na seòrsaichean sin air an roinn ann an iarrtasan gu lìon, API, Git SSH/HTTPS agus Clàradh. A thaobh an backend, roinn sinn na h-obraichean anns a’ chiudha a rèir diofar fheartan a rèir crìochan stòrais ro-mhìnichte, a leigeas leinn Amasan Ìre Seirbheis (SLO) a shuidheachadh airson diofar eallach obrach.

Tha na seirbheisean GitLab.com sin uile air an rèiteachadh a’ cleachdadh cairt GitLab Helm gun atharrachadh. Tha rèiteachadh air a dhèanamh ann am fo-chlàran, a ghabhas a chomasachadh gu roghnach fhad ‘s a bhios sinn a’ gluasad sheirbheisean mean air mhean chun bhuidheann. Eadhon ged a chuir sinn romhainn gun a bhith a’ toirt a-steach cuid de na seirbheisean stàiteil againn san imrich, leithid Redis, Postgres, GitLab Pages agus Gitaly, le bhith a’ cleachdadh Kubernetes leigidh sin leinn an àireamh de VMan a tha an còcaire a’ riaghladh an-dràsta a lughdachadh gu mòr.

Faicsinneachd agus Riaghladh Configuration Kubernetes

Tha a h-uile suidheachadh air a riaghladh le GitLab fhèin. Airson seo, thathas a’ cleachdadh trì pròiseactan rèiteachaidh stèidhichte air Terraform agus Helm. Feuchaidh sinn ri GitLab fhèin a chleachdadh nuair as urrainnear gus GitLab a ruith, ach airson gnìomhan obrachaidh tha stàladh GitLab air leth againn. Tha feum air seo gus dèanamh cinnteach nach eil thu an urra ri na tha ri fhaighinn de GitLab.com nuair a bhios tu a’ coileanadh cleachdadh agus ùrachadh GitLab.com.

Ged a tha na loidhnichean-phìoban againn airson cruinneachadh Kubernetes a’ ruith air stàladh GitLab air leth, tha sgàthan de na stòran còd a tha rim faighinn gu poblach aig na seòlaidhean a leanas:

  • k8s-eallach obrach/gitlab-com - Frèam rèiteachaidh GitLab.com airson clàr GitLab Helm;
  • k8s-eallach obrach/gitlab-helmfiles - Tha rèiteachaidhean ann airson seirbheisean nach eil ceangailte gu dìreach ris an tagradh GitLab. Tha iad sin a’ toirt a-steach rèiteachaidhean airson logadh agus sgrùdadh cnuasachadh, a bharrachd air innealan amalaichte leithid PlantUML;
  • Bun-structair Gitlab-com - Rèiteachadh terraform airson Kubernetes agus bun-structar VM dìleab. An seo bidh thu a’ rèiteachadh a h-uile goireas a tha riatanach gus a’ bhuidheann a ruith, a’ gabhail a-steach a’ bhuidheann fhèin, amaran nodan, cunntasan seirbheis, agus tèarmainn sheòlaidhean IP.

Na co-dhùnaidhean againn bho bhliadhna de bhith ag imrich GitLab.com gu Kubernetes
Tha sealladh poblach air a shealltainn nuair a thèid atharrachaidhean a dhèanamh. geàrr-chunntas le ceangal ris an eadar-dhealachadh mionaideach a bhios SRE a’ sgrùdadh mus dèanar atharrachaidhean air a’ bhuidheann.

Airson SRE, tha an ceangal a’ leantainn gu diff mionaideach ann an stàladh GitLab, a thathas a’ cleachdadh airson cinneasachadh agus ruigsinneachd air a bheil cuingealaichte. Leigidh seo le luchd-obrach agus a’ choimhearsnachd, gun chothrom air a’ phròiseact obrachaidh (a tha fosgailte do SREn a-mhàin), sùil a thoirt air atharrachaidhean rèiteachaidh a tha san amharc. Le bhith a’ cothlamadh eisimpleir poblach GitLab airson còd le eisimpleir prìobhaideach airson pìoban CI, bidh sinn a’ cumail aon shruth-obrach agus sinn a’ dèanamh cinnteach à neo-eisimeileachd bho GitLab.com airson ùrachaidhean rèiteachaidh.

Na fhuair sinn a-mach aig àm an imrich

Rè a 'ghluasaid, chaidh eòlas fhaighinn gu bheil sinn a' buntainn ri imrich agus cleachdadh ùr ann an Kubernetes.

1. Barrachd chosgaisean mar thoradh air trafaic eadar sònaichean ruigsinneachd

Na co-dhùnaidhean againn bho bhliadhna de bhith ag imrich GitLab.com gu Kubernetes
Staitistig dol a-mach làitheil (bytes gach latha) airson cabhlach stòr Git air GitLab.com

Bidh Google a’ roinn a lìonra gu roinnean. Tha iad sin, an uair sin, air an roinn ann an sònaichean ruigsinneachd (AZ). Tha aoigheachd Git co-cheangailte ri mòran dàta, agus mar sin tha e cudromach dhuinn smachd a chumail air slighe a-mach an lìonra. Airson trafaic a-staigh, chan eil slighe a-mach an-asgaidh ach ma chumas e taobh a-staigh an aon raon ruigsinneachd. A thaobh an sgrìobhaidh seo, tha sinn a’ frithealadh timcheall air 100 TB de dhàta ann an latha-obrach àbhaisteach (agus tha sin dìreach airson stòran Git). Tha seirbheisean a bha a’ fuireach anns na h-aon innealan brìgheil anns an t-seann topology againn stèidhichte air VM a-nis a’ ruith ann an diofar pods Kubernetes. Tha seo a’ ciallachadh gum faodadh cuid de thrafaig a bha roimhe seo ionadail don VM siubhal taobh a-muigh sònaichean ruigsinneachd.

Leigidh cruinneachaidhean GKE roinneil leat grunn Sònaichean ri fhaighinn airson call dreuchd. Tha sinn a’ beachdachadh air a’ chomas roinn an cruinneachadh GKE roinneil gu cruinneachaidhean aon-sòn airson seirbheisean a ghineas mòran trafaic. Lùghdaichidh seo cosgaisean slighe a-mach fhad ‘s a chumas e call obrach aig ìre cnuasachaidh.

2. Crìochan, iarrtasan stòrais agus sgèileadh

Na co-dhùnaidhean againn bho bhliadhna de bhith ag imrich GitLab.com gu Kubernetes
An àireamh de mhac-samhail de thrafaig cinneasachaidh air registry.gitlab.com. Stùcan trafaic aig ~ 15:00 UTC.

Thòisich an sgeulachd imrich againn san Lùnastal 2019, nuair a rinn sinn imrich air a’ chiad sheirbheis againn, an GitLab Container Registry, gu Kubernetes. B’ e deagh roghainn a bh’ anns an t-seirbheis àrd-thrafaig seo a bha deatamach do mhisean airson a’ chiad imrich oir is e tagradh gun stàit a th’ ann le glè bheag de eisimeileachd bhon taobh a-muigh. B’ e a’ chiad dhuilgheadas a choinnich sinn àireamh mhòr de phodan fhuadach air sgàth dìth cuimhne air na nodan. Air sgàth seo, bha againn ri iarrtasan agus crìochan atharrachadh.

Chaidh a lorg, a thaobh tagradh far a bheil caitheamh cuimhne a’ dol am meud thar ùine, gu robh luachan ìosal airson iarrtasan (gleidheadh ​​​​cuimhne airson gach pod) còmhla ri crìoch cruaidh “fialaidh” air cleachdadh a’ leantainn gu sùghaidh. (sàthadh) nodan agus ìre àrd de fhuadaichean. Gus dèiligeadh ris an duilgheadas seo, bha e chaidh co-dhùnadh iarrtasan àrdachadh agus crìochan nas ìsle. Thug seo an cuideam far na nodan agus rinn e cinnteach gu robh cearcall-beatha aig na pods nach do chuir cus cuideam air an nód. A-nis bidh sinn a’ tòiseachadh air imrich le iarrtas fialaidh (agus cha mhòr co-ionann) luachan agus crìochan, gan atharrachadh mar a dh’ fheumar.

3. Metrics agus logaichean

Na co-dhùnaidhean againn bho bhliadhna de bhith ag imrich GitLab.com gu Kubernetes
Tha an roinn bun-structair a’ cuimseachadh air latency, ìrean mearachd agus sùghaidh le stàladh amasan ìre seirbheis (SLO) ceangailte ri cothrom coitcheann air an t-siostam againn.

Thar na bliadhna a dh’ fhalbh, tha aon de na prìomh thachartasan anns an roinn bun-structair air a bhith na leasachaidhean ann an sgrùdadh agus obrachadh le SLOn. Leig SLOn leinn amasan a shuidheachadh airson seirbheisean fa leth air an do rinn sinn sùil gheur rè an imrich. Ach eadhon leis an amharc leasaichte seo, chan eil e an-còmhnaidh comasach duilgheadasan fhaicinn sa bhad a’ cleachdadh meatrach agus rabhaidhean. Mar eisimpleir, le bhith ag amas air latency agus reataichean mearachd, chan eil sinn a’ còmhdach gu h-iomlan a h-uile cùis cleachdaidh airson seirbheis a tha a’ dol air adhart.

Chaidh a’ chùis seo a lorg cha mhòr sa bhad às deidh cuid de dh’ eallach obrach a ghluasad chun bhuidheann. Dh'fhàs e gu sònraichte gann nuair a bha againn ri gnìomhan a sgrùdadh far an robh an àireamh de dh'iarrtasan beag, ach aig an robh eisimeileachd rèiteachaidh gu math sònraichte. B’ e aon de na prìomh leasanan bhon imrich an fheum a bhith a’ toirt a-steach chan e a-mhàin meatrach nuair a thathar a’ cumail sùil, ach cuideachd logaichean agus an “earball fada” (tha seo mu dheidhinn a leithid de sgaoileadh air a’ chairt - approx. eadar-theangachadh.) mearachdan. A-nis airson gach imrich tha sinn a 'toirt a-steach liosta mionaideach de cheistean log (ceistean loga) agus planadh modhan gluasad air ais soilleir a ghabhas gluasad bho aon ghluasad chun ath fhear ma dh'èireas duilgheadasan.

Bha dùbhlan sònraichte ann le bhith a’ frithealadh nan aon iarrtasan aig an aon àm air seann bhun-structar VM agus am bun-structar ùr stèidhichte air Kubernetes. Eu-coltach ri imrich lift-and-shift (Gluasad luath de thagraidhean “mar a tha" gu bun-structar ùr; faodar barrachd fiosrachaidh a leughadh, mar eisimpleir, an seo - mu thuairmeas. eadar-theangachadh.), tha obair co-shìnte air VMs “seann” agus Kubernetes ag iarraidh gum bi innealan sgrùdaidh co-chòrdail ris an dà àrainneachd agus comasach air meatrach a chur còmhla ann an aon sealladh. Tha e cudromach gun cleachd sinn na h-aon chlàran-deasachaidh agus a’ clàradh cheistean gus faicinn gu cunbhalach tron ​​ùine eadar-ghluasaid.

4. Ag atharrachadh trafaig gu buidheann ùr

Airson GitLab.com, tha pàirt de na frithealaichean coisrigte dha àrd-ùrlar canary. Bidh Pàirc Canary a’ frithealadh ar pròiseactan a-staigh agus faodaidh iad cuideachd air a chomasachadh le luchd-cleachdaidh. Ach tha e air a dhealbhadh gu sònraichte gus atharrachaidhean a chaidh a dhèanamh air a’ bhun-structar agus an cleachdadh a dhearbhadh. Thòisich a’ chiad sheirbheis imrich le bhith a’ gabhail ri beagan trafaic a-staigh, agus tha sinn a’ leantainn oirnn a’ cleachdadh an dòigh seo gus dèanamh cinnteach gun tèid coinneachadh ri SLOn mus cuir sinn an trafaic gu lèir chun bhuidheann.

A thaobh imrich, tha seo a’ ciallachadh gun tèid iarrtasan gu pròiseactan a-staigh a chuir gu Kubernetes an toiseach, agus an uairsin bidh sinn mean air mhean ag atharrachadh an còrr den trafaic chun bhuidheann le bhith ag atharrachadh cuideam an deireadh-sheachdain tro HAProxy. Rè an imrich bho VM gu Kubernetes, thàinig e am follais gu robh e gu math buannachdail dòigh fhurasta a bhith ann airson trafaic ath-stiùireadh eadar an t-seann bhun-structar agus am bun-structar ùr agus, a rèir sin, an seann bhun-structar a chumail deiseil airson a thoirt air ais anns na beagan làithean às deidh an imrich.

5. Glèidh comasan pods agus an cleachdadh

Cha mhòr sa bhad chaidh an duilgheadas a leanas a chomharrachadh: thòisich pods airson seirbheis a’ Chlàraidh gu sgiobalta, ach ghabh pods air bhog airson Sidekiq suas ri dà mhionaid. Thàinig an ùine tòiseachaidh fada airson pods Sidekiq gu bhith na dhuilgheadas nuair a thòisich sinn ag imrich eallach obrach gu Kubernetes airson luchd-obrach a dh’ fheumadh obraichean a phròiseasadh gu sgiobalta agus sgèile gu sgiobalta.

Anns a ’chùis seo, b’ e an leasan, ged a bhios Kubernetes’ Horizontal Pod Autoscaler (HPA) a’ làimhseachadh fàs trafaic gu math, tha e cudromach beachdachadh air feartan nan eallach obrach agus comas a bharrachd a riarachadh dha na pods (gu sònraichte nuair a tha iarrtas air a chuairteachadh gu neo-chothromach). Anns a ’chùis againn, bha àrdachadh obann ann an obraichean, a’ leantainn gu sgèileadh luath, a lean gu sùghaidh de ghoireasan CPU mus robh ùine againn an amar nód a sgèileadh.

Tha an-còmhnaidh buaireadh ann a bhith a’ brùthadh cho mòr ‘s as urrainn a-mach à cruinneachadh, ge-tà, an dèidh dhuinn duilgheadasan coileanaidh fhaighinn an toiseach, tha sinn a-nis a’ tòiseachadh le buidseat pod fialaidh agus ga lughdachadh nas fhaide air adhart, a ’cumail sùil gheur air SLOn. Tha cur air bhog pods airson seirbheis Sidekiq air luathachadh gu mòr agus a-nis a’ toirt timcheall air 40 diog gu cuibheasach. Bho bhith a 'lùghdachadh ùine cur air bhog pods bhuannaich an dà chuid GitLab.com agus ar luchd-cleachdaidh ionadan fèin-riaghlaidh ag obair leis a’ chairt oifigeil GitLab Helm.

co-dhùnadh

Às deidh dhuinn gach seirbheis a ghluasad, rinn sinn gàirdeachas leis na buannachdan bho bhith a’ cleachdadh Kubernetes ann an cinneasachadh: cleachdadh tagraidh nas luaithe agus nas sàbhailte, sgèileadh, agus riarachadh ghoireasan nas èifeachdaiche. A bharrachd air an sin, tha buannachdan imrich a’ dol nas fhaide na seirbheis GitLab.com. Bidh gach leasachadh air a’ chairt oifigeil Helm na bhuannachd don luchd-cleachdaidh aige.

Tha mi an dòchas gun do chòrd an sgeulachd mu ar tachartasan imrich Kubernetes riut. Tha sinn a’ leantainn air adhart a’ gluasad a h-uile seirbheis ùr chun bhuidheann. Gheibhear fiosrachadh a bharrachd anns na foillseachaidhean a leanas:

PS bhon eadar-theangair

Leugh cuideachd air ar blog:

Source: www.habr.com

Cuir beachd ann