{"id":94977,"date":"2020-09-24T07:43:00","date_gmt":"2020-09-24T05:43:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/nashi-vyvody-za-god-migraczii-gitlab-com-na-kubernetes"},"modified":"2020-09-24T07:43:00","modified_gmt":"2020-09-24T05:43:00","slug":"nashi-vyvody-za-god-migraczii-gitlab-com-na-kubernetes","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/nashi-vyvody-za-god-migraczii-gitlab-com-na-kubernetes","title":{"rendered":"Meie j\u00e4reldused GitLab.com migratsiooni aastast Kubernetesile.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>M\u00e4rkus t\u00f5lke kohta.<\/b>: Kubernetes'i rakendamine GitLab'is peetakse \u00fcheks kahest peamisest tegurist, mis soodustavad ettev\u00f5tte kasvu. Siiski, kuni hiljutise ajani oli GitLab.com'i veebiteenuse infrastruktuur rajatud virtuaalmasinatele ning migratsioon K8s-i algas alles umbes aasta tagasi ning pole siiani l\u00f5ppenud. Oleme r\u00f5\u00f5msad, et saame esitleda t\u00f5lget GitLabi SRE-inseneri hiljutisest artiklist selle kohta, kuidas see k\u00e4ib ja milliseid j\u00e4reldusi teevad projekti kaasavad insenerid.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Meie j\u00e4reldused GitLab.com migratsiooni aastast Kubernetesile.\" src=\"\/wp-content\/uploads\/2020\/09\/58429abf60cd19a49c5ce593051c2fca.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJuba aasta olen pidanud meie infrastruktuuri osakond k\u00f5iki teenuseid, mis t\u00f6\u00f6tavad GitLab.com-is, Kubernetesesse \u00fcle viima. Selle aja jooksul oleme silmitsi seisnud probleemidega, mis on seotud mitte ainult teenuste liikumisega Kubernetesesse, vaid ka h\u00fcbriidse juurutamise haldamisega \u00fclemineku ajal. K\u00e4esolevas artiklis r\u00e4\u00e4gime v\u00e4\u00e4rtuslikest \u00f5ppetundidest, mida oleme saanud.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Alates GitLab.com'i loomisest t\u00f6\u00f6tasid selle serverid pilves virtuaalmasinatel. Nende virtuaalmasinate \u00fcle haldab Chef ning nende paigaldamine toimub meie <noindex><a rel=\"nofollow\" href=\"https:\/\/about.gitlab.com\/install\/#ubuntu\">ametliku Linuxi paketi<\/a><\/noindex>. <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/gitlab-org\/release\/docs\/-\/blob\/master\/general\/deploy\/gitlab-com-deployer.md\">Installeerimisstrateegia<\/a><\/noindex> rakenduse uuendamiseks seisneb serverite pargi koordineeritud j\u00e4rjestikku ajakohastamises CI-pipeline'i abil. See meetod \u2014 kuigi aeglane ja veidi <noindex><a rel=\"nofollow\" href=\"https:\/\/about.gitlab.com\/handbook\/values\/#boring-solutions\">igav<\/a><\/noindex> \u2014 garanteerib, et GitLab.com rakendab samu paigaldus- ja konfigureerimismeetodeid nagu iseseisvad <i>(self-managed)<\/i> GitLabi paigaldused, mis kasutavad selleks meie Linuxi pakette.<\/p>\n<p>Kasutame seda meetodit, kuna on \u00e4\u00e4rmiselt oluline tunda omal nahal kogemusi ja r\u00f5\u00f5me, millega kogukonna tavalised liikmed silmitsi seisavad, kui nad installivad ja seadistavad oma GitLabi koopiad. See l\u00e4henemine toimis m\u00f5nda aega h\u00e4sti, kuid kui projektide arv GitLab'is \u00fcletas 10 miljoni piiri, m\u00f5istsime, et see ei rahulda enam meie vajadusi skaleerimise ja deploy'imise osas.<\/p>\n<h2>Esimesed sammud Kubernetes'i ja cloud-native GitLab'i suunas<\/h2>\n<p>\n2017. aastal loodi projekt <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/gitlab-org\/charts\">GitLab Charts<\/a><\/noindex> GitLabi ettevalmistamiseks pilves kasutamiseks ja selleks, et anda kasutajatele v\u00f5imalus installida GitLab Kubernetesi klastritesse. Siis teadsime, et GitLabi \u00fcleviimine Kubernetesesse suurendab SaaS-platvormi skaleerimisv\u00f5imalusi, lihtsustab kasutuselev\u00f5tteid ja parandab arvutusressursside efektiivsust. Samal ajal s\u00f5ltus palju meie rakenduse funktsioone monteeritud NFS-osade kasutamisest, mis aeglustas \u00fcleminekut virtuaalmasinatelt.<\/p>\n<p>P\u00fc\u00fcd cloud native ja Kubernetesi suunas v\u00f5imaldas meie inseneridel planeerida j\u00e4rkj\u00e4rgulist \u00fcleminekut, mil me loobusime m\u00f5nest rakenduse s\u00f5ltuvusest v\u00f5rguhoiust, j\u00e4tkates samal ajal uute funktsioonide arendamist. Alates sellest ajast, kui me hakkasime migratsiooni planeerima 2019. suvel, on paljusid neist piirangutest eradud ja GitLab.com'i \u00fcleviimine Kubernetesesse k\u00e4ib n\u00fc\u00fcd t\u00e4ie hooga!<\/p>\n<h2>GitLab.com-i t\u00f6\u00f6mudeli erip\u00e4rad Kuberneteses<\/h2>\n<p>\nGitLab.comi jaoks kasutame \u00fchte piirkondlikku GKE klastri, mis haldab kogu rakenduse liiklust. Et v\u00e4hendada migratsiooni keerukust (mis on niigi keeruline), keskendume teenustele, mis ei s\u00f5ltu kohalikest salvestustest v\u00f5i NFS-ost. GitLab.com kasutab peamiselt monoliitset koodibaasi Railsiga ja suuname liiklust vastavalt t\u00f6\u00f6koormuse omadustele erinevatesse l\u00f5pp-punktidesse, mis on isoleeritud oma node\u2019ide basseinidesse.<\/p>\n<p>Eesliidete puhul jagatakse need t\u00fc\u00fcbid veebip\u00e4ringuteks, API, Git SSH\/HTTPS ja Registery jaoks. Tagapool jagame t\u00f6\u00f6\u00fclesandeid reas erinevate omaduste j\u00e4rgi s\u00f5ltuvalt <noindex><a rel=\"nofollow\" href=\"https:\/\/about.gitlab.com\/blog\/2020\/06\/24\/scaling-our-use-of-sidekiq\/\">eelnevalt m\u00e4\u00e4ratud ressursipiirangutele<\/a><\/noindex>, mis v\u00f5imaldavad meil seada teenindustaseme eesm\u00e4rke (Service-Level Objectives, SLOs) erinevate koormuste jaoks.<\/p>\n<p>K\u00f5ik need GitLab.com teenused on seadistatud muudetud Helm'i kaardi abil. Konfiguratsioon toimub alakaardil, mis v\u00f5ivad olla valikuliselt aktiveeritud, kui me j\u00e4rk-j\u00e4rgult viime teenused klastrisse. Isegi arvestades, et on otsustatud mitte kaasata m\u00f5ned meie stateful-teenused, nagu Redis, Postgres, GitLab Pages ja Gitaly, v\u00f5imaldab Kubernetes radikaalselt v\u00e4hendada Chef'i haldavat VM-i arvu.<\/p>\n<h2>Kubernetes'i l\u00e4bipaistvus ja konfiguratsiooni haldamine<\/h2>\n<p>\nK\u00f5ik seaded hallatakse GitLab-i enda poolt. Selleks kasutatakse kolme konfiguratsiooniprojekti, mis p\u00f5hinevad Terraformil ja Helm\u2019il. P\u00fc\u00fcame k\u00f5ikjal, kus v\u00f5imalik, kasutada GitLab-i, et k\u00e4ivitada GitLab-i, kuid operatiivsete \u00fclesannete jaoks t\u00f6\u00f6tab meil eraldi GitLab-i installatsioon. See on vajalik, et mitte s\u00f5ltuda GitLab.com-i k\u00e4ttesaadavusest GitLab.com-i juurutuste ja v\u00e4rskenduste tegemisel.<\/p>\n<p>Kuigi meie Kubernetes klastrite torujuhtmed t\u00f6\u00f6tavad eraldi GitLabi installatsioonil, on koodirepositooriumidel peeglid, mis on avalikult saadaval j\u00e4rgmistel aadressidel:<\/p>\n<ul>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/gitlab-com\/gl-infra\/k8s-workloads\/gitlab-com\">k8s-workloads\/gitlab-com<\/a><\/noindex> \u2014 GitLab.com-i Helmi kaardi konfiguratsiooni \u00fcmbritsev konfiguratsioon;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/gitlab-com\/gl-infra\/k8s-workloads\/gitlab-helmfiles\/\">k8s-workloads\/gitlab-helmfiles<\/a><\/noindex> \u2014 sisaldab konfigureerimisi teenustele, mis ei ole otseselt seotud GitLab rakendusega. Nende hulka kuuluvad seadistused logimise ja klastrite j\u00e4lgimise jaoks, samuti integreeritud t\u00f6\u00f6riistad nagu PlantUML;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/gitlab-com\/gitlab-com-infrastructure\">Gitlab-com-infrastructure<\/a><\/noindex> \u2014 Terraformi konfiguratsioon Kubernetes ja vana (legacy) VM-infrastruktuuri jaoks. Siin seadistatakse k\u00f5ik vajalikud ressursid, et klastrit k\u00e4ivitada, sealhulgas klaster ise, s\u00f5lmede pooled, teenusekontod, IP-aadresside reserveerimine.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Meie j\u00e4reldused GitLab.com migratsiooni aastast Kubernetesile.\" src=\"\/wp-content\/uploads\/2020\/09\/612125403171d73106a081bf4244a52b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Muudatuste tegemisel kuvatakse avalik <\/i><noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/gitlab-com\/gl-infra\/k8s-workloads\/gitlab-com\/-\/merge_requests\/315#note_390180361\"><i>l\u00fchikokkuv\u00f5te<\/i><\/a><\/noindex><i> lingiga detailse diff'i juurde, mida SRE anal\u00fc\u00fcsib enne muudatuste tegemist klastris.<\/i><\/p>\n<p>SRE jaoks viib link \u00fcksikasjaliku diffini GitLab-i installatsioonis, mis on m\u00f5eldud operatsiooniks ja millele on juurdep\u00e4\u00e4s piiratud. See v\u00f5imaldab t\u00f6\u00f6tajatel ja kogukonnal, kellel ei ole juurdep\u00e4\u00e4su operatiivprojektile (mis on avatud ainult SRE-le), vaadata pakutavaid konfiguratsiooni muudatusi. Kombineerides avaliku GitLab-i koopia koodiks ja privaatse koopia CI-torude jaoks, s\u00e4ilitame \u00fchtse t\u00f6\u00f6voo ja samal ajal tagame s\u00f5ltumatuse GitLab.com-ist konfiguratsiooni v\u00e4rskendustes.<\/p>\n<h2>Mida oleme v\u00e4lja selgitanu migratsiooni ajal<\/h2>\n<p>\nR\u00e4nde protsessis on omandatud kogemus, mida rakendame uute migratsioonide ja juurutuste puhul Kuberneteses.<\/p>\n<h3>1. Kulude kasv ligikaudses liikluses erinevate k\u00e4ttesaadavuspiirkondade vahel<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Meie j\u00e4reldused GitLab.com migratsiooni aastast Kubernetesile.\" src=\"\/wp-content\/uploads\/2020\/09\/3dce44b3f803ffcea13e0101e7343d91.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Igap\u00e4evane v\u00e4ljamineku statistika (baiti p\u00e4evas) meie GitLabi hoidlate kogumi kohaselt GitLab.com-il.<\/i><\/p>\n<p>Google jagab oma v\u00f5rgu piirkondadeks. Need omakorda jagunevad k\u00e4ttesaadavusteks (AZ). Git-hostinguga on seotud suured andmemahtud, seega on meie jaoks oluline kontrollida v\u00f5rgu v\u00e4ljaviimist. Sisese liikluse korral on v\u00e4ljaviimine tasuta vaid siis, kui see j\u00e4\u00e4b \u00fche k\u00e4ttesaadavusala piiridesse. Artikli kirjutamise hetkel edastame tavalise t\u00f6\u00f6p\u00e4eva jooksul umbes 100 TB andmeid (ja see on ainult Git-reposiitide jaoks). Teenused, mis meie vanas VM-p\u00f5hisest topoloogiast asusid samadel virtuaalmasinatel, t\u00f6\u00f6tavad n\u00fc\u00fcd erinevates Kubernetes'i pod'ides. See t\u00e4hendab, et osa liiklust, mis varem oli VM-ile lokaalne, v\u00f5ib potentsiaalselt \u00fcletada k\u00e4ttesaadavusala piire.<\/p>\n<p>Regionaalsed GKE klastrid v\u00f5imaldavad katta mitmeid k\u00e4ttesaadavuspiirkondi varundamiseks. Me kaalume v\u00f5imalust <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/gitlab-com\/gl-infra\/delivery\/-\/issues\/1175\">jagada regionaalset GKE klastrit \u00fche k\u00e4ttesaadavuspiirkonna klastriteks<\/a><\/noindex> teenustele, mis genereerivad suurt liikluse mahtu. See v\u00f5imaldab v\u00e4hendada egressi kulusid, s\u00e4ilitades samas klastritasandi varundamise.<\/p>\n<h3>2. Resource request'id, limit'id ja skaleerimine<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Meie j\u00e4reldused GitLab.com migratsiooni aastast Kubernetesile.\" src=\"\/wp-content\/uploads\/2020\/09\/6e2e1ca4d37666b49358d94cd8660c56.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Replikate arv, mis t\u00f6\u00f6tleb production-liiklust registry.gitlab.com. Liiklus saavutab haripunkti umbes kell 15:00 UTC.<\/i><\/p>\n<p>Meie migratsioonilugu algas 2019. aasta augustis, kui viisime esimesena \u00fcle teenuse \u2014 GitLabi konteineriregistri (GitLab Container Registry) \u2014 Kubernetes'i. See kriitilise t\u00e4htsusega, suure liiklusega teenus sobis esimese migratsiooni jaoks h\u00e4sti, kuna see on stateless rakendus, millel on v\u00e4he v\u00e4liseid s\u00f5ltuvusi. Esimene probleem, millega silmitsi seisime, oli suur hulk v\u00e4ljakukkunud pod'e, mis olid tingitud m\u00e4lu puudusest s\u00f5lmedes. Selle t\u00f5ttu pidime muutma request'e ja limit'e.<\/p>\n<p>Avastati, et rakenduse puhul, mille m\u00e4lu tarbimine kasvab ajas, t\u00f5id madalad v\u00e4\u00e4rtused request'ide jaoks (mis reserveerivad m\u00e4lu iga pod'i jaoks) koos 'lahke' piiranguga kasutamisele l\u00f5puks k\u00fcllastumise. <i>(k\u00fcllastus)<\/i> ja k\u00f5rgele v\u00e4ljutamise m\u00e4\u00e4rale. Selle probleemiga tegelemiseks otsustati <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/gitlab-com\/gl-infra\/delivery\/-\/issues\/998#note_388983696\">otsustatud suurendada request'e ja v\u00e4hendada limit'e<\/a><\/noindex>. See leevendas s\u00f5lmede koormust ja tagas pod'ide eluts\u00fckli, mis ei avaldanud s\u00f5lmele liiga suurt survet. N\u00fc\u00fcd alustame migratsioone lahke (ja peaaegu \u00fchesuguste) request'ide ja limit'ide v\u00e4\u00e4rtustega, kohandades neid vastavalt vajadusele.<\/p>\n<h3>3. N\u00e4itajad ja logid<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Meie j\u00e4reldused GitLab.com migratsiooni aastast Kubernetesile.\" src=\"\/wp-content\/uploads\/2020\/09\/66d1fd47b57d5826f13defa6e6a7fe3c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Infrastruktuuri\u00fcksus keskendub viivitustele, vigade protsendile ja k\u00fcllastusele paigaldatud <\/i><noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Service-level_objective\"><i>teenustaseme eesm\u00e4rkidele<\/i><\/a><\/noindex><i> (SLO), mis on seotud <\/i><noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/gitlab-com\/dashboards-gitlab-com\/-\/metrics\/sla-dashboard.yml?environment=1790496&amp;duration_seconds=86400\"><i>meie s\u00fcsteemi \u00fcldise k\u00e4ttesaadavusega<\/i><\/a><\/noindex><i>.<\/i><\/p>\n<p>Viimase aasta jooksul oli infrastruktuuri\u00fcksuse jaoks \u00fcheks t\u00e4htsaks saavutuseks t\u00e4iustused j\u00e4lgimises ja SLO-dega t\u00f6\u00f6tamises. SLO-d v\u00f5imaldasid meil seada eesm\u00e4rke eraldi teenustele, mida me migreerimise ajal t\u00e4helepanelikult j\u00e4lgisime. Kuid isegi sellise t\u00e4iustatud j\u00e4lgimisega ei pruugi me probleeme kohe m\u00e4rkida, kasutades n\u00e4itajaid ja h\u00e4ireid. N\u00e4iteks keskendudes viivitustele ja vigade protsendile, ei h\u00f5lma me t\u00e4ielikult k\u00f5iki teenuse kasutamise stsenaariume, mis migreerivad.<\/p>\n<p>See probleem avastati peaaegu kohe p\u00e4rast osade t\u00f6\u00f6koormuste \u00fcleviimist klastrisse. Erakordselt t\u00f5siselt ilmnes see, kui tuli kontrollida funktsioone, mille arvamised olid v\u00e4ikesed, kuid millel olid v\u00e4ga spetsiifilised konfiguratsioonilised s\u00f5ltuvused. \u00dcks peamisi \u00f5ppetunde p\u00e4rast migreerimist oli vajadus j\u00e4lgimisel arvesse v\u00f5tta mitte ainult n\u00e4itajaid, vaid ka logisid ja 'pikka saba' <i>(r\u00e4\u00e4gime <\/i><noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Long_tail\"><i>sellest nende jaotumisest<\/i><\/a><\/noindex><i> graafikul \u2014 toim. t\u00f5l.)<\/i> vigu. N\u00fc\u00fcd sisaldab iga migreerimine \u00fcksikasjalikku logik\u00fcsimuste loendit <i>(log queries)<\/i> ja plaanime selged taasteprotseduurid, mida probleemide korral saab \u00fclekanda \u00fche vahetuse k\u00e4est teise.<\/p>\n<p>Samaaegne sama p\u00e4ringu teenindamine vana VM-infrastruktuuri ja uue, Kubernetesel p\u00f5hineva, esindas ainulaadset v\u00e4ljakutset. Erinevalt lift-and-shift t\u00fc\u00fcpi migreerimisest <i>(rakenduste kiire \u00fcleviimine 'nagu on' uude infrastruktuuri; l\u00e4hemalt saab lugeda n\u00e4iteks, <\/i><noindex><a rel=\"nofollow\" href=\"https:\/\/www.ibm.com\/cloud\/learn\/lift-and-shift\"><i>siin<\/i><\/a><\/noindex><i> \u2014 toimetaja m\u00e4rkus)<\/i>, samaaegne t\u00f6\u00f6 \u201evana\u201c VM ja Kubernetes n\u00f5uab, et j\u00e4lgimist\u00f6\u00f6riistad oleksid \u00fchilduvad m\u00f5lema keskkonnaga ja suudaksid \u00fchendada metrikat \u00fchte vaatesse. Oluline on, et me kasutame samu dashboard\u2019e ja logik\u00fcsimusi, et saavutada j\u00e4rjepidev j\u00e4lgitavus \u00fcleminekuperioodil.<\/p>\n<h3>4. Liikluse suunamine uuele klastrile<\/h3>\n<p>\nGitLab.com jaoks on osa serveritest eraldatud <noindex><a rel=\"nofollow\" href=\"https:\/\/about.gitlab.com\/handbook\/engineering\/#canary-testing\">kanar Stage\u2019i<\/a><\/noindex>. Kanarapark teenindab meie sisemisi projekte ja v\u00f5ib <noindex><a rel=\"nofollow\" href=\"https:\/\/next.gitlab.com\/\">kasutajate poolt kaasata<\/a><\/noindex>. Kuid peamiselt on see ette n\u00e4htud infrastruktuuri ja rakenduste muudatuste testimiseks. Esimene viidatud teenus hakkas vastu v\u00f5tma piiratud hulga sisest sissetulevat liiklust ja j\u00e4tkame selle meetodi kasutamist, et veenduda SLO t\u00e4itmises enne, kui suuname kogu liikluse klastrisse.<\/p>\n<p>Migratsiooni puhul t\u00e4hendab see, et k\u00f5igepealt suunatakse Kubernetesesse p\u00e4ringud sisemistele projektidele ja seej\u00e4rel suuname j\u00e4rk-j\u00e4rgult \u00fclej\u00e4\u00e4nud liikluse klastrisse, muutes HAProxy kaudu tagaside kaalu. \u00dcleminekul VM-ilt Kubernetesesse sai selgeks, et on v\u00e4ga mugav omada lihtsat viisi liikluse suunamiseks vana ja uue infrastruktuuri vahel ning hoida vana infrastruktuuri valmis tagasip\u00f6\u00f6rdeks esimestel p\u00e4evadel p\u00e4rast migratsiooni.<\/p>\n<h3>5. Pod'ide varukoht ja nende kasutamine<\/h3>\n<p>\nPeaaegu kohe tuvastati j\u00e4rgmine probleem: Registry teenuse pod'id k\u00e4ivitusid kiiresti, kuid Sidekiq pod'ide k\u00e4ivitamine v\u00f5ttis aega kuni <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/gitlab-org\/charts\/gitlab\/-\/issues\/1775\">kaks minutit<\/a><\/noindex>. Pikaajaline Sidekiq pod'ide k\u00e4ivitamine muutus probleemiks, kui alustasime Kubernetes'i t\u00f6\u00f6koormuste migratsiooni t\u00f6\u00f6tajatel, kellel on vaja kiiresti t\u00f6\u00f6\u00fclesandeid t\u00f6\u00f6delda ja kiiresti skaleeruda.<\/p>\n<p>Antud juhul seisnes \u00f5ppetund selles, et kuigi Horisontaalne Pod Autoeskaleerija (HPA) Kuberneteses suudab h\u00e4sti toime tulla liikluse kasvuga, on oluline arvestada t\u00f6\u00f6koormuste omadustega ja eraldada varuressursse pod'ide jaoks (eriti n\u00f5udluse eba\u00fchtlase jaotuse korral). Meie juhul ilmnes j\u00e4rsk job'ide suurenemine, mis viis kiirele skaleerimisele, mis p\u00f5hjustas CPU ressursside k\u00fcllastumise enne, kui meid j\u00f5udis skaleerida s\u00f5lmede kogumit.<\/p>\n<p>Alati on kiusatus p\u00fc\u00fcda klastrist maksimumi v\u00e4lja pigistada, kuid kuna seletasime alguses tootlikkuse probleemide ilmnemisega, alustame n\u00fc\u00fcd heldest pod-eelarvest ja v\u00e4hendame seda hiljem, j\u00e4lgides hoolikalt SLO-d. Sidekiqi teenuse pod'ide k\u00e4ivitamine on oluliselt kiirenend ja n\u00fc\u00fcd v\u00f5tab keskmiselt umbes 40 sekundit. <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/gitlab-org\/charts\/gitlab\/-\/issues\/1775\">Pod'ide k\u00e4ivitamise aja l\u00fchendamine<\/a><\/noindex> on kasu toonud nii GitLab.com-ile kui ka meie self-managed instalatsioonide kasutajatele, kes t\u00f6\u00f6tavad GitLabi ametliku Helm-chart'i abil.<\/p>\n<h2>Kokkuv\u00f5te<\/h2>\n<p>\nIga teenuse migreerimise j\u00e4rel nautisime Kubernetes'e kasutamise eeliseid tootmises: rakenduse kiirem ja turvalisem juurutamine, skaleerimine ja t\u00f5husam ressursijaotus. Samuti ulatuvad migratsiooni eelised kaugemale GitLab.com-ist. Iga ametliku Helm-chart'i t\u00e4iustamisest saavad kasu ka selle kasutajad.<\/p>\n<p>Loodan, et teile meeldis meie lugu seiklustest Kubernetes'e migreerimisega. J\u00e4tkame uute teenuste kolimist klastrisse. Lisainfot leiate j\u00e4rgmistest avaldustest:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/about.gitlab.com\/handbook\/engineering\/infrastructure\/production\/kubernetes\/gitlab-com\/\">Miks me migreerime Kubernetes'esse?<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/about.gitlab.com\/handbook\/engineering\/infrastructure\/production\/architecture\/#gitlab-com-on-kubernetes\">GitLab.com Kubernetes'es<\/a><\/noindex>\u00bb;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/groups\/gitlab-com\/gl-infra\/-\/epics\/112\">Epic GitLab.com migratsiooniks Kubernetes'esse<\/a><\/noindex>.<\/li>\n<\/ul>\n<p><\/p>\n<h2>P.S. t\u00f5lkijalt<\/h2>\n<p>\nLugege ka meie blogist:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/519962\/\">3 aastat Kubernetes'ega tootmises: siin on, mida me m\u00f5istsime<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/504396\/\">10 t\u00fc\u00fcpilist viga Kubernetes'i kasutamisel<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/335814\/\">Kubernetes'e edulood tootmises. Osa 3: GitHub<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/440278\/\">Tindri \u00fcleminek Kubernetes'esse<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/520150\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u044e Kubernetes \u0432 GitLab \u0441\u0447\u0438\u0442\u0430\u044e\u0442 \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0434\u0432\u0443\u0445 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432, \u0441\u043f\u043e\u0441\u043e\u0431\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0440\u043e\u0441\u0442\u0443 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0434\u043e \u043d\u0435\u0434\u0430\u0432\u043d\u0435\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043e\u043d\u043b\u0430\u0439\u043d-\u0441\u0435\u0440\u0432\u0438\u0441\u0430 GitLab.com \u0431\u044b\u043b\u0430 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043d\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445, \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043a\u043e\u043b\u043e \u0433\u043e\u0434\u0430 \u043d\u0430\u0437\u0430\u0434 \u043d\u0430\u0447\u0430\u043b\u0430\u0441\u044c \u0435\u0451 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044f \u0432 K8s, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430. \u0420\u0430\u0434\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u043d\u0435\u0434\u0430\u0432\u043d\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 SRE-\u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430 GitLab \u043e \u0442\u043e\u043c, \u043a\u0430\u043a [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":94978,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-94977","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u044e Kubernetes \u0432 GitLab \u0441\u0447\u0438\u0442\u0430\u044e\u0442 \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0434\u0432\u0443\u0445 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432, \u0441\u043f\u043e\u0441\u043e\u0431\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0440\u043e\u0441\u0442\u0443 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/nashi-vyvody-za-god-migraczii-gitlab-com-na-kubernetes\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041d\u0430\u0448\u0438 \u0432\u044b\u0432\u043e\u0434\u044b \u0437\u0430 \u0433\u043e\u0434 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 GitLab.com \u043d\u0430 Kubernetes | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u044e Kubernetes \u0432 GitLab \u0441\u0447\u0438\u0442\u0430\u044e\u0442 \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0434\u0432\u0443\u0445 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432, \u0441\u043f\u043e\u0441\u043e\u0431\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0440\u043e\u0441\u0442\u0443 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/nashi-vyvody-za-god-migraczii-gitlab-com-na-kubernetes\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-09-24T05:43:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-09-24T05:43:00+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47 Meie j\u00e4reldused aasta jooksul GitLab.com-i migratsioonist Kubernetes'esse | ProHoster","description":"M\u00e4rkus t\u00f5lkijalt: Kubernetes'e kohandamist GitLab-is peetakse \u00fcheks kahest peamisest tegurist, mis on kaasa aidanud ettev\u00f5tte kasvule.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/nashi-vyvody-za-god-migraczii-gitlab-com-na-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041d\u0430\u0448\u0438 \u0432\u044b\u0432\u043e\u0434\u044b \u0437\u0430 \u0433\u043e\u0434 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 GitLab.com \u043d\u0430 Kubernetes | ProHoster","og:description":"\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u044e Kubernetes \u0432 GitLab \u0441\u0447\u0438\u0442\u0430\u044e\u0442 \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0434\u0432\u0443\u0445 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432, \u0441\u043f\u043e\u0441\u043e\u0431\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0440\u043e\u0441\u0442\u0443 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438.","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/nashi-vyvody-za-god-migraczii-gitlab-com-na-kubernetes","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-09-24T05:43:00+00:00","article:modified_time":"2020-09-24T05:43:00+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"94977","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 11:14:45","updated":"2022-10-03 07:39:43","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/94977","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=94977"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/94977\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/94978"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=94977"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=94977"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=94977"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}