Hi kollha! Jisimni Pavel Agaletsky. Naħdem bħala team lead f'tim li jiżviluppa s-sistema ta' konsenja Lamoda. Fl-2018, tkellimt fil-konferenza HighLoad++, u llum nixtieq nippreżenta traskrizzjoni tar-rapport tiegħi.
Is-suġġett tiegħi huwa ddedikat għall-esperjenza tal-kumpanija tagħna fl-iskjerament ta 'sistemi u servizzi f'ambjenti differenti. Nibdew minn żminijiet preistoriċi tagħna, meta skjerajna s-sistemi kollha f'servers virtwali ordinarji, u spiċċajna bit-tranżizzjoni gradwali minn Nomad għall-iskjerament f'Kubernetes. Jien ngħidlek għaliex għamilna u x'problemi kellna fil-proċess.
L-iskjerament ta' applikazzjonijiet għal VM
Nibdew bil-fatt li 3 snin ilu s-sistemi u s-servizzi kollha tal-kumpanija ġew skjerati fuq servers virtwali regolari. Teknikament, kien organizzat b'tali mod li l-kodiċi kollu għas-sistemi tagħna kien maħżun u mmuntat bl-użu ta 'għodod awtomatiċi ta' assemblaġġ, bl-użu ta 'jenkins. Bl-użu ta 'Ansible, ġie mxerred mis-sistema ta' kontroll tal-verżjoni tagħna għal servers virtwali. Barra minn hekk, kull sistema li kellha l-kumpanija tagħna ġiet skjerata għal mill-inqas 2 servers: wieħed minnhom fuq ir-ras, it-tieni fuq id-denb. Dawn iż-żewġ sistemi kienu assolutament identiċi għal xulxin fis-settings kollha tagħhom, qawwa, konfigurazzjoni, eċċ. L-unika differenza bejniethom kienet li ras irċieva traffiku tal-utent, filwaqt li denb qatt ma rċieva traffiku tal-utent.
Għaliex sar dan?
Meta skjerajna rilaxxi ġodda tal-applikazzjoni tagħna, ridna niżguraw tnedija bla xkiel, jiġifieri, mingħajr konsegwenzi notevoli għall-utenti. Dan inkiseb minħabba l-fatt li r-rilaxx ikkumpilat li jmiss bl-użu ta 'Ansible ġie rolled out to tail. Hemmhekk, in-nies li kienu involuti fl-iskjerament setgħu jiċċekkjaw u jiżguraw li kollox kien tajjeb: il-metriċi, it-taqsimiet u l-applikazzjonijiet kollha kienu qed jaħdmu; jitnedew l-iskripts meħtieġa. Biss wara li kienu konvinti li kollox kien ok, it-traffiku inbidel. Hija bdiet tmur għas-server li qabel kien denb. U dik li qabel kienet ir-ras baqgħet mingħajr traffiku tal-utent, filwaqt li xorta kellha l-verżjoni preċedenti tal-applikazzjoni tagħna fuqha.
Allura kien bla xkiel għall-utenti. Minħabba li l-bidla hija istantanja, peress li sempliċement qed taqleb il-balancer. Tista 'faċilment terġa' lura għall-verżjoni preċedenti billi sempliċement taqleb il-balancer lura. Nistgħu wkoll nivverifikaw li l-applikazzjoni kienet kapaċi tipproduċi anki qabel ma rċeviet it-traffiku tal-utent, li kien pjuttost konvenjenti.
X’vantaġġi rajna f’dan kollu?
- L-ewwelnett, huwa biżżejjed jaħdem biss. Kulħadd jifhem kif taħdem skema ta 'skjerament bħal din, minħabba li ħafna nies qatt skjerati għal servers virtwali regolari.
- Dan huwa biżżejjed b'mod affidabbli, peress li t-teknoloġija tal-iskjerament hija sempliċi, ittestjata minn eluf ta 'kumpaniji. Miljuni ta 'servers huma skjerati b'dan il-mod. Huwa diffiċli li tkisser xi ħaġa.
- U finalment nistgħu niksbu skjeramenti atomiċi. Skjeramenti li jseħħu fl-istess ħin għall-utenti, mingħajr stadju notevoli ta 'bidla bejn il-verżjoni l-antika u l-ġdida.
Imma rajna wkoll diversi nuqqasijiet f’dan kollu:
- Minbarra l-ambjent tal-produzzjoni, l-ambjent tal-iżvilupp, hemm ambjenti oħra. Per eżempju, qa u preproduzzjoni. Dak iż-żmien kellna ħafna servers u madwar 60 servizz. Għal din ir-raġuni kien meħtieġ għal kull servizz, żomm l-aħħar verżjoni għaliha magna virtwali. Barra minn hekk, jekk trid taġġorna libreriji jew tinstalla dipendenzi ġodda, trid tagħmel dan fl-ambjenti kollha. Int meħtieġa wkoll tissinkronizza l-ħin meta tkun se tuża l-verżjoni l-ġdida li jmiss tal-applikazzjoni tiegħek mal-ħin meta devops iwettaq is-settings ambjentali meħtieġa. F'dan il-każ, huwa faċli li tidħol f'sitwazzjoni fejn l-ambjent tagħna jkun kemmxejn differenti fl-ambjenti kollha f'daqqa. Pereżempju, f'ambjent ta 'QA se jkun hemm xi verżjonijiet ta' libreriji, u f'ambjent ta 'produzzjoni se jkun hemm oħrajn, li jwasslu għal problemi.
- Diffikultà fl-aġġornament tad-dipendenzi l-applikazzjoni tiegħek. Jiddependi mhux minnek, imma mit-tim l-ieħor. Jiġifieri, mit-tim devops li jżomm is-servers. Int trid tagħtihom kompitu xieraq u deskrizzjoni ta 'dak li trid tagħmel.
- Dak iż-żmien, ridna wkoll naqsmu l-monoliti kbar kbar li kellna f’servizzi żgħar separati, peress li fhimna li se jkun hemm aktar u aktar minnhom. Dak iż-żmien, diġà kellna aktar minn 100. Għal kull servizz ġdid, kien meħtieġ li tinħoloq magna virtwali ġdida separata, li kellha wkoll tinżamm u tiġi skjerata. Barra minn hekk, għandek bżonn mhux karozza waħda, iżda mill-inqas tnejn. Ma’ dan kollu hemm l-ambjent tal-QA. Dan jikkawża problemi u jagħmilha aktar diffiċli għalik biex tibni u tħaddem sistemi ġodda. proċess kumpless, għali u twil.
Għalhekk, iddeċidejna li jkun aktar konvenjenti li nimxu mill-iskjerament ta 'magni virtwali regolari għall-iskjerament tal-applikazzjonijiet tagħna f'kontenitur docker. Jekk għandek docker, għandek bżonn sistema li tista' tħaddem l-applikazzjoni fi cluster, peress li ma tistax tgħolli kontenitur biss. Normalment trid iżżomm kont ta 'kemm kontenituri jittellgħu sabiex jerfgħu awtomatikament. Għal din ir-raġuni, kellna bżonn nagħżlu sistema ta 'kontroll.
Ħsibna għal żmien twil dwar liema waħda nistgħu nieħdu. Il-fatt hu li dak iż-żmien dan il-munzell tal-iskjerament fuq servers virtwali regolari kien kemmxejn skadut, peress li ma kellhomx l-aħħar verżjonijiet tas-sistemi operattivi. F'xi punt, kien hemm saħansitra FreeBSD, li ma tantx kien konvenjenti biex jiġi appoġġjat. Aħna fhimna li kellna bżonn nimmigraw lejn docker kemm jista 'jkun malajr. Id-devops tagħna ħarsu lejn l-esperjenza eżistenti tagħhom b'soluzzjonijiet differenti u għażlu sistema bħal Nomad.
Aqleb għal Nomad
Nomad huwa prodott ta 'HashiCorp. Huma magħrufa wkoll għas-soluzzjonijiet l-oħra tagħhom:
"Konslu" hija għodda għall-iskoperta tas-servizz.
"Terraform" - sistema għall-ġestjoni tas-servers li tippermettilek tikkonfigurahom permezz tal-konfigurazzjoni, l-hekk imsejħa infrastructure-as-a-code.
"Vagrant" jippermettilek li tuża magni virtwali lokalment jew fis-sħab permezz ta 'fajls ta' konfigurazzjoni speċifiċi.
Nomad dak iż-żmien dehret soluzzjoni pjuttost sempliċi li tista 'tinbidel malajr mingħajr ma tinbidel l-infrastruttura kollha. Barra minn hekk, huwa pjuttost faċli li titgħallem. Huwa għalhekk li għażilna bħala s-sistema ta 'filtrazzjoni għall-kontenitur tagħna.
X'għandek bżonn biex tuża s-sistema tiegħek għal Nomad?
- L-ewwelnett għandek bżonn immaġni docker l-applikazzjoni tiegħek. Għandek bżonn tibniha u poġġiha fir-repożitorju tal-immaġni docker. Fil-każ tagħna, din hija artifactory - sistema li tippermettilek li timbotta diversi artifacts ta 'tipi differenti fiha. Jista 'jaħżen arkivji, immaġini docker, pakketti PHP tal-kompożitur, pakketti NPM, eċċ.
- Hemm bżonn ukoll fajl tal-konfigurazzjoni, li se tgħid lil Nomad x', fejn u f'liema kwantità trid tiskjera.
Meta nitkellmu dwar Nomad, juża l-lingwa HCL bħala l-format tal-fajl ta 'informazzjoni tiegħu, li tirrappreżenta Lingwa tal-Konfigurazzjoni HashiCorp. Dan huwa superset ta' Yaml li jippermettilek tiddeskrivi s-servizz tiegħek f'termini Nomad.
Jippermettilek tgħid kemm kontenituri trid tiskjera, minn liema immaġini jgħaddulhom diversi parametri waqt l-iskjerament. Għalhekk, inti tgħaddi dan il-fajl lil Nomad, u tniedi kontenituri fil-produzzjoni skond dan.
Fil-każ tagħna, indunajna li sempliċiment tikteb fajls HCL assolutament identiċi għal kull servizz ma jkunx konvenjenti ħafna, minħabba li hemm ħafna servizzi u xi kultant trid taġġornahom. Jiġri li servizz wieħed jiġi skjerat mhux f'każ wieħed, iżda f'varjetà ta 'oħrajn differenti. Pereżempju, waħda mis-sistemi li għandna fil-produzzjoni għandha aktar minn 100 każ fil-produzzjoni. Jiġru mill-istess immaġini, iżda jvarjaw fl-issettjar tal-konfigurazzjoni u l-fajls tal-konfigurazzjoni.
Għalhekk, iddeċidejna li jkun konvenjenti għalina li naħżnu l-fajls tal-konfigurazzjoni kollha tagħna għall-iskjerament f'repożitorju komuni wieħed. B'dan il-mod kienu viżibbli: kienu faċli biex jinżammu u stajna naraw x'sistemi kellna. Jekk meħtieġ, huwa wkoll faċli li taġġorna jew tibdel xi ħaġa. Iż-żieda ta' sistema ġdida mhijiex diffiċli wkoll - għandek bżonn biss li toħloq fajl ta' konfigurazzjoni ġewwa d-direttorju l-ġdid. Ġewwa fih hemm il-fajls li ġejjin: service.hcl, li fih deskrizzjoni tas-servizz tagħna, u xi fajls env li jippermettu li dan is-servizz stess, li qed jiġi skjerat fil-produzzjoni, jiġi kkonfigurat.
Madankollu, xi wħud mis-sistemi tagħna huma skjerati fil-produzzjoni mhux f'kopja waħda, iżda f'diversi f'daqqa. Għalhekk, iddeċidejna li jkun konvenjenti għalina li naħżnu mhux il-konfigurazzjonijiet fil-forma pura tagħhom, iżda l-forma mudell tagħhom. U għażilna jinja 2. F'dan il-format, aħna naħżnu kemm il-konfigurazzjonijiet tas-servizz innifsu kif ukoll il-fajls env meħtieġa għalih.
Barra minn hekk, poġġejna fir-repożitorju skript ta 'skjerament komuni għall-proġetti kollha, li jippermettilek li tniedi u tuża s-servizz tiegħek fil-produzzjoni, fl-ambjent mixtieq, fil-mira mixtieqa. Fil-każ meta dawwarna l-konfigurazzjoni HCL tagħna f'mudell, allura l-fajl HCL, li qabel kien konfigurazzjoni Nomad regolari, f'dan il-każ beda jidher ftit differenti.
Jiġifieri, biddel xi varjabbli tal-post tal-konfigurazzjoni b'varjabbli mdaħħla li jittieħdu minn fajls env jew sorsi oħra. Barra minn hekk, sirna l-opportunità li niġbru fajls HCL b'mod dinamiku, jiġifieri, nistgħu nużaw mhux biss inserzjonijiet varjabbli ordinarji. Peress li jinja jappoġġja loops u kundizzjonijiet, tista 'wkoll toħloq fajls ta' konfigurazzjoni hemmhekk, li jinbidlu skont fejn eżattament tiskjera l-applikazzjonijiet tiegħek.
Pereżempju, trid tuża s-servizz tiegħek għall-pre-produzzjoni u l-produzzjoni. Ejja ngħidu li fil-pre-produzzjoni ma tridx tħaddem skripts cron, iżda trid biss tara s-servizz fuq dominju separat biex tiżgura li qed jaħdem. Għal kull min juża s-servizz, il-proċess jidher sempliċi ħafna u trasparenti. Kull ma trid tagħmel hu li tesegwixxi l-fajl deploy.sh, speċifika liema servizz trid tuża u għal liema mira. Pereżempju, trid tuża ċerta sistema fir-Russja, il-Belarus jew il-Każakstan. Biex tagħmel dan, sempliċement ibdel wieħed mill-parametri, u jkollok il-fajl ta 'konfigurazzjoni korrett.
Meta s-servizz Nomad ikun diġà skjerat fil-cluster tiegħek, jidher bħal dan.
L-ewwel, għandek bżonn xi tip ta 'balancer barra, li se jirċievi t-traffiku kollu tal-utent. Se taħdem flimkien mal-Konslu u ssir taf minnha fejn, fuq liema node, f'liema indirizz IP jinsab servizz speċifiku li jikkorrispondi għal isem ta 'dominju partikolari. Is-servizzi fil-Konslu jiġu minn Nomad innifsu. Peress li dawn huma prodotti mill-istess kumpanija, huma pjuttost relatati ma 'xulxin. Nistgħu ngħidu li Nomad out of the box jista’ jirreġistra s-servizzi kollha mnedija fiha ġewwa Konslu.
Ladarba l-balancer tat-tagħbija front-end tiegħek ikun jaf lil liema servizz jibgħat it-traffiku, jgħaddih lill-kontenitur xieraq jew kontenituri multipli li jaqblu mal-applikazzjoni tiegħek. Naturalment, huwa wkoll meħtieġ li wieħed jaħseb dwar is-sigurtà. Anke jekk is-servizzi kollha jaħdmu fuq l-istess magni virtwali f'kontenituri, dan normalment jeħtieġ li jiġi evitat aċċess ħieles minn kwalunkwe servizz għal kwalunkwe ieħor. Dan ksibna permezz tas-segmentazzjoni. Kull servizz ġie mniedi fin-netwerk virtwali tiegħu stess, li fuqu ġew preskritti regoli ta' routing u regoli għall-permess/ċaħda tal-aċċess għal sistemi u servizzi oħra. Jistgħu jkunu jinsabu kemm ġewwa dan il-cluster kif ukoll barra minnu. Pereżempju, jekk trid tipprevjeni servizz milli jikkonnettja ma 'database speċifika, dan jista' jsir permezz ta 'segmentazzjoni fil-livell tan-netwerk. Jiġifieri, anki bi żball, ma tistax tikkonnettja aċċidentalment mill-ambjent tat-test mad-database tal-produzzjoni tiegħek.
Kemm swietna t-tranżizzjoni f’termini ta’ riżorsi umani?
It-tranżizzjoni tal-kumpanija kollha għal Nomad ħadet madwar 5-6 xhur. Imxejna fuq bażi ta’ servizz b’servizz, iżda b’pass pjuttost mgħaġġel. Kull tim kellu joħloq il-kontenituri tiegħu għas-servizzi.
Adottajna tali approċċ li kull tim huwa responsabbli għall-immaġini docker tas-sistemi tagħhom b'mod indipendenti. DevOps jipprovdu l-infrastruttura ġenerali meħtieġa għall-iskjerament, jiġifieri appoġġ għall-cluster innifsu, appoġġ għas-sistema CI, eċċ. U dak iż-żmien, kellna aktar minn 60 sistema mċaqalqa lejn Nomad, li ammontaw għal madwar 2 kontenitur.
Devops huwa responsabbli għall-infrastruttura ġenerali ta 'dak kollu relatat mal-iskjerament u s-servers. U kull tim ta 'żvilupp, min-naħa tiegħu, huwa responsabbli għall-implimentazzjoni ta' kontenituri għas-sistema speċifika tiegħu, peress li huwa t-tim li jaf dak li ġeneralment jeħtieġ f'kontenitur partikolari.
Raġunijiet għall-abbandun ta' Nomad
X'vantaġġi ksibna billi nbiddlu għall-iskjerament bl-użu ta' Nomad u docker, fost oħrajn?
- Aħna sakemm kundizzjonijiet ugwali għall-ambjenti kollha. Fl-iżvilupp, QA ambjent, pre-produzzjoni, produzzjoni, l-istess immaġini kontenitur huma użati, bl-istess dipendenzi. Għaldaqstant, prattikament ma jkollok l-ebda ċans li dak li se jispiċċa fil-produzzjoni mhuwiex dak li qabel ittestjajt lokalment jew fl-ambjent tat-test tiegħek.
- Sibna wkoll li huwa biżżejjed faċli biex iżżid servizz ġdid. Mil-lat tal-iskjerament, kwalunkwe sistema ġdida titnieda b'mod sempliċi ħafna. Sempliċement mur fir-repożitorju li jaħżen il-konfigurazzjonijiet, żid konfigurazzjoni oħra għas-sistema tiegħek hemmhekk, u tkun lest. Tista' tuża s-sistema tiegħek għall-produzzjoni mingħajr ebda sforz addizzjonali mid-devops.
- Kollha fajls tal-konfigurazzjoni f'repożitorju komuni wieħed irriżulta li kien taħt reviżjoni. Fiż-żmien meta skjerajna s-sistemi tagħna bl-użu ta 'servers virtwali, użajna Ansible, li fih il-konfigurazzjonijiet kienu fl-istess repożitorju. Madankollu, għall-biċċa l-kbira tal-iżviluppaturi dan kien daqsxejn aktar diffiċli biex taħdem magħhom. Hawnhekk il-volum ta 'konfigurazzjonijiet u kodiċi li għandek bżonn iżżid biex tuża s-servizz sar ħafna iżgħar. Barra minn hekk, huwa faċli ħafna għad-devops li jiffissaw jew jibdlu. Fil-każ ta 'tranżizzjonijiet, pereżempju, għal verżjoni ġdida ta' Nomad, jistgħu jieħdu u jaġġornaw bl-ingrossa l-fajls operattivi kollha li jinsabu fl-istess post.
Iżda ltqajna wkoll ma 'diversi żvantaġġi:
Irriżulta li aħna ma setgħetx tikseb skjeramenti bla xkiel fil-każ ta’ Nomad. Meta jitfgħu kontenituri taħt kundizzjonijiet differenti, jista 'jirriżulta li jkun qed jaħdem, u Nomad pperċepitu bħala kontenitur lest biex jirċievi t-traffiku. Dan ġara qabel ma l-applikazzjoni ġewwa fiha saħansitra kellha ċans titnieda. Għal din ir-raġuni, is-sistema bdiet tipproduċi 500 żball għal perjodu qasir ta’ żmien, għax it-traffiku beda jmur f’kontejner li kien għadu mhux lest jaċċettah.
Iltqajna ma’ xi wħud bugs. L-aktar bug sinifikanti huwa li Nomad ma jimmaniġġjax raggruppament kbir tajjeb ħafna jekk għandek ħafna sistemi u kontenituri. Meta trid tieħu waħda mis-servers li hija inkluża fil-cluster Nomad għall-manutenzjoni, hemm probabbiltà pjuttost għolja li r-raggruppament ma jħossux tajjeb ħafna u jinqasam. Xi kontenituri jistgħu, pereżempju, jaqgħu u ma jogħlewx - dan jiswik ħafna aktar tard jekk is-sistemi kollha tal-produzzjoni tiegħek jinsabu f'grupp immexxi minn Nomad.
Għalhekk iddeċidejna li naħsbu fejn għandna mmorru. F'dak il-punt, sirna ħafna aktar konxji ta 'dak li ridna niksbu. Jiġifieri: irridu affidabilità, ftit aktar funzjonijiet milli jipprovdi Nomad, u sistema aktar matura u aktar stabbli.
F'dan ir-rigward, l-għażla tagħna waqgħet fuq Kubernetes bħala l-aktar pjattaforma popolari għat-tnedija ta 'clusters. Speċjalment meta wieħed iqis li d-daqs u n-numru tal-kontenituri tagħna kien kbir biżżejjed. Għal skopijiet bħal dawn, Kubernetes deher li kien l-aktar sistema adattata li nistgħu nħarsu lejha.
Transizzjoni għal Kubernetes
Jien ngħidlek ftit dwar il-kunċetti bażiċi ta 'Kubernetes u kif huma differenti minn Nomad.
L-ewwelnett, l-aktar kunċett bażiku f'Kubernetes huwa l-kunċett ta 'pod. Pod huwa grupp ta' kontenitur wieħed jew aktar li dejjem jimxu flimkien. U dejjem jaħdmu daqslikieku strettament fuq magna virtwali waħda. Huma aċċessibbli għal xulxin permezz tal-IP 127.0.0.1 fuq portijiet differenti.
Ejja nassumu li għandek applikazzjoni PHP li tikkonsisti f'nginx u php-fpm - l-iskema klassika. Ħafna probabbli, trid iżżomm kemm il-kontenituri nginx kif ukoll php-fpm flimkien il-ħin kollu. Kubernetes jippermettilek tikseb dan billi tiddeskrivihom bħala pod komuni wieħed. Dan huwa eżattament dak li ma stajniex niksbu b'Nomad.
It-tieni kunċett huwa iskjerament. Il-fatt hu li l-miżwed innifsu huwa ħaġa effimera; jibda u jisparixxi. Trid toqtol il-kontenituri preċedenti kollha tiegħek l-ewwel, u mbagħad tniedi verżjonijiet ġodda f'daqqa, jew trid tgħaddihom gradwalment? Dan huwa l-proċess li l-kunċett tal-iskjerament huwa responsabbli għalih. Jiddeskrivi kif tuża l-imżiewed tiegħek, f'liema kwantità u kif taġġornahom.
It-tielet kunċett huwa servizz. Is-servizz tiegħek fil-fatt huwa s-sistema tiegħek, li tirċievi xi traffiku u mbagħad tibgħatha lil pods wieħed jew aktar li jikkorrispondu mas-servizz tiegħek. Jiġifieri, jippermettilek tgħid li t-traffiku kollu deħlin għal tali jew tali servizz b'tali jew tali isem irid jintbagħat lil dawn il-miżwed speċifiċi. U fl-istess ħin jipprovdilek ibbilanċjar tat-traffiku. Jiġifieri, tista 'tniedi żewġ imżiewed tal-applikazzjoni tiegħek, u t-traffiku kollu li jkun dieħel ikun ibbilanċjat b'mod ugwali bejn il-miżwed relatati ma' dan is-servizz.
U r-raba 'kunċett bażiku huwa Ingress. Dan huwa servizz li jaħdem fuq cluster Kubernetes. Jaġixxi bħala bilanċjar tat-tagħbija esterna li jieħu f'idejh it-talbiet kollha. Bl-użu tal-API Kubernetes, Ingress jista' jiddetermina fejn għandhom jintbagħtu dawn it-talbiet. Barra minn hekk, jagħmel dan b'mod flessibbli ħafna. Tista' tgħid li t-talbiet kollha lil dan il-host u tali URL jintbagħtu lil dan is-servizz. U dawn it-talbiet li jaslu lil dan il-host u lil URL ieħor jintbagħtu lil servizz ieħor.
L-iktar ħaġa sabiħa mil-lat ta 'xi ħadd li jiżviluppa applikazzjoni hija li inti kapaċi tmexxi dan kollu lilek innifsek. Billi tissettja l-konfigurazzjoni Ingress, tista 'tibgħat it-traffiku kollu li ġej għal tali jew tali API għal kontenituri separati miktuba, pereżempju, f'Go. Iżda dan it-traffiku, li jasal għall-istess dominju, iżda għal URL differenti, għandu jintbagħat f'kontenituri miktuba f'PHP, fejn hemm ħafna loġika, iżda mhumiex veloċi ħafna.
Jekk inqabblu dawn il-kunċetti kollha ma Nomad, nistgħu ngħidu li l-ewwel tliet kunċetti huma kollha flimkien Servizz. U l-aħħar kunċett huwa nieqes f'Nomad innifsu. Aħna użajna balancer estern hekk kif: jista 'jkun haproxy, nginx, nginx+, eċċ. Fil-każ ta 'kubu, m'għandekx bżonn tintroduċi dan il-kunċett addizzjonali separatament. Madankollu, jekk tħares lejn Ingress internament, huwa jew nginx, haproxy, jew traefik, iżda tip ta 'mibni f'Kubernetes.
Il-kunċetti kollha li ddeskrivejt huma, fil-fatt, riżorsi li jeżistu fi ħdan cluster Kubernetes. Biex tiddeskrivihom fil-kubu, jintuża format yaml, li huwa aktar leġibbli u familjari mill-fajls HCL fil-każ ta 'Nomad. Iżda strutturalment jiddeskrivu l-istess ħaġa fil-każ ta ', pereżempju, pod. Jgħidu - irrid niskjera tali u tali imżiewed hemmhekk, b'tali u tali immaġini, fi tali u tali kwantitajiet.
Barra minn hekk, indunajna li ma ridniex noħolqu kull riżors individwali bl-idejn: iskjerament, servizzi, Ingress, eċċ. Minflok, ridna niddeskrivu kull waħda mis-sistemi tagħna f'termini ta 'Kubernetes waqt l-iskjerament, sabiex ma jkollnax għalfejn nirrikrejaw manwalment id-dipendenzi kollha tar-riżorsi meħtieġa fl-ordni t-tajba. Helm intgħażlet bħala s-sistema li ppermettietna nagħmlu dan.
Kunċetti bażiċi fil Helm
Tmun huwa maniġer tal-pakketti għal Kubernetes. Huwa simili ħafna għal kif jaħdmu l-maniġers tal-pakketti fil-lingwi tal-ipprogrammar. Huma jippermettulek taħżen servizz li jikkonsisti, pereżempju, deployment nginx, deployment php-fpm, config for Ingress, configmaps (din hija entità li tippermettilek li tissettja env u parametri oħra għas-sistema tiegħek) fil-forma ta’ so- imsejħa charts. Fl-istess ħin Helm timxi fuq Kubernetes. Jiġifieri, din mhix xi tip ta 'sistema mwarrba, iżda biss servizz ieħor imniedi ġewwa l-kubu. Inti jinteraġixxu magħha permezz tal-API tagħha permezz ta 'kmand tal-console. Il-konvenjenza u s-sbuħija tagħha hija li anki jekk it-tmun jinkiser jew tneħħih mill-cluster, is-servizzi tiegħek mhux se jisparixxu, peress li t-tmun essenzjalment iservi biss biex tibda s-sistema. Kubernetes innifsu huwa mbagħad responsabbli għall-prestazzjoni u l-istat tas-servizzi.
Irrealizzajna wkoll li templateization, li qabel konna mġiegħla nagħmlu aħna billi nintroduċu jinja fil-konfigurazzjonijiet tagħna, hija waħda mill-karatteristiċi ewlenin tat-tmun. Il-konfigurazzjonijiet kollha li inti toħloq għas-sistemi tiegħek huma maħżuna fil-tmun fil-forma ta 'mudelli, ftit simili għal jinja, iżda, fil-fatt, bl-użu tat-templating tal-lingwa Go, li fiha tmun huwa miktub, bħal Kubernetes.
Helm iżid ftit aktar kunċetti għalina.
Chart - din hija deskrizzjoni tas-servizz tiegħek. F'maniġers ta 'pakketti oħra jkun jissejjaħ pakkett, pakkett jew xi ħaġa simili. Hawnhekk huwa msejjaħ chart.
valuri huma l-varjabbli li trid tuża biex tibni l-konfigurazzjonijiet tiegħek minn mudelli.
Rilaxx. Kull darba li servizz li jiġi skjerat bl-użu tat-tmun jirċievi verżjoni inkrementali tar-rilaxx. Helm jiftakar x'kienet il-konfigurazzjoni tas-servizz fir-rilaxx preċedenti, ir-rilaxx qabel dik, eċċ. Għalhekk, jekk għandek bżonn li rollback, sempliċement mexxi l-kmand callback tat-tmun, tippontah lejn il-verżjoni tar-rilaxx preċedenti. Anke jekk il-konfigurazzjoni korrispondenti fir-repożitorju tiegħek ma tkunx disponibbli fiż-żmien tar-rollback, it-tmun xorta se jiftakar dak li kien u se jreġġa' lura s-sistema tiegħek għall-istat li kien fih fir-rilaxx preċedenti.
Fil-każ meta nużaw it-tmun, il-konfigurazzjonijiet regolari għal Kubernetes jinbidlu wkoll f'mudelli li fihom huwa possibbli li tuża varjabbli, funzjonijiet, u tapplika dikjarazzjonijiet kundizzjonali. Dan il-mod tista' tiġbor il-konfigurazzjoni tas-servizz tiegħek skont l-ambjent.
Fil-prattika, iddeċidejna li nagħmlu l-affarijiet ftit differenti milli għamilna ma' Nomad. Jekk f'Nomad kemm il-konfigurazzjonijiet tal-iskjerament kif ukoll n-varjabbli li kienu meħtieġa biex jiġi skjerat is-servizz tagħna kienu maħżuna f'repożitorju wieħed, hawnhekk iddeċidejna li naqsmuhom f'żewġ repożitorji separati. Ir-repożitorju "skjerament" jaħżen biss n-varjabbli meħtieġa għall-iskjerament, u r-repożitorju "tmun" jaħżen konfigurazzjonijiet jew charts.
X'tagħna dan?
Minkejja l-fatt li aħna ma naħżnu l-ebda data verament sensittiva fil-fajls tal-konfigurazzjoni nfushom. Per eżempju, passwords għal databases. Huma maħżuna bħala sigrieti f'Kubernetes, iżda madankollu, għad hemm ċerti affarijiet hemmhekk li ma rridux nagħtu aċċess għalihom lil kulħadd. Għalhekk, l-aċċess għar-repożitorju "skjerament" huwa aktar limitat, u r-repożitorju "tmun" sempliċement fih deskrizzjoni tas-servizz. Għal din ir-raġuni, jista 'jkun aċċessat b'mod sikur minn firxa usa' ta 'nies.
Peress li għandna mhux biss produzzjoni, iżda wkoll ambjenti oħra, bis-saħħa ta 'din is-separazzjoni nistgħu nużaw mill-ġdid it-tabelli tat-tmun tagħna biex niskjeraw servizzi mhux biss għall-produzzjoni, iżda wkoll, pereżempju, għal ambjent ta' QA. Anke biex tużahom lokalment bl-użu Minikube - din hija ħaġa għat-tmexxija ta' Kubernetes lokalment.
Ġewwa kull repożitorju, ħallejna diviżjoni f'direttorji separati għal kull servizz. Jiġifieri, ġewwa kull direttorju hemm mudelli relatati mat-tabella korrispondenti u li jiddeskrivu r-riżorsi li jeħtieġ li jiġu skjerati biex iniedu s-sistema tagħna. Ħallejna biss envs fir-repożitorju "skjerament". F'dan il-każ, aħna ma użajnax templating bl-użu ta 'jinja, minħabba li t-tmun innifsu jipprovdi templating barra mill-kaxxa - din hija waħda mill-funzjonijiet ewlenin tagħha.
Ħallna skript tal-iskjerament - deploy.sh, li jissimplifika u jistandardizza t-tnedija għall-iskjerament bl-użu ta 'tmun. Għalhekk, għal kull min irid juża, l-interface tal-iskjerament tidher eżattament l-istess bħal meta kienet qed tintuża permezz ta 'Nomad. L-istess deploy.sh, l-isem tas-servizz tiegħek, u fejn trid tiskjerah. Dan jikkawża t-tmun jibda internament. Min-naħa tiegħu, jiġbor il-konfigurazzjonijiet minn mudelli, idaħħal il-fajls tal-valuri meħtieġa fihom, imbagħad jużahom, u jniedihom f'Kubernetes.
Sejbiet
Is-servizz Kubernetes jidher li huwa aktar kumpless minn Nomad.
Hawnhekk it-traffiku ħerġin jasal għal Ingress. Dan huwa biss il-kontrollur ta 'quddiem, li jieħu f'idejh it-talbiet kollha u sussegwentement jibgħathom lis-servizzi li jikkorrispondu mad-dejta tat-talba. Jiddeterminahom ibbażati fuq konfigurazzjonijiet li huma parti mid-deskrizzjoni tal-applikazzjoni tiegħek fit-tmun u liema żviluppaturi jistabbilixxu waħedhom. Is-servizz jibgħat talbiet lill-imżiewed tiegħu, jiġifieri, kontejners speċifiċi, li jibbilanċja t-traffiku li jkun dieħel bejn il-kontejners kollha li jappartjenu għal dan is-servizz. U, ovvjament, m'għandniex ninsew li m'għandna mmorru imkien mis-sigurtà fil-livell tan-netwerk. Għalhekk, is-segmentazzjoni taħdem fi cluster Kubernetes, li huwa bbażat fuq it-tikkettar. Is-servizzi kollha għandhom ċerti tags li magħhom huma assoċjati d-drittijiet ta’ aċċess tas-servizzi għal ċerti riżorsi esterni/interni ġewwa jew barra l-cluster.
Hekk kif għamilna t-tranżizzjoni, rajna li Kubernetes kellu l-kapaċitajiet kollha ta 'Nomad, li konna użajna qabel, u żied ukoll ħafna affarijiet ġodda. Jista 'jiġi estiż permezz ta' plugins, u fil-fatt permezz ta 'tipi ta' riżorsi tad-dwana. Jiġifieri, għandek l-opportunità mhux biss li tuża xi ħaġa li tiġi ma 'Kubernetes barra mill-kaxxa, iżda li toħloq ir-riżors u s-servizz tiegħek stess li se jaqra r-riżors tiegħek. Dan jagħtik għażliet addizzjonali biex tespandi s-sistema tiegħek mingħajr ma jkollok bżonn terġa' tinstalla Kubernetes u mingħajr ma teħtieġ modifiki.
Eżempju ta’ użu bħal dan huwa Prometheus, li jaħdem ġewwa l-cluster tagħna ta’ Kubernetes. Sabiex jibda jiġbor metriċi minn servizz partikolari, jeħtieġ li nżidu tip addizzjonali ta 'riżorsa, l-hekk imsejjaħ moniter tas-servizz, mad-deskrizzjoni tas-servizz. Prometheus, minħabba l-fatt li jista 'jaqra tip ta' riżorsa apposta meta jitnieda f'Kubernetes, awtomatikament jibda jiġbor metriċi mis-sistema l-ġdida. Huwa pjuttost konvenjenti.
L-ewwel skjerament li għamilna lil Kubernetes kien f'Marzu 2018. U matul dan iż-żmien qatt ma esperjenzajna xi problemi magħha. Jaħdem pjuttost stabbli mingħajr bugs sinifikanti. Barra minn hekk, nistgħu nespanduha aktar. Illum għandna biżżejjed mill-kapaċitajiet li għandha, u nħobbu ħafna l-pass ta 'żvilupp ta' Kubernetes. Bħalissa, aktar minn 3000 kontenitur jinsabu f'Kubernetes. Il-cluster jokkupa diversi Nodi. Fl-istess ħin, huwa utli, stabbli u kontrollabbli ħafna.
Sors: www.habr.com