Zvatakawana kubva pagore rekutama GitLab.com kuenda Kubernetes

Cherechedza. transl.: Kubernetes kutorwa kuGitLab kunoonekwa sechimwe chezvinhu zviviri zvakakosha zvinopa kukura kwekambani. Nekudaro, kusvika nguva pfupi yadarika, zvivakwa zveGitLab.com online sevhisi yakavakirwa pamakina chaiwo, uye ingangoita gore rapfuura kutama kwayo kuenda kuK8s kwakatanga, iyo isati yapera. Isu tinofara kuunza dudziro yechinyorwa chazvino naGitLab SRE mainjiniya nezve kuti izvi zvinoitika sei uye mhedziso dzipi dzinoitwa nemainjiniya ari kutora chikamu muchirongwa ichi.

Zvatakawana kubva pagore rekutama GitLab.com kuenda Kubernetes

Kwerinenge gore ikozvino, chikamu chedu chezvivakwa chave kutamisa masevhisi ese ari kushanda paGitLab.com kuenda Kubernetes. Munguva ino, takasangana nematambudziko ane chekuita kwete chete nekufambisa masevhisi kuKubernetes, asiwo kutonga kutumirwa kwehybrid panguva yeshanduko. Zvidzidzo zvinokosha zvatakadzidza zvichakurukurwa munyaya ino.

Kubva pakutanga kweGitLab.com, maseva ayo akamhanya mugore pamakina chaiwo. Michina iyi chaiyo inotungamirwa naChef uye yakaiswa uchishandisa yedu official Linux package. Deployment strategy kana iyo application ichida kuvandudzwa, inosanganisira kungo gadziridza sevha ngarava nenzira yakarongeka, inoteedzana uchishandisa CI pombi. Iyi nzira - kunyange zvishoma uye zvishoma zvinosetsa - inova nechokwadi chekuti GitLab.com inoshandisa imwechete yekumisikidza uye kugadzirisa maitiro sevashandisi vekunze (self-managed) GitLab kumisikidzwa uchishandisa yedu Linux mapakeji kune izvi.

Isu tinoshandisa nzira iyi nekuti zvakanyanya kukosha kuona zvese kusuwa uye mufaro unowanikwa nenhengo dzenharaunda pakuisa nekugadzirisa makopi avo eGitLab. Iyi nzira yakashanda zvakanaka kwenguva yakati, asi nhamba yemapurojekiti paGitLab payakapfuura miriyoni gumi, takaona kuti yakanga isisazadzise zvatinoda pakukura nekuendesa.

Matanho ekutanga kuKubernetes uye gore-yekuzvarwa GitLab

Iyo purojekiti yakagadzirwa muna 2017 GitLab Charts kugadzirira GitLab yekuendesa makore, uye kugonesa vashandisi kuisa GitLab paKubernetes masumbu. Isu takaziva ipapo kuti kufambisa GitLab kuenda Kubernetes kwaizowedzera scalability yeSaaS papuratifomu, kurerutsa kutumira, uye kunatsiridza mashandiro emakomputa zviwanikwa. Panguva imwecheteyo, mazhinji emabasa echishandiso chedu aienderana neakakwidzwa zvikamu zveNFS, izvo zvakaderedza shanduko kubva kumashini chaiwo.

Kusundira kwakananga kumakore ekuzvarwa uye Kubernetes kwakabvumira mainjiniya edu kuronga shanduko zvishoma nezvishoma, panguva iyo isu takasiya zvimwe zvekutsamira kwechishandiso pakuchengetedza network tichienderera mberi nekugadzira zvinhu zvitsva. Kubva patakatanga kuronga kutama muzhizha ra2019, zvizhinji zvezvipimo izvi zvakagadziriswa, uye maitiro ekutamisa GitLab.com kuenda Kubernetes ave kutoenderera mberi!

Zvimiro zveGitLab.com muKubernetes

YeGitLab.com, isu tinoshandisa imwechete yedunhu GKE cluster inobata yese traffic traffic. Kuti tideredze kuomarara kweiyo (yatova tricky) kutama, tinotarisa pane masevhisi asingavimbi nekuchengetedza kwenzvimbo kana NFS. GitLab.com inoshandisa inonyanya kuve monolithic Rails codebase, uye isu tinofambisa traffic zvichibva pakuremerwa kwebasa kune akasiyana magumo ayo akaparadzaniswa mumadziva avo ega.

