{"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 aasta GitLab.com \u00fcleviimisest Kubernetesesse","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>M\u00e4rk. t\u00f5lge.<\/b>: Kubernetes'i kohandamist GitLab'is peetakse \u00fcheks kahest peamisest tegurist, mis toetavad ettev\u00f5tte kasvu. Siiski oli kuni hiljuti GitLab.com online-teenuse infrastruktuur rajatud virtuaalmasinatele, ning alles umbes aasta tagasi algas selle kolimine K8s-i, mis pole siiani l\u00f5petatud. Meil on hea meel tutvustada t\u00f5lget hiljutisest artiklist GitLab'i SRE-insenerilt selle kohta, kuidas see toimub ja milliseid j\u00e4reldusi teevad projekti kaasatud insenerid.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Meie j\u00e4reldused aasta GitLab.com \u00fcleviimisest Kubernetesesse\" src=\"\/wp-content\/uploads\/2020\/09\/58429abf60cd19a49c5ce593051c2fca.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMeie infrastruktuuriosakond on juba umbes aasta tegelenud k\u00f5igi GitLab.com-i teenuste migreerimisega Kubernetesesse. Selle aja jooksul oleme kokku puutunud probleemidega, mis on seotud mitte ainult teenuste \u00fcleviimisega Kubernetesesse, vaid ka h\u00fcbriidse juurutamise juhtimisega \u00fclemineku ajal. Selles artiklis r\u00e4\u00e4gime meie saadud v\u00e4\u00e4rtuslikest \u00f5ppetundidest.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Alates GitLab.com loomise algusest t\u00f6\u00f6tasid selle serverid pilves virtuaalmasinatel. Nende virtuaalmasinate haldamine toimub Chef'i kaudu ning nende paigaldamine toimub meie <noindex><a rel=\"nofollow\" href=\"https:\/\/about.gitlab.com\/install\/#ubuntu\">ametlikku Linux-paketti<\/a><\/noindex>. <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/gitlab-org\/release\/docs\/-\/blob\/master\/general\/deploy\/gitlab-com-deployer.md\">Rakendamise strateegia<\/a><\/noindex> juhul, kui rakendust tuleb uuendada, seisneb see serverite pargi lihtsas uuendamises koosk\u00f5lastatud j\u00e4rjestikku CI-toru kaudu. See meetod \u2014 kuigi aeglane ja natuke <noindex><a rel=\"nofollow\" href=\"https:\/\/about.gitlab.com\/handbook\/values\/#boring-solutions\">igav<\/a><\/noindex> \u2014 tagab, et GitLab.com rakendab samu installimise ja konfigureerimise meetodeid nagu iseseisvad <i>(iseseisvalt hallatavad)<\/i> GitLab installatsioonid, kasutades meie Linuxi pakette.<\/p>\n<p>Kasutame seda meetodit, sest on \u00e4\u00e4rmiselt oluline kogeda k\u00f5iki nende h\u00e4dasid ja r\u00f5\u00f5me, millega kogukonna liikmed seisavad silmitsi oma GitLabi koopiate installimise ja seadistamise ajal. See l\u00e4henemine on m\u00f5nda aega h\u00e4sti toiminud, kuid kui GitLabis olevate projektide arv \u00fcletas 10 miljonit, m\u00f5istsime, et see ei rahulda enam meie skaleerimise ja juurutamise vajadusi.<\/p>\n<h2>Esimese sammu tegemine Kubernetesesse ja pilvep\u00f5hisesse GitLabi<\/h2>\n<p>\n2017. aastal loodi projekt <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/gitlab-org\/charts\">GitLab Charts<\/a><\/noindex> et GitLabi valmistamiseks pilve juurutamiseks ning kasutajatele GitLabi Kubernetes klastritesse installimise v\u00f5imaldamiseks. Toona teadsime, et GitLabi viimine Kubernetesesse suurendab SaaS-platvormi skaleeritavust, lihtsustab juurutusi ja parandab arvutusressursside t\u00f5hususe kasutamist. Samal ajal s\u00f5ltusid meie rakenduse paljud funktsioonid mountitud NFS-osadest, mis aeglustas \u00fcleminekut virtuaalmasinatelt.<\/p>\n<p>Soov cloud native'i ja Kubernetes'e suunas on v\u00f5imaldanud meie inseneridel planeerida j\u00e4rkj\u00e4rgulist \u00fcleminekut, mille k\u00e4igus loobusime m\u00f5nest rakenduse s\u00f5ltuvusest v\u00f5rgu salvestustest, samal ajal arendades uusi funktsioone. Alates sellest, kui me hakkasime migratsiooni planeerima suvel 2019, on paljud neist piirangutest k\u00f5rvaldatud ja GitLab.com \u00fcleviimine Kubernetesesse on n\u00fc\u00fcd t\u00e4ie hooga k\u00e4imas!<\/p>\n<h2>GitLab.com-i t\u00f6\u00f6 omadused Kuberneteses<\/h2>\n<p>\nGitLab.com jaoks kasutame \u00fchte piirkondlikku GKE-klastrit, mis t\u00f6\u00f6delda kogu rakenduse liiklust. Komplitseerituse (niigi keeruka) v\u00e4hendamiseks keskendume teenustele, mis ei s\u00f5ltu kohalikust salvestusest v\u00f5i NFS-ist. GitLab.com kasutab peamiselt monoliitset Railsi koodibaasi ning suuname liiklust vastavalt t\u00f6\u00f6koormuse omadustele erinevatele l\u00f5pp-punktidele, mis on isoleeritud omaenda s\u00f5lmpoolidesse.<\/p>\n<p>Frontendil jagunevad need t\u00fc\u00fcbid veebip\u00e4ringuteks, API, Git SSH\/HTTPS ja Registry. Backendis jagame t\u00f6\u00f6\u00fclesandeid j\u00e4rjekordades erinevate omaduste p\u00f5hjal, s\u00f5ltuvalt <noindex><a rel=\"nofollow\" href=\"https:\/\/about.gitlab.com\/blog\/2020\/06\/24\/scaling-our-use-of-sidekiq\/\">ettem\u00e4\u00e4ratud ressursipiiridest<\/a><\/noindex>, mis v\u00f5imaldab meil kehtestada erinevate koormuste teenustaseme eesm\u00e4rke (Service-Level Objectives, SLO-d).<\/p>\n<p>K\u00f5ik need GitLab.com teenused on seadistatud modifitseerimata GitLab Helm-i graafiku abil. Konfiguratsioon toimub alamgraafikutes, mida saab valida j\u00e4rk-j\u00e4rgult teenuste viimiseks klastrisse. Isegi arvestades, et on otsustatud mitte kaasata migreerimisprotsessi m\u00f5ned meie stateful-teenused, nagu Redis, Postgres, GitLab Pages ja Gitaly, v\u00f5imaldab Kubernetes radikaalselt v\u00e4hendada Chefile hallatavate VM-ide arvu.<\/p>\n<h2>Kubernetes'i l\u00e4bipaistvus ja konfiguratsiooni haldamine<\/h2>\n<p>\nK\u00f5ik seadeid haldab GitLab ise. Selleks kasutatakse kolme Terraformi ja Helmi p\u00f5hist konfiguratsiooniprojekti. P\u00fc\u00fcame igal pool kasutada GitLabi k\u00e4ivitamiseks v\u00f5imalikult palju GitLabi enda, kuid operatiivsete \u00fclesannete jaoks toimib meil eraldi GitLabi installeerimine. See on vajalik, et mitte s\u00f5ltuda GitLab.com-i k\u00e4ttesaadavusest GitLab.com-i juurutuste ja uuenduste teostamisel.<\/p>\n<p>Kuigi meie Kubernetes'i klastri torujuhtmed t\u00f6\u00f6tavad eraldi GitLab'i installatsioonil, on koodirepositoritel peeglid, mis on avalikult k\u00e4ttesaadavad 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 Helm graafiku konfiguratsiooni vahekiht;<\/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 konfektsioone teenustele, mis ei ole otseselt seotud GitLab rakendusega. Nende hulka kuuluvad logimise ja klastrite j\u00e4lgimise konfektsioonid ning integreeritud t\u00f6\u00f6riistade jaoks, nagu PlantUML;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/gitlab-com\/gitlab-com-infrastructure\">Gitlab-com-infrastructure<\/a><\/noindex> \u2014 Terraform konfigureerimine Kubernetes'e ja vana (legacy) VM-infrastruktuuri jaoks. Siin seadistatakse k\u00f5ik ressursid, mis on vajalikud klastrite k\u00e4ivitamiseks, sealhulgas ise klaster, s\u00f5lmede basseinid, teenusekontod ja IP-aadresside varu.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Meie j\u00e4reldused aasta GitLab.com \u00fcleviimisest Kubernetesesse\" 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\u00fchi\u00fclevaade<\/i><\/a><\/noindex><i> viitega \u00fcksikasjalikule diffile, mida SRE anal\u00fc\u00fcsib enne muudatuste tegemist klastris.<\/i><\/p>\n<p>SRE jaoks viib link p\u00f5hjaliku diffini GitLabi installeerimisest, mida kasutatakse operatsioonide jaoks ja millele juurdep\u00e4\u00e4s on piiratud. See v\u00f5imaldab t\u00f6\u00f6tajatel ja kogukonnal, kellel ei ole juurdep\u00e4\u00e4su operatsiooniprojektile (mis on avatud ainult SRE-le), vaadata ettepanekut muudatusteks konfiguratsioonis. \u00dchendades avaliku GitLabi eksemplari koodi jaoks ja privaatse eksemplari CI-pipe-line'ide jaoks, s\u00e4ilitame \u00fchtse t\u00f6\u00f6voo, samal ajal tagades s\u00f5ltumatuse GitLab.com-ist konfiguratsiooni uuenduste korral.<\/p>\n<h2>Mida oleme migratsiooni ajal avastanud<\/h2>\n<p>\nKolimise k\u00e4igus on saadud kogemusi, mida rakendame uutes migratsioonides ja Kubernetes'i kohaletoimetamistes.<\/p>\n<h3>1. Kulude kasv, mis on tingitud liiklusest erinevate k\u00e4ttesaadavuse tsoonide vahel<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Meie j\u00e4reldused aasta GitLab.com \u00fcleviimisest Kubernetesesse\" src=\"\/wp-content\/uploads\/2020\/09\/3dce44b3f803ffcea13e0101e7343d91.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Igap\u00e4eva egress statistika (baidid p\u00e4evas) GitLab.com-i Git-repositooriumide pargi kohta<\/i><\/p>\n<p>Google jagab oma v\u00f5rku piirkondadeks. Need jagunevad omakorda k\u00e4ttesaadavuse tsoonideks (AZ). Git-hosting on seotud suurte andmemahtudega, seega on meil oluline kontrollida v\u00f5rgu egressi. Sisese liikluse puhul on egress tasuta ainult juhul, kui see j\u00e4\u00e4b \u00fche k\u00e4ttesaadavuse tsooni piiridesse. K\u00e4esoleva artikli kirjutamise seisuga anname keskmiselt 100 TB andmeid tavalise t\u00f6\u00f6p\u00e4eva jooksul (ja see on ainult Git-reposiitide jaoks). Teenused, mis meie vanas VM-p\u00f5hises topoloogias asusid sama virtuaalmachine'i peal, t\u00f6\u00f6tavad n\u00fc\u00fcd erinevates Kubernetes'e pod'ides. See t\u00e4hendab, et osa liiklusest, mis varem oli VM-ile kohalik, v\u00f5ib potentsiaalselt \u00fcletada k\u00e4ttesaadavuse tsoonide piire.<\/p>\n<p>Piirkondlikud GKE klastrid v\u00f5imaldavad h\u00f5lmata mitmeid k\u00e4ttesaadavuse tsoone varundamiseks. Me arutame v\u00f5imalust <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/gitlab-com\/gl-infra\/delivery\/-\/issues\/1175\">jagada piirkondlik GKE klaster \u00fchetasandilisteks klastriteks<\/a><\/noindex> teenuste jaoks, mis genereerivad suuri andmemahte. See v\u00e4hendab egressi kulusid samal ajal, kui s\u00e4ilitab klastritasemel varundamist.<\/p>\n<h3>2. Limit'id, ressursside p\u00e4ringud ja skaleerimine<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Meie j\u00e4reldused aasta GitLab.com \u00fcleviimisest Kubernetesesse\" src=\"\/wp-content\/uploads\/2020\/09\/6e2e1ca4d37666b49358d94cd8660c56.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>registry.gitlab.com t\u00f6\u00f6tlemise tootmisliikluse repliikide arv. Liiklus saavutab haripunkti umbes 15:00 UTC.<\/i><\/p>\n<p>Meie migreerimise lugu algas 2019. aasta augustis, mil kandsime esimese teenuse - GitLabi konteineriregistri - Kubernetesesse. See kriitilise t\u00e4htsusega teenus, millel on k\u00f5rge liiklus, sobis esimeseks migreerimiseks, kuna see on stateless-rakendus, millel on v\u00e4he v\u00e4liseid s\u00f5ltuvusi. Esmaseks probleemiks, millega silmitsi seisisime, oli suur hulk v\u00e4lja t\u00f5rjutud pod'e m\u00e4lupuuduse t\u00f5ttu s\u00f5lmedes. Seet\u00f5ttu pidime muutma p\u00e4ringute ja piirangute v\u00e4\u00e4rtusi.<\/p>\n<p>Avastati, et rakenduse puhul, mille m\u00e4lutarve kasvab aja jooksul, toovad madalad v\u00e4\u00e4rtused p\u00e4ringute jaoks (mis reserveerivad m\u00e4lu iga pod'i jaoks) koos \"lahke\" ranged piiranguga kasutamisel viivad uhke ts\u00fckkli kogunemise <i>(k\u00fcllastus)<\/i> s\u00f5lmedes ja k\u00f5rge v\u00e4ljakutsumise tasemeni. Selle probleemi lahendamiseks oli <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/gitlab-com\/gl-infra\/delivery\/-\/issues\/998#note_388983696\">otsustasime suurendada p\u00e4ringute v\u00e4\u00e4rtusi ja v\u00e4hendada piiranguid<\/a><\/noindex>. See vabastas s\u00f5lmedelt survet ja tagas pod'ide eluts\u00fckli, mis ei avaldanud s\u00f5lmele liiga suurt survet. N\u00fc\u00fcd alustame migreerimist lahke (ja peaaegu \u00fchesuguste) p\u00e4ringute ja piirangute v\u00e4\u00e4rtustega, kohandades neid vajadusel.<\/p>\n<h3>3. M\u00f5\u00f5dikud ja logid<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Meie j\u00e4reldused aasta GitLab.com \u00fcleviimisest Kubernetesesse\" src=\"\/wp-content\/uploads\/2020\/09\/66d1fd47b57d5826f13defa6e6a7fe3c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Infrastruktuuri\u00fcksus keskendub viivitustele, vigade protsentidele ja k\u00fcllastusele seatud <\/i><noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Service-level_objective\"><i>teenuse taseme eesm\u00e4rkide<\/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 on infrastruktuuri\u00fcksuse \u00fcheks p\u00f5his\u00fcndmuseks olnud parendused SLO j\u00e4lgimisel ja haldamisel. SLO on v\u00f5imaldanud meil seada eesm\u00e4rke erinevatele teenustele, mida me j\u00e4lgisime migratsiooni ajal. Kuid isegi t\u00e4iustatud j\u00e4lgimise korral ei ole alati v\u00f5imalik kohe probleemide avastamine, kasutades m\u00f5\u00f5dikuid ja hoiatusteateid. N\u00e4iteks keskendudes viivitusele ja vigade protsentidele, ei kata me k\u00f5iki teenuse kasutamise stsenaariume, mis k\u00e4ivad migratsiooni l\u00e4bi.<\/p>\n<p>See probleem avastati peaaegu kohe p\u00e4rast osade koormate \u00fcleviimist klastrisse. Eriti teravalt tuli see esile, kui tuli kontrollida funktsioone, mille p\u00e4ringute arv pole suur, kuid millel on v\u00e4ga spetsiifilised konfiguratsioonilised s\u00f5ltuvused. \u00dcks peamisi j\u00e4reldusi migratsiooni tulemustest oli vajadus j\u00e4lgimise k\u00e4igus arvesse v\u00f5tta mitte ainult m\u00f5\u00f5dikuid, vaid ka logisid ja \"pikka saba\". <i>(r\u00e4\u00e4kides <\/i><noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Long_tail\"><i>sellest jaotumisest<\/i><\/a><\/noindex><i> diagrammil \u2014 t\u00f5lkija m\u00e4rkus.)<\/i> vigu. N\u00fc\u00fcd sisaldame iga migratsiooni jaoks detailset logip\u00e4ringute loetelu <i>(log queries)<\/i> ja plaanime selged tagasikerimise protseduurid, mida probleemide korral saame vahetada \u00fcksteise vahetusprotsessis.<\/p>\n<p>Sama p\u00e4ringute paralleelne teenindamine vanas VM-infrastruktuuris ja uues, Kubernetesel p\u00f5hinevas, oli ainulaadne \u00fclesanne. Erinevalt lift-and-shift t\u00fc\u00fcpi migratsioonist <i>(rakenduste kiire \u00fcleviimine \"nagu on\" uude infrastruktuuri; rohkem teavet leiate n\u00e4iteks <\/i><noindex><a rel=\"nofollow\" href=\"https:\/\/www.ibm.com\/cloud\/learn\/lift-and-shift\"><i>siit<\/i><\/a><\/noindex><i> \u2014 kt. t\u00f5lge)<\/i>, paralleelse t\u00f6\u00f6 \u201evanade\u201d VM-ide ja Kubernetesega n\u00f5uab, et j\u00e4lgimist\u00f6\u00f6riistad oleksid m\u00f5lema keskkonnaga \u00fchilduvad ja suudaksid m\u00f5\u00f5dikud \u00fcheks vaateks kokku tuua. Oluline on, et kasutame samu armatuurlauasid ja logik\u00fcsimusi, et tagada j\u00e4rjepidev n\u00e4htavus \u00fcleminekuperioodil.<\/p>\n<h3>4. Liiklus 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\">kanarietapi (canary) jaoks<\/a><\/noindex>. Kanaripark toetab meie sisemisi projekte ja v\u00f5ib <noindex><a rel=\"nofollow\" href=\"https:\/\/next.gitlab.com\/\">kasutajate poolt aktiveerida<\/a><\/noindex>. Kuid esmajoones on see m\u00f5eldud infrastruktuurile ja rakendusele tehtud muudatuste testimiseks. Esimene \u00fcle viidud teenus hakkas vastu v\u00f5tma piiratud hulga sisemist liiklust ning j\u00e4tkame selle meetodi kasutamist, et veenduda SLO t\u00e4itmises enne, kui suuname kogu liikluse klasstrisse.<\/p>\n<p>Migratsiooni korral t\u00e4hendab see, et Kubernetes suunab alguses p\u00e4ringud sises\u00fcsteemide poole ja seej\u00e4rel suuname j\u00e4rk-j\u00e4rgult \u00fclej\u00e4\u00e4nud liikluse klastrisse, muutes HAProxy kaudu tagapaneeli kaalu. VM-ilt Kubernetes'ile \u00fclemineku k\u00e4igus sai selgeks, et on kasulik omada lihtsat viisi liikluse suunamiseks vana ja uue infrastruktuuri vahel, hoides samas vana infrastruktuuri varuks m\u00f5neks p\u00e4evaks p\u00e4rast migreerimist.<\/p>\n<h3>5. Pod'ide reservkapatsiteet ja nende kasutamine<\/h3>\n<p>\nPeaaegu kohe ilmnes j\u00e4rgmine probleem: Registry teenuse pod'id k\u00e4ivitusid kiiresti, kuid Sidekiqi pod'ide k\u00e4ivitamine kestis kuni <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/gitlab-org\/charts\/gitlab\/-\/issues\/1775\">kahe minuti<\/a><\/noindex>. Sidekiqi pod'ide pikem k\u00e4ivitamine muutus probleemiks, kui hakkasime migreerima Kubernetesesse t\u00f6\u00f6koormusi t\u00f6\u00f6tajate jaoks, kes peavad kiiresti t\u00f6\u00f6tlema t\u00f6\u00f6\u00fclesandeid ja kiiresti skaleeruma.<\/p>\n<p>Sel juhul seisnes \u00f5ppetund selles, et kuigi Horizontal Pod Autoscaler (HPA) Kuberneteses suudab liikluse kasvuga h\u00e4sti toime tulla, on oluline arvesse v\u00f5tta koormuse omadusi ja eraldada varuressursse pod'ide jaoks (eriti eba\u00fchtlase n\u00f5udluse korral). Meie puhul ilmnes \u00e4kiline t\u00f6\u00f6de t\u00f5us, mis t\u00f5i kaasa kiire skaleerimise, mis viis CPU ressursside k\u00fcllastumiseni enne, kui me j\u00f5udsime s\u00f5lmede hulka skaleerida.<\/p>\n<p>Alati on kiusatus klastrist maksimumi v\u00f5tta, kuid alguses, kui seisisime silmitsi j\u00f5udlusprobleemidega, alustame n\u00fc\u00fcd helde pod-eelarvega ja v\u00e4hendame seda hiljem, j\u00e4lgides hoolikalt SLO-d. Pod'ide k\u00e4ivitamine Sidekiqi teenuse jaoks on m\u00e4rgatavalt kiirenenenud ja n\u00fc\u00fcd kestab see keskmiselt umbes 40 sekundit. <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/gitlab-org\/charts\/gitlab\/-\/issues\/1775\">Pod'ide k\u00e4ivitamise aja v\u00e4hendamine<\/a><\/noindex> kasu on saanud nii GitLab.com kui ka meie iseseisvalt hallatavate paigalduste kasutajad, kes t\u00f6\u00f6tavad GitLabi ametliku Helm-chartiga.<\/p>\n<h2>Kokkuv\u00f5te<\/h2>\n<p>\nIga teenuse migreerimise j\u00e4rel nautisime Kubernetes'i kasutamise eeliseid tootmises: rakenduste kiiremat ja turvalisemat juurutamist, skaleerimist ja t\u00f5husamat ressursside jaotamist. Samuti ulatuvad migreerimise eelised kaugemale GitLab.com teenusest. Iga ametliku Helm-diagrammi t\u00e4iustuse kasu saavad ka selle kasutajad.<\/p>\n<p>Loodan, et teile meeldis meie seikluslugu Kubernetes'e migreerimise kohta. J\u00e4tkame uute teenuste \u00fcleviimist klastrisse. Lisainfot leiate j\u00e4rgmistest publikatsioonidest:<\/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'ile?<\/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'e peal<\/a><\/noindex>\u00bb;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/groups\/gitlab-com\/gl-infra\/-\/epics\/112\">GitLab.com migreerimise epik Kubernetes'i peale<\/a><\/noindex>.<\/li>\n<\/ul>\n<p><\/p>\n<h2>P.S. t\u00f5lkija m\u00e4rkused<\/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'it tootmises: siin on, mida me oleme \u00f5ppinud<\/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 Kuberneteset kasutades<\/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 Kubernetesesse<\/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.0.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.0.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\udd47Meie j\u00e4reldused aasta jooksul GitLab.com migreerimisest Kubernetes'ile | ProHoster","description":"M\u00e4rkus: Kubernetes'i kohandamist GitLabis peetakse \u00fcheks kahest peamisest tegurist, mis aitavad ettev\u00f5ttel kasvada.","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}]}}