Is-sejbiet tagħna minn sena ta’ migrazzjoni ta’ GitLab.com għal Kubernetes

Nota. transl.: L-adozzjoni ta 'Kubernetes f'GitLab hija meqjusa bħala wieħed miż-żewġ fatturi ewlenin li jikkontribwixxu għat-tkabbir tal-kumpanija. Madankollu, sa ftit ilu, l-infrastruttura tas-servizz online GitLab.com kienet mibnija fuq magni virtwali, u madwar sena ilu biss bdiet il-migrazzjoni tagħha lejn K8s, li għadha mhix lesta. Għandna pjaċir nippreżentaw traduzzjoni ta' artiklu reċenti minn inġinier ta' GitLab SRE dwar kif dan iseħħ u x'konklużjonijiet jagħmlu l-inġiniera li qed jipparteċipaw fil-proġett.

Is-sejbiet tagħna minn sena ta’ migrazzjoni ta’ GitLab.com għal Kubernetes

Għal madwar sena issa, id-diviżjoni tal-infrastruttura tagħna ilha temigra s-servizzi kollha li jaħdmu fuq GitLab.com lejn Kubernetes. Matul dan iż-żmien, iltqajna ma 'sfidi relatati mhux biss maċ-ċaqliq tas-servizzi għal Kubernetes, iżda wkoll mal-ġestjoni tal-iskjerament ibridu matul it-tranżizzjoni. Il-lezzjonijiet siewja li tgħallimna se jiġu diskussi f’dan l-artiklu.

Mill-bidu nett ta 'GitLab.com, is-servers tiegħu damu fis-sħab fuq magni virtwali. Dawn il-magni virtwali huma ġestiti minn Chef u installati bl-użu tagħna pakkett uffiċjali tal-Linux. Strateġija ta' skjerament f'każ li l-applikazzjoni teħtieġ tiġi aġġornata, tikkonsisti sempliċiment fl-aġġornament tal-flotta tas-server b'mod koordinat u sekwenzjali bl-użu ta' pipeline CI. Dan il-metodu - għalkemm bil-mod u ftit dwejjaq - jiżgura li GitLab.com juża l-istess prattiki ta’ installazzjoni u konfigurazzjoni bħall-utenti offline (immaniġġjat waħdu) Installazzjonijiet GitLab jużaw il-pakketti Linux tagħna għal dan.

Aħna nużaw dan il-metodu għaliex huwa estremament importanti li nesperjenzaw id-duluri u l-ferħ kollha li jesperjenzaw il-membri ordinarji tal-komunità meta jinstallaw u jikkonfiguraw il-kopji tagħhom ta 'GitLab. Dan l-approċċ ħadem tajjeb għal xi żmien, iżda meta n-numru ta 'proġetti fuq GitLab qabeż l-10 miljun, indunajna li ma baqax jissodisfa l-ħtiġijiet tagħna għall-iskala u l-iskjerament.

L-ewwel passi għal Kubernetes u GitLab nattiv tal-cloud

Il-proġett inħoloq fl-2017 Ċarts GitLab biex jipprepara GitLab għall-iskjerament tal-cloud, u biex jippermetti lill-utenti jinstallaw GitLab fuq clusters ta' Kubernetes. Imbagħad konna nafu li ċ-ċaqliq ta’ GitLab għal Kubernetes kien se jżid l-iskalabbiltà tal-pjattaforma SaaS, jissimplifika l-iskjerament, u jtejjeb l-effiċjenza tar-riżorsi tal-kompjuter. Fl-istess ħin, ħafna mill-funzjonijiet tal-applikazzjoni tagħna jiddependu fuq diviżorji NFS immuntati, li naqqset it-tranżizzjoni minn magni virtwali.

L-ispinta lejn cloud native u Kubernetes ippermettiet lill-inġiniera tagħna jippjanaw transizzjoni gradwali, li matulha abbandunajna xi wħud mid-dipendenzi tal-applikazzjoni fuq il-ħażna tan-netwerk filwaqt li komplejna niżviluppaw karatteristiċi ġodda. Minn mindu bdejna nippjanaw il-migrazzjoni fis-sajf tal-2019, ħafna minn dawn il-limitazzjonijiet ġew solvuti, u l-proċess tal-migrazzjoni ta' GitLab.com għal Kubernetes issa miexi sew!