Panyaya yekumberi, mhando idzi dzakakamurwa kuita zvikumbiro kuwebhu, API, Git SSH/HTTPS uye Registry. Panyaya yekumashure, tinoparadzanisa mabasa mumutsara zvichienderana nemhando dzakasiyana zvichienderana predefined resource miganhu, iyo inotibvumira kuisa Zvinangwa zveSevhisi-Level (SLOs) yemabasa akasiyana-siyana.

Ese aya maGitLab.com masevhisi akagadziridzwa uchishandisa isina kuchinjwa GitLab Helm chati. Kugadzirisa kunoitwa mune subcharts, iyo inogona kugoneswa kugoneswa sezvo isu zvishoma nezvishoma tichitama masevhisi kune sumbu. Kunyangwe isu takasarudza kusabatanidza mamwe masevhisi edu ane hunyanzvi mukutama, seRedis, Postgres, GitLab Mapeji uye Gitaly, kushandisa Kubernetes kunotibvumira kudzikisa zvakanyanya huwandu hweVMs idzo Chef anotonga parizvino.

Kubernetes Configuration Kuonekwa uye Management

Zvese zvigadziriso zvinotungamirwa neGitLab pachayo. Kune izvi, matatu ekugadzirisa mapurojekiti anobva paTerraform neHelm anoshandiswa. Isu tinoedza kushandisa GitLab pachayo pese pazvinogoneka kumhanya GitLab, asi kune ekushanda mabasa tine yakaparadzana GitLab yekumisikidza. Izvi zvinodikanwa kuti uve nechokwadi chekuti hausi kuvimba nekuwanikwa kweGitLab.com paunenge uchiita GitLab.com deployments uye zvigadziriso.

Kunyangwe mapaipi edu eKubernetes cluster achimhanya pane imwe GitLab yekumisikidza, kune magirazi ekodhi repositories anowanikwa pachena pamakero anotevera:

  • k8s-workloads/gitlab-com - GitLab.com gadziriro yegadziriro yeGitLab Helm chati;
  • k8s-workloads/gitlab-helmfiles -Ine zvigadziriso zvemasevhisi asina hukama zvakananga neGitLab application. Izvi zvinosanganisira zvigadziriso zvekutema matanda uye cluster monitoring, pamwe chete nematurusi akabatanidzwa sePlantUML;
  • Gitlab-com-infrastructure - Terraform kumisikidzwa yeKubernetes uye legacy VM zvivakwa. Pano iwe unogadzirisa zvese zviwanikwa zvinodiwa kuti umhanye sumbu, kusanganisira iyo cluster pachayo, node madziva, masevhisi maakaundi, uye IP kero kuchengetedza.

Zvatakawana kubva pagore rekutama GitLab.com kuenda Kubernetes
Maonero eruzhinji anoratidzwa kana shanduko dzaitwa. pfupiso pfupi ine chinongedzo kune yakadzama diff iyo SRE inoongorora isati yaita shanduko kusumbu.

Kune SRE, chinongedzo chinotungamira kune yakadzama mutsauko mukumisikidzwa kweGitLab, iyo inoshandiswa kugadzira uye kuwana iyo inorambidzwa. Izvi zvinobvumira vashandi uye nharaunda, pasina mukana weiyo purojekiti inoshanda (iyo inongovhurika kune SREs), kuti vaone yakarongwa shanduko yekuchinja. Nekubatanidza yeruzhinji GitLab muenzaniso wekodhi ine yakavanzika muenzaniso yeCI mapaipi, isu tinochengetedza kamwe chete kufambiswa kwebasa tichiona rusununguko kubva kuGitLab.com yekugadzirisa zvigadziriso.

Zvatakawana panguva yekutama

Panguva yekufamba, ruzivo rwakawanikwa rwekuti tinoshandisa kune kutama kutsva uye kutumirwa muKubernetes.

1. Kuwedzera mari nekuda kwetraffic pakati penzvimbo dzinowanikwa

Zvatakawana kubva pagore rekutama GitLab.com kuenda Kubernetes
Mazuva ese egress statistics (bytes pazuva) yeGit repository zvikepe paGitLab.com

Google inokamura network yayo kuita matunhu. Izvowo, zvakakamurwa munzvimbo dzekusvikika (AZ). Git hosting inosanganiswa nehuwandu hwe data, saka zvakakosha kuti isu tidzore network egress. Kune traffic yemukati, egress ndeyemahara chete kana ikaramba iri mukati meiyo imwe nzvimbo inowanikwa. Nezvekunyora uku, tiri kushandira ingangoita zana TB yedata muzuva rekushanda rakajairwa (uye ndezveGit repositories chete). Masevhisi aigara mumakina akafanana mune yedu yekare VM-based topology ikozvino inomhanya mune akasiyana Kubernetes pods. Izvi zvinoreva kuti imwe traffic yaimbove yemuno kuenda kuVM yaigona kufamba kunze kwenzvimbo dziripo.

Dunhu GKE masumbu anotendera iwe kuti utore akawanda Availability Zone kuti uwedzere. Tiri kufunga zvingangoitika patsanura boka redunhu reGKE kuita masumbu enzvimbo imwe chete zvemasevhisi anounza huwandu hukuru hwetraffic. Izvi zvinoderedza egress mutengo uchichengetedza cluster-level redundancy.

2. Miganhu, zvikumbiro zvekushandisa uye kuwedzera

Zvatakawana kubva pagore rekutama GitLab.com kuenda Kubernetes
Huwandu hwema replicas ekugadziridza kugadzira traffic pane registry.gitlab.com. Traffic inokwira kusvika ~15:00 UTC.

Nyaya yedu yekutama yakatanga muna Nyamavhuvhu 2019, patakatama sevhisi yedu yekutanga, GitLab Container Registry, kuenda Kubernetes. Iyi mission-yakakosha, ye-high-traffic sevhisi yaive sarudzo yakanaka yekutanga kutama nekuti iapplication isingaverengeki ine vashoma vanotsamira kunze. Dambudziko rekutanga ratakasangana nenhamba huru yemapods akadzingwa nekuda kwekushaya ndangariro pamanodhi. Nekuda kweizvi, taifanira kuchinja zvikumbiro nemiganhu.

Zvakaonekwa kuti kana iri application iyo ndangariro inowedzera nekufamba kwenguva, yakaderera kukosha kwezvikumbiro (kuchengetedza ndangariro kune yega yega pod) pamwe ne "rupo" muganho wakaoma wekushandiswa unotungamira mukuzara. (kuzara) node uye mwero wepamusoro wekudzingwa. Kugadzirisa dambudziko iri, zvaive zvakasarudzwa kuwedzera zvikumbiro uye kuderedza miganhu. Izvi zvakatora kudzvanywa kubva pamanodhi uye kuve nechokwadi chekuti mapodhi aive nehupenyu hwaisaisa yakawandisa kudzvanywa pane node. Zvino isu tinotanga kutama nerupo (uye zvakada kufanana) chikumbiro uye kudzikamisa tsika, tichizvigadzirisa sezvinodiwa.

3. Metrics uye matanda

Zvatakawana kubva pagore rekutama GitLab.com kuenda Kubernetes
Chikamu chezvivakwa chinotarisa pane latency, kukanganisa mitengo uye saturation ine yakaiswa zvinangwa zvenhanho yebasa (SLO) yakabatana ne kuwanikwa kwese kwehurongwa hwedu.

Mugore rapfuura, chimwe chezviitiko zvakakosha muchikamu chezvivakwa chave kuvandudzwa mukutarisisa nekushanda nemaSLO. MaSLO akatibvumira kumisa zvinangwa zvemasevhisi ega ega atakanyatso tarisisa panguva yekutama. Asi kunyangwe nekuonekwa uku kwakavandudzwa, hazviitike nguva dzose kuona matambudziko nekukasira uchishandisa metrics uye chenjedzo. Semuenzaniso, nekutarisa pane latency uye kukanganisa mitengo, isu hativharise zvizere nyaya dzese dzekushandisa sevhisi iri kutama.

Iyi nyaya yakawanikwa pakarepo mushure mekutamisa mamwe mabasa kuenda kusumbu. Yakave yakanyanya kuoma pataifanira kutarisa mabasa ayo huwandu hwezvikumbiro hwaive hudiki, asi hwaive hwakanyanya hunhu hwekumisikidza. Chimwe chezvidzidzo zvakakosha kubva pakutama kwaive kudiwa kwekutarisa kwete metrics chete kana uchitarisa, asiwo matanda uye "muswe wakareba" (izvi ndezve vakadaro kugovewa kwavo pane chati - approx. transl.) kukanganisa. Ikozvino pakutama kwega kwega isu tinosanganisira rondedzero yakadzama yemibvunzo yelogi (log mibvunzo) uye ronga nzira dzakajeka dzekudzosera dzinogona kutamiswa kubva kune imwe shanduko kuenda kune inotevera kana matambudziko amuka.