Karatteristiċi ta' GitLab.com f'Kubernetes

Għal GitLab.com, nużaw cluster GKE reġjonali wieħed li jimmaniġġja t-traffiku kollu tal-applikazzjoni. Biex innaqqsu l-kumplessità tal-migrazzjoni (diġà delikata), aħna niffukaw fuq servizzi li ma jiddependux fuq ħażna lokali jew NFS. GitLab.com juża bażi ta’ kodiċi ta’ Rails predominantement monolitika, u aħna nirrottaw it-traffiku bbażat fuq il-karatteristiċi tat-tagħbija tax-xogħol lejn endpoints differenti li huma iżolati fil-gruppi ta’ nodi tagħhom stess.

Fil-każ tal-frontend, dawn it-tipi huma maqsuma f'talbiet għall-web, API, Git SSH/HTTPS u Reġistru. Fil-każ tal-backend, aħna naqsmu l-impjiegi fil-kju skont diversi karatteristiċi skont konfini tar-riżorsi predefiniti, li jippermettulna nissettjaw Objettivi tal-Livell tas-Servizz (SLOs) għal diversi xogħolijiet.

Dawn is-servizzi kollha ta' GitLab.com huma kkonfigurati bl-użu ta' chart ta' GitLab Helm mhux modifikata. Il-konfigurazzjoni titwettaq f'subcharts, li jistgħu jiġu attivati ​​b'mod selettiv hekk kif nimigraw is-servizzi gradwalment lejn il-cluster. Anke jekk iddeċidejna li ma nkludux xi wħud mis-servizzi stateful tagħna fil-migrazzjoni, bħal Redis, Postgres, GitLab Pages u Gitaly, l-użu ta 'Kubernetes jippermettilna nnaqqsu radikalment in-numru ta' VMs li Chef bħalissa jamministra.

Konfigurazzjoni Kubernetes Viżibilità u Ġestjoni

Is-settings kollha huma ġestiti minn GitLab innifsu. Għal dan, jintużaw tliet proġetti ta 'konfigurazzjoni bbażati fuq Terraform u Helm. Nippruvaw, kull meta jkun possibbli, nużaw GitLab innifsu biex imexxu GitLab, iżda għal ħidmiet operattivi għandna installazzjoni separata ta 'GitLab. Dan huwa meħtieġ biex jiġi żgurat li m'intix dipendenti fuq id-disponibbiltà ta 'GitLab.com meta twettaq skjeramenti u aġġornamenti ta' GitLab.com.

Għalkemm il-pipelines tagħna għall-cluster Kubernetes jaħdmu fuq installazzjoni GitLab separata, hemm mirja tar-repożitorji tal-kodiċi li huma pubblikament disponibbli fl-indirizzi li ġejjin:

  • k8s-workloads/gitlab-com — Qafas ta’ konfigurazzjoni GitLab.com għat-tabella ta’ GitLab Helm;
  • k8s-workloads/gitlab-helmfiles - Fih konfigurazzjonijiet għal servizzi li mhumiex assoċjati direttament mal-applikazzjoni GitLab. Dawn jinkludu konfigurazzjonijiet għall-illoggjar u l-monitoraġġ tal-clusters, kif ukoll għodod integrati bħal PlantUML;
  • Gitlab-com-infrastruttura — Konfigurazzjoni Terraform għal Kubernetes u infrastruttura VM tal-legat. Hawnhekk tikkonfigura r-riżorsi kollha meħtieġa biex tmexxi l-cluster, inkluż il-cluster innifsu, node pools, kontijiet tas-servizz, u riżervi tal-indirizz IP.

Is-sejbiet tagħna minn sena ta’ migrazzjoni ta’ GitLab.com għal Kubernetes
L-opinjoni pubblika tintwera meta jsiru bidliet. sommarju qasir b'link għad-diff dettaljat li SRE janalizza qabel ma jagħmel bidliet fil-cluster.