Kushandira zvikumbiro zvakafanana nenzira yakafanana pane yekare VM zvivakwa uye itsva Kubernetes-yakavakirwa zvivakwa zvakapa dambudziko rakasiyana. Kusiyana nekusimudza-uye-kuchinja kutama (kukurumidza kuendeswa kwezvikumbiro "sezvazviri" kune nyowani nyowani; zvimwe zvakawanda zvinogona kuverengwa, semuenzaniso, pano - approx. transl.), basa rakafanana paVMs "yekare" uye Kubernetes rinoda kuti maturusi ekutarisa aenderane nenzvimbo mbiri uye akwanise kusanganisa mametrics kuita maonero mamwe. Zvakakosha kuti tishandise madhibhodhi mamwe chete uye mibvunzo yelogi kuti tiwane kucherechedzwa kunoenderana panguva yekuchinja.

4. Kushandura traffic kune itsva cluster

YeGitLab.com, chikamu chemaseva chakatsaurirwa kune canary stage. Canary Park inoshandira mapurojekiti edu emukati uye inogona zvakare inogoneswa nevashandisi. Asi inonyanya kugadzirirwa kuyedza shanduko dzakaitwa kune zvivakwa uye mashandisiro. Basa rekutanga rakatamiswa rakatanga nekugamuchira huwandu hushoma hwetraffic yemukati, uye isu tinoramba tichishandisa nzira iyi kuona kuti maSLO asangana tisati tatumira traffic yese kune cluster.

Panyaya yekutama, izvi zvinoreva kuti zvikumbiro kumapurojekiti emukati zvinotumirwa kuKubernetes kutanga, uye isu tinobva tachinja zvishoma nezvishoma iyo yese traffic kune cluster nekuchinja huremu hwebackend kuburikidza neHAProxy. Munguva yekutama kubva kuVM kuenda kuKubernetes, zvakava pachena kuti zvaive zvakanakira kuve nenzira iri nyore yekudzoreredza traffic pakati pechinyakare uye chitsva zvivakovheni uye, maererano naizvozvo, chengetedza zvivakwa zvekare zvakagadzirira kudzoreredzwa mumazuva mashoma ekutanga mushure mekutama.

5. Chengetedza masimba emapodhi uye kushandiswa kwawo

Nenguva isipi dambudziko rinotevera rakaonekwa: mapodhi eRegistry service akatanga nekukurumidza, asi kutangisa mapodhi eSidekiq kwakatora kusvika. maminitsi maviri. Nguva yakareba yekutanga yeSidekiq pods yakava dambudziko patakatanga kutamisa mitoro yebasa kuKubernetes yevashandi vaifanira kugadzirisa mabasa nekukurumidza uye nekukasira.

Muchiitiko ichi, chidzidzo chaive chekuti nepo Kubernetes 'Horizontal Pod Autoscaler (HPA) inobata kukura kwetraffic zvakanaka, zvakakosha kuti titarise hunhu hwehuwandu hwebasa uye nekugovanisa simba rekuchengetedza kune pods (kunyanya kana kudiwa kunenge kugovaniswa zvisina kuenzana). Kwatiri, kwakave nekukasira kuwedzera kwemabasa, zvichitungamira kukurumidza kukwira, izvo zvakatungamira mukuzara kweCPU zviwanikwa tisati tave nenguva yekuyera node dziva.

Pane nguva dzose muedzo wekusvina zvakanyanya sezvinobvira kubva musumbu, zvisinei, tasangana nematambudziko ekuita, isu tava kutanga neine rupo pod bhajeti uye kuideredza gare gare, tichichengeta ziso repaSLOs. Kutangisa mapodhi eiyo Sidekiq sevhisi yakawedzera zvakanyanya uye ikozvino inotora anenge 40 masekondi paavhareji. Kubva pakuderedza nguva yekutanga yepods akahwina ese ari maviri GitLab.com uye vashandisi vedu vega vakazvigadzirisa vachishanda neiyo yepamutemo GitLab Helm chati.

mhedziso

Mushure mekutama sevhisi yega yega, takafara nemabhenefiti ekushandisa Kubernetes mukugadzira: nekukurumidza uye kwakachengeteka kutumira kwekushandisa, kuyera, uye kugovanisa zviwanikwa zvekushandisa. Zvakare, zvakanakira kutama zvinoenda kupfuura iyo GitLab.com sevhisi. Kuvandudza kwese kune iyo yepamutemo Helm chati inobatsira vashandisi vayo.

Ndinovimba wakanakidzwa nenyaya yeKubernetes migration adventures. Isu tinoenderera mberi nekutamisa masevhisi ese matsva kune cluster. Rumwe ruzivo runogona kuwanikwa muzvinyorwa zvinotevera:

PS kubva kumushanduri

Verenga zvakare pablog yedu:

Source: www.habr.com

Voeg