Għal SRE, il-link twassal għal diff dettaljat fl-installazzjoni GitLab, li tintuża għall-produzzjoni u l-aċċess għaliha hija limitata. Dan jippermetti lill-impjegati u lill-komunità, mingħajr aċċess għall-proġett operattiv (li huwa miftuħ biss għall-SREs), biex jaraw il-bidliet proposti fil-konfigurazzjoni. Billi ngħaqqad istanza pubblika ta' GitLab għal kodiċi ma' istanza privata għal pipelines CI, inżommu fluss tax-xogħol wieħed filwaqt li niżguraw l-indipendenza minn GitLab.com għall-aġġornamenti tal-konfigurazzjoni.

Dak li sirna nafu waqt il-migrazzjoni

Matul iċ-ċaqliq, inkisbet esperjenza li napplikaw għal migrazzjonijiet u skjeramenti ġodda f'Kubernetes.

1. Spejjeż miżjuda minħabba t-traffiku bejn iż-żoni tad-disponibbiltà

Is-sejbiet tagħna minn sena ta’ migrazzjoni ta’ GitLab.com għal Kubernetes
Statistika ta' ħruġ ta' kuljum (bytes kuljum) għall-flotta tar-repożitorju Git fuq GitLab.com

Google taqsam in-netwerk tagħha f'reġjuni. Dawk, min-naħa tagħhom, huma maqsuma f'żoni ta 'aċċessibilità (AZ). Git hosting huwa assoċjat ma 'ammonti kbar ta' dejta, għalhekk huwa importanti għalina li nikkontrollaw il-ħruġ tan-netwerk. Għat-traffiku intern, il-ħruġ huwa b'xejn biss jekk jibqa' fl-istess żona ta' disponibbiltà. Minn din il-kitba, qed naqdu madwar 100 TB ta 'dejta f'ġurnata tax-xogħol tipika (u dan huwa biss għar-repożitorji Git). Is-servizzi li kienu joqogħdu fl-istess magni virtwali fit-topoloġija l-antika tagħna bbażata fuq VM issa jitħaddmu f'poss differenti ta' Kubernetes. Dan ifisser li xi traffiku li qabel kien lokali għall-VM jista 'potenzjalment jivvjaġġa barra miż-żoni ta' disponibbiltà.

Il-clusters reġjonali tal-GKE jippermettulek li tifrex fuq Żoni ta' Disponibbiltà multipli għal redundancy. Qed nikkunsidraw il-possibbiltà jaqsam il-cluster reġjonali tal-GKE fi clusters ta’ żona waħda għal servizzi li jiġġeneraw volumi kbar ta’ traffiku. Dan se jnaqqas l-ispejjeż tal-ħruġ filwaqt li jżomm redundancy fil-livell tal-clusters.

2. Limiti, talbiet tar-riżorsi u skalar

Is-sejbiet tagħna minn sena ta’ migrazzjoni ta’ GitLab.com għal Kubernetes
In-numru ta' repliki li jipproċessaw it-traffiku tal-produzzjoni fuq registry.gitlab.com. It-traffiku jilħaq il-quċċata f'~15:00 UTC.

L-istorja tal-migrazzjoni tagħna bdiet f'Awwissu 2019, meta emigrajna l-ewwel servizz tagħna, ir-Reġistru tal-Kontenituri GitLab, għal Kubernetes. Dan is-servizz kritiku għall-missjoni u bi traffiku għoli kien għażla tajba għall-ewwel migrazzjoni minħabba li hija applikazzjoni mingħajr stat bi ftit dipendenzi esterni. L-ewwel problema li ltqajna magħhom kienet numru kbir ta 'miżwed żgumbrati minħabba nuqqas ta' memorja fuq in-nodi. Minħabba dan, kellna nibdlu t-talbiet u l-limiti.

Instab li fil-każ ta’ applikazzjoni fejn il-konsum tal-memorja jiżdied maż-żmien, valuri baxxi għal talbiet (memorja ta’ riżerva għal kull pod) flimkien ma’ limitu iebes “ġeneruż” fuq l-użu wasslu għal saturazzjoni. (saturazzjoni) nodi u livell għoli ta’ żgumbramenti. Biex tittratta din il-problema, kien ġie deċiż li jiżdiedu t-talbiet u jitnaqqsu l-limiti. Dan neħħa l-pressjoni fuq in-nodi u żgura li l-imżiewed kellhom ċiklu tal-ħajja li ma poġġiex wisq pressjoni fuq in-nodu. Issa nibdew migrazzjonijiet b'valuri ta' talba u limitu ġenerużi (u kważi identiċi), billi naġġustawhom kif meħtieġ.

3. Metriċi u zkuk

Is-sejbiet tagħna minn sena ta’ migrazzjoni ta’ GitLab.com għal Kubernetes
Id-diviżjoni infrastruttura tiffoka fuq latency, rati ta 'żball u saturazzjoni ma installat għanijiet tal-livell tas-servizz (SLO) marbut ma' disponibbiltà ġenerali tas-sistema tagħna.

Matul is-sena li għaddiet, wieħed mill-avvenimenti ewlenin fid-diviżjoni tal-infrastruttura kien titjib fil-monitoraġġ u l-ħidma mal-SLOs. L-SLOs ippermettewna nistabbilixxu miri għal servizzi individwali li aħna mmonitorjajna mill-qrib matul il-migrazzjoni. Iżda anke b'din l-osservabilità mtejba, mhux dejjem huwa possibbli li immedjatament tara problemi bl-użu ta 'metriċi u twissijiet. Pereżempju, billi niffukaw fuq ir-rati ta’ latenza u ta’ żball, aħna ma nkoprux bis-sħiħ il-każijiet kollha ta’ użu għal servizz li jkun għaddej minn migrazzjoni.

Din il-kwistjoni ġiet skoperta kważi immedjatament wara l-migrazzjoni ta 'xi xogħol għall-cluster. Sar speċjalment akut meta kellna niċċekkjaw funzjonijiet li għalihom in-numru ta 'talbiet kien żgħir, iżda li kellhom dipendenzi ta' konfigurazzjoni speċifiċi ħafna. Waħda mill-lezzjonijiet ewlenin mill-migrazzjoni kienet il-ħtieġa li jitqiesu mhux biss il-metriċi meta ssir il-monitoraġġ, iżda wkoll zkuk u "long tail" (dan huwa madwar tali distribuzzjoni tagħhom fuq iċ-ċart - madwar. trad.) żbalji. Issa għal kull migrazzjoni aħna ninkludu lista dettaljata ta 'mistoqsijiet log (lok mistoqsijiet) u tippjana proċeduri ċari ta' rollback li jistgħu jiġu trasferiti minn bidla għal oħra jekk jinqalgħu problemi.

Is-servizz tal-istess talbiet b'mod parallel fuq l-infrastruttura VM l-antika u l-infrastruttura ġdida bbażata fuq Kubernetes ippreżenta sfida unika. B'differenza mill-migrazzjoni lift-and-shift (trasferiment rapidu tal-applikazzjonijiet "kif inhuma" għal infrastruttura ġdida; aktar dettalji jistgħu jinqraw, pereżempju, hawn - madwar. trad.), xogħol parallel fuq VMs "qodma" u Kubernetes jeħtieġ li l-għodod ta 'monitoraġġ ikunu kompatibbli maż-żewġ ambjenti u jkunu jistgħu jgħaqqdu l-metriċi f'vista waħda. Huwa importanti li nużaw l-istess dashboards u log queries biex niksbu osservabilità konsistenti matul il-perjodu ta’ tranżizzjoni.

4. Qlib tat-traffiku għal cluster ġdid

Għal GitLab.com, parti mis-servers hija ddedikata għalihom stadju kanarju. Canary Park jaqdi l-proġetti interni tagħna u jista 'wkoll ppermettiet mill-utenti. Iżda huwa primarjament iddisinjat biex jittestja l-bidliet li saru fl-infrastruttura u l-applikazzjoni. L-ewwel servizz emigrat beda billi aċċetta ammont limitat ta 'traffiku intern, u aħna nkomplu nużaw dan il-metodu biex niżguraw li l-SLOs jintlaħqu qabel ma nibagħtu t-traffiku kollu lill-cluster.

Fil-każ tal-migrazzjoni, dan ifisser li t-talbiet għal proġetti interni jintbagħtu lill-Kubernetes l-ewwel, u mbagħad naqilbu gradwalment il-bqija tat-traffiku għall-cluster billi nbiddlu l-piż għall-backend permezz ta 'HAProxy. Matul il-migrazzjoni minn VM għal Kubernetes, deher ċar li kien ta 'benefiċċju kbir li jkun hemm mod faċli biex tirriindirizza t-traffiku bejn l-infrastruttura l-antika u l-ġdida u, għaldaqstant, iżżomm l-infrastruttura l-antika lesta għall-qlib fl-ewwel ftit jiem wara l-migrazzjoni.

5. Kapaċità ta' riżerva tal-imżiewed u l-użu tagħhom

Kważi immedjatament ġiet identifikata l-problema li ġejja: il-miżwed għas-servizz tar-Reġistru bdew malajr, iżda t-tnedija tal-miżwed għal Sidekiq damet sa żewġ minuti. Iż-żmien twil ta' tħaddim għall-pods Sidekiq sar kwistjoni meta bdejna nimigraw il-piżijiet tax-xogħol lejn Kubernetes għall-ħaddiema li kellhom bżonn jipproċessaw l-impjiegi malajr u jeżiljaw malajr.

F'dan il-każ, il-lezzjoni kienet li filwaqt li Horizontal Pod Autoscaler (HPA) f'Kubernetes jagħmel xogħol tajjeb biex jimmaniġġja t-tkabbir tat-traffiku, huwa importanti li jitqiesu l-karatteristiċi tal-piżijiet tax-xogħol u talloka kapaċità żejda għall-imżiewed (speċjalment meta d-domanda tkun. imqassma b'mod irregolari). Fil-każ tagħna, kien hemm żieda f'daqqa fl-impjiegi, li wasslet għal skalar rapidu, li wasslet għal saturazzjoni tar-riżorsi tas-CPU qabel ma kellna ħin biex niskalaw in-node pool.

Dejjem hemm it-tentazzjoni li jingħafsu kemm jista 'jkun minn raggruppament, madankollu, wara li inizjalment iltqajt ma' problemi ta 'prestazzjoni, issa nibdew b'baġit ta' pod ġeneruż u nnaqqsuh aktar tard, billi nżommu għajnejk fuq SLOs. It-tnedija tal-miżwed għas-servizz Sidekiq ġiet aċċellerata b'mod sinifikanti u issa tieħu madwar 40 sekonda bħala medja. Minn tnaqqas iż-żmien li tieħu biex tniedi l-imżiewed rebaħ kemm GitLab.com kif ukoll l-utenti tagħna ta 'installazzjonijiet ġestiti lilhom infushom li jaħdmu mal-chart uffiċjali ta' GitLab Helm.

Konklużjoni

Wara li emigrajna kull servizz, aħna ferħu bil-benefiċċji tal-użu ta' Kubernetes fil-produzzjoni: skjerament ta' applikazzjoni aktar mgħaġġel u aktar sigur, skalar, u allokazzjoni tar-riżorsi aktar effiċjenti. Barra minn hekk, il-vantaġġi tal-migrazzjoni jmorru lil hinn mis-servizz GitLab.com. Kull titjib fit-tabella uffiċjali ta' Helm jibbenefika lill-utenti tiegħu.

Nispera li ħadt gost bl-istorja tal-avventuri tal-migrazzjoni tagħna ta' Kubernetes. Aħna nkomplu nimmigraw is-servizzi l-ġodda kollha lejn il-cluster. Informazzjoni addizzjonali tista' tinstab fil-pubblikazzjonijiet li ġejjin:

PS minn traduttur

Aqra wkoll fuq il-blog tagħna:

Sors: www.habr.com

Żid kumment