{"id":33654,"date":"2019-10-31T21:53:58","date_gmt":"2019-10-31T18:53:58","guid":{"rendered":"https:\/\/prohoster.info\/blog\/deploj-prilozhenij-v-vm-nomad-i-kubernetes\/"},"modified":"2019-10-31T21:53:58","modified_gmt":"2019-10-31T18:53:58","slug":"deploj-prilozhenij-v-vm-nomad-i-kubernetes","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/deploj-prilozhenij-v-vm-nomad-i-kubernetes","title":{"rendered":"Depolimi i aplikacioneve n\u00eb VM, Nomad dhe Kubernetes.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>P\u00ebrsh\u00ebndetje gjith\u00ebve! Emri im \u00ebsht\u00eb Pavel Agaletki. Un\u00eb punoj si lider i ekipit q\u00eb zhvillon sistemin e shp\u00ebrndarjes s\u00eb Lamoda. N\u00eb vitin 2018, kam marr\u00eb pjes\u00eb n\u00eb konferenc\u00ebn HighLoad++, dhe sot dua t\u00eb paraqes transkriptin e prezantimit tim.<\/p>\n<p>Tema ime i dedikohet p\u00ebrvoj\u00ebs s\u00eb kompanis\u00eb son\u00eb p\u00ebr shp\u00ebrndarjen e sistemeve dhe sh\u00ebrbimeve n\u00eb ambiente t\u00eb ndryshme. Duke filluar nga koha jon\u00eb prehistorike, kur ne shp\u00ebrndanim t\u00eb gjitha sistemet n\u00eb servera virtual\u00eb t\u00eb zakonsh\u00ebm, deri n\u00eb kalimin graduel nga Nomad n\u00eb shp\u00ebrndarjen n\u00eb Kubernetes. Do t\u00eb flas p\u00ebr arsyet pse e b\u00ebm\u00eb k\u00ebt\u00eb dhe p\u00ebr problemet q\u00eb pat\u00ebm gjat\u00eb procesit.<\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"oqrb7dWECSo\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/oqrb7dWECSo\/hqdefault.jpg\" alt=\"Luaj videon\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1>Shp\u00ebrndarja e aplikacioneve n\u00eb VM<\/h1>\n<p>\nFillimisht, para 3 vjet\u00ebsh, t\u00eb gjitha sistemet dhe sh\u00ebrbimet e kompanis\u00eb u vendos\u00ebn n\u00eb server\u00eb virtual\u00eb t\u00eb zakonsh\u00ebm. Teknikisht, ishte organizuar n\u00eb m\u00ebnyr\u00eb q\u00eb t\u00eb gjith\u00eb kodi i sistemeve tona t\u00eb ruhej dhe t\u00eb nd\u00ebrtohej n\u00ebp\u00ebrmjet mjeteve t\u00eb automatizimit, duke p\u00ebrdorur jenkins. Me an\u00eb t\u00eb Ansible, ai shp\u00ebrndahej nga sistemi yn\u00eb i kontrollit t\u00eb versioneve n\u00eb server\u00ebt virtual\u00eb. \u00c7do sistem q\u00eb kishte kompanin\u00eb ton\u00eb u vendos n\u00eb t\u00eb pakt\u00ebn 2 server\u00eb: nj\u00ebri prej tyre ishte head, nd\u00ebrsa tjetra ishte tail. K\u00ebto dy sisteme ishin plot\u00ebsisht identike n\u00eb t\u00eb gjitha parametrat, fuqin\u00eb, konfigurimin dhe t\u00eb tjera. Diferenca mes tyre ishte vet\u00ebm se head merrte trafik p\u00ebrdoruesish, nd\u00ebrsa tail kurr\u00eb nuk merrte trafik p\u00ebrdoruesish mbi vete. <\/p>\n<p>P\u00ebr \u00e7far\u00eb ishte b\u00ebr\u00eb kjo? <\/p>\n<p>Kur ne b\u00ebm\u00eb deploy-in e l\u00ebshimeve t\u00eb reja t\u00eb aplikacionit ton\u00eb, d\u00ebshironim t\u00eb siguroheshim p\u00ebr nj\u00eb kalim pa probleme, pa pasur pasoja t\u00eb dukshme p\u00ebr p\u00ebrdoruesit. Kjo arrihej p\u00ebrmes lan\u00e7imit t\u00eb nj\u00eb l\u00ebshimi t\u00eb nd\u00ebrtuar me Ansible n\u00eb tail. Aty, ata q\u00eb merreshin me deploy-in mund t\u00eb kontrollonin dhe t\u00eb siguroheshin q\u00eb gjith\u00e7ka ishte n\u00eb rregull: t\u00eb gjitha metrikat, seksionet dhe aplikacionet funksiononin; skenaret e nevojshme fillonin. Vet\u00ebm pas konfirmimit q\u00eb gjith\u00e7ka ishte n\u00eb rregull, trafiku do t\u00eb kalonte. Ai fillonte t\u00eb shkonte n\u00eb at\u00eb server q\u00eb m\u00eb par\u00eb ishte tail. Ai q\u00eb m\u00eb par\u00eb ishte head, mbetej pa trafik p\u00ebrdoruesish, p\u00ebrve\u00e7 versionit t\u00eb m\u00ebparsh\u00ebm t\u00eb aplikacionit ton\u00eb q\u00eb kishte mbi t\u00eb.<\/p>\n<p>K\u00ebshtu, p\u00ebr p\u00ebrdoruesit, kjo ishte pa probleme. Sepse kalimi ishte \u043c\u043e\u043c\u0435\u043d\u0442al, pasi ishte thjesht nj\u00eb kalim i balancuesit. Mjafton t\u00eb ktheheshim n\u00eb versionin e m\u00ebparsh\u00ebm, thjesht duke e kthyer balancuesin mbrapsht. Gjithashtu mund\u00ebm t\u00eb siguroheshim p\u00ebr kapacitetin e aplikacionit n\u00eb prodhim edhe para se t\u00eb fillonte trafik p\u00ebrdoruesish, q\u00eb ishte shum\u00eb e p\u00ebrshtatshme. <\/p>\n<p>\u00c7far\u00eb p\u00ebrfitimesh pam\u00eb n\u00eb gjith\u00eb k\u00ebt\u00eb?<\/p>\n<ol>\n<li>Para fillin, \u00ebsht\u00eb mjaft <b>thjesht funksionon.<\/b> T\u00eb gjith\u00ebve u \u00ebsht\u00eb e qart\u00eb se si funksionon nj\u00eb sistem i till\u00eb implementimi, sepse shumica e njer\u00ebzve ndonj\u00ebher\u00eb e kan\u00eb implementuar n\u00eb servera virtual\u00eb t\u00eb zakonsh\u00ebm.<\/li>\n<li>Kjo \u00ebsht\u00eb mjaft <b>e besueshme<\/b>, pasi teknologjia e implementimit \u00ebsht\u00eb e thjesht\u00eb, e provuar nga mij\u00ebra kompani. Miliona servera implementohen n\u00eb k\u00ebt\u00eb m\u00ebnyr\u00eb. \u00cbsht\u00eb e v\u00ebshtir\u00eb ta d\u00ebmtojm\u00eb di\u00e7ka. <\/li>\n<li>Dhe n\u00eb fund, ne mund\u00ebm t\u00eb merrnim <b>implementime atomike<\/b>. Implementime, t\u00eb cilat p\u00ebr p\u00ebrdoruesit ndodhin nj\u00ebkoh\u00ebsisht, pa nj\u00eb faz\u00eb t\u00eb dukshme kalimi midis versionit t\u00eb vjet\u00ebr dhe atij t\u00eb ri. <\/li>\n<\/ol>\n<p>\nPor n\u00eb gjith\u00eb k\u00ebt\u00eb ne gjithashtu pam\u00eb disa disavantazhe: <\/p>\n<ol>\n<li>P\u00ebrve\u00e7 mjedisit t\u00eb prodhimit, ka edhe mjedise zhvillimi t\u00eb tjera. P\u00ebr shembull, qa dhe para-prodhim. N\u00eb at\u00eb koh\u00eb, kishim shum\u00eb servera dhe rreth 60 sh\u00ebrbime. P\u00ebr k\u00ebt\u00eb arsye duhej <b>t\u00eb mbajm\u00eb nj\u00eb version t\u00eb p\u00ebrdit\u00ebsuar p\u00ebr secilin sh\u00ebrbim. <\/b>makin\u00ebs virtuale. N\u00eb rast se d\u00ebshironi t\u00eb p\u00ebrdit\u00ebsoni bibliotekat ose t\u00eb instaloni var\u00ebsi t\u00eb reja, duhet t\u2019i b\u00ebni k\u00ebto n\u00eb t\u00eb gjitha ambientet. Gjithashtu, duhet t\u00eb sinkronizoni orarin kur planifikoni t\u00eb lan\u00e7oni versionin e ri t\u00eb aplikacionit tuaj me koh\u00ebn kur devops do t\u00eb kryej\u00eb konfigurimet e nevojshme t\u00eb ambientit. N\u00eb k\u00ebt\u00eb rast, \u00ebsht\u00eb e leht\u00eb t\u00eb p\u00ebrfundoni n\u00eb nj\u00eb situat\u00eb ku ambientet do t\u00eb ndryshojn\u00eb ndjesh\u00ebm menj\u00ebher\u00eb n\u00eb t\u00eb gjitha ambientet. P\u00ebr shembull, n\u00eb ambientin QA do t\u00eb ket\u00eb versione t\u00eb ndryshme t\u00eb bibliotekave, nd\u00ebrsa n\u00eb prodhim do t\u00eb jen\u00eb t\u00eb tjera, gj\u00eb q\u00eb do t\u00eb \u00e7oj\u00eb n\u00eb probleme. <\/li>\n<li><b>V\u00ebshtir\u00ebsia n\u00eb p\u00ebrdit\u00ebsimin e var\u00ebsive<\/b> t\u00eb aplikacionit tuaj. Kjo nuk varet nga ju, por nga nj\u00eb tjet\u00ebr ekip. Ata jan\u00eb ekipi i devops, i cili mb\u00ebshtet serverat. Duhet t'i jepni atyre nj\u00eb detyr\u00eb p\u00ebrkat\u00ebse dhe t\u00eb jepni nj\u00eb p\u00ebrshkrim t\u00eb asaj q\u00eb d\u00ebshironi t\u00eb b\u00ebni.<\/li>\n<li>N\u00eb at\u00eb koh\u00eb, ne gjithashtu d\u00ebshironim t\u00eb ndanin monolit\u00ebt tan\u00eb t\u00eb m\u00ebdhenj n\u00eb sh\u00ebrbime t\u00eb ve\u00e7anta t\u00eb vogla, pasi kuptonim se do t\u00eb kishte gjithnj\u00eb e m\u00eb shum\u00eb prej tyre. N\u00eb at\u00eb faz\u00eb, ne tashm\u00eb kishim m\u00eb shum\u00eb se 100 sh\u00ebrbime t\u00eb tilla. Ishte e nevojshme t\u00eb krijonim nj\u00eb makin\u00eb virtuale t\u00eb re p\u00ebr \u00e7do sh\u00ebrbim t\u00eb ri, e cila gjithashtu duhej mir\u00ebmbajtur dhe vendosur. P\u00ebrve\u00e7 k\u00ebsaj, ne na nevojiteshin t\u00eb pakt\u00ebn dy makina. K\u00ebsaj i shtohet gjithashtu nj\u00eb mjedis t\u00eb QA-s\u00eb. Kjo shkakton probleme dhe e b\u00ebn krijimin dhe lan\u00e7imin e sistemeve t\u00eb reja p\u00ebr ju m\u00eb <b>t\u00eb nd\u00ebrlikuar, t\u00eb shtrenjt\u00eb dhe t\u00eb gjat\u00eb.<\/b><\/li>\n<\/ol>\n<p>\nPrandaj, ne mor\u00ebm vendimin se do t\u00eb ishte m\u00eb e leht\u00eb t\u00eb kalonim nga vendosja e makinave virtuale t\u00eb zakonshme n\u00eb vendosjen e aplikacioneve tona n\u00eb kontejnerin docker. Me pranin\u00eb e docker-it, na nevoitet nj\u00eb sistem q\u00eb mund t\u00eb lan\u00e7oj\u00eb aplikacionin n\u00eb nj\u00eb klaster, pasi nuk mund t\u00eb ngrini thjesht nj\u00eb kontejner. Zakonisht d\u00ebshirojm\u00eb t\u00eb ndjekim se sa kontejner\u00eb jan\u00eb ngritur, q\u00eb ata t\u00eb ngrihen automatikisht. P\u00ebr k\u00ebt\u00eb arsye, na duhej t\u00eb zgjidhim nj\u00eb sistem menaxhimi. <\/p>\n<p>Kemi menduar p\u00ebr nj\u00eb koh\u00eb t\u00eb gjat\u00eb se cilin variant t\u00eb zgjidhim. Problemi \u00ebsht\u00eb se n\u00eb at\u00eb koh\u00eb ky stack i deploy-it n\u00eb serverat virtual\u00eb t\u00eb zakonsh\u00ebm ishte disi i vjetruar, pasi kishte versione jo t\u00eb reja t\u00eb sistemeve operative. N\u00eb nj\u00eb moment atje madje kishte FreeBSD, e cila ishte pak e v\u00ebshtir\u00eb p\u00ebr t\u2019u mb\u00ebshtetur. Ne kuptonim se duhej t\u00eb migronim sa m\u00eb shpejt n\u00eb docker. DevOps-\u00ebt tan\u00eb e shqyrtuan p\u00ebrvoj\u00ebn e tyre me zgjidhje t\u00eb ndryshme dhe zgjodh\u00ebn nj\u00eb sistem si Nomad. <\/p>\n<h1>Kalimi n\u00eb Nomad<\/h1>\n<p>\nNomad \u2013 \u00ebsht\u00eb nj\u00eb produkt i kompanis\u00eb \u201cHashiCorp\u201d. Ata jan\u00eb gjithashtu t\u00eb njohur p\u00ebr zgjidhjet e tjera:<\/p>\n<p><img decoding=\"async\" alt=\"Depolimi i aplikacioneve n\u00eb VM, Nomad dhe Kubernetes.\" src=\"\/wp-content\/uploads\/2019\/05\/25dfbfe20b92f6e6865bdd8a2f15d8fa.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>\u00abConsul\u00bb<\/b> \u2014 \u00ebsht\u00eb nj\u00eb mjet p\u00ebr zbulimin e sh\u00ebrbimeve.<\/p>\n<p><b>\u00abTerraform\u00bb<\/b> \u2014 \u00ebsht\u00eb nj\u00eb sistem p\u00ebr menaxhimin e server\u00ebve, i cili ju lejon t\u2019i konfiguroni ato n\u00ebp\u00ebrmjet nj\u00eb konfigurimi, t\u00eb njohur si infrastructure-as-a-code.<\/p>\n<p><b>\u00abVagrant\u00bb<\/b> lejon t\u00eb zhvilloni makina virtuale lokalish ose n\u00eb cloud p\u00ebrmes disa skedave konfigurimi. <\/p>\n<p>Nomad na at\u00eb moment dukej nj\u00eb zgjidhje mjaft e thjesht p\u00ebr t\u00eb cil\u00ebn mund t\u00eb kaloni shpejt pa ndryshuar t\u00ebr\u00eb infrastruktur\u00ebn. P\u00ebr m\u00eb tep\u00ebr, \u00ebsht\u00eb mjaft e leht\u00eb p\u00ebr t'u zot\u00ebruar. Prandaj, ne e zgjodh\u00ebm at\u00eb si sistemin e filtrimit p\u00ebr kontejnerin ton\u00eb. <\/p>\n<p>\u00c7far\u00eb nevojitet p\u00ebr t\u00eb shp\u00ebrndar\u00eb sistemin tuaj n\u00eb Nomad? <\/p>\n<ol>\n<li>S\u00eb pari, nevojitet <b>docker image<\/b> i aplikacionit tuaj. \u00cbsht\u00eb e nevojshme ta nd\u00ebrtoni at\u00eb dhe ta vendosni n\u00eb depozitat e imazheve docker. N\u00eb rastin ton\u00eb, kjo \u00ebsht\u00eb artifactory \u2014 nj\u00eb sistem q\u00eb lejon t\u00eb shtoni n\u00eb t\u00eb artefakte t\u00eb ndryshme t\u00eb llojeve t\u00eb ndryshme. Ajo ka aft\u00ebsin\u00eb t\u00eb ruaj\u00eb arkiva, imazhe docker, pacak\u00eb composer PHP, pacak\u00eb NPM dhe k\u00ebshtu me radh\u00eb. <\/li>\n<li>Gjithashtu \u00ebsht\u00eb e nevojshme<b> konfigurues<\/b>, i cili do t'i tregoj\u00eb Nomad se \u00e7far\u00eb, ku dhe n\u00eb cilat sasi d\u00ebshironi t\u00eb shp\u00ebrndani. <\/li>\n<\/ol>\n<p>\nKur flasim p\u00ebr Nomad, formati i skedarit informativ p\u00ebrdor gjuh\u00ebn HCL, e cila shkruhet si <i>HashiCorp Configuration Language<\/i>. Kjo \u00ebsht\u00eb nj\u00eb n\u00ebngrup mbi Yaml, q\u00eb ju lejon t\u00eb p\u00ebrshkruani sh\u00ebrbimin tuaj n\u00eb terma t\u00eb Nomad. <\/p>\n<p><img decoding=\"async\" alt=\"Depolimi i aplikacioneve n\u00eb VM, Nomad dhe Kubernetes.\" src=\"\/wp-content\/uploads\/2019\/05\/bee3d1feedd52249c4325d8a3984a766.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAi lejon t\u00eb thuash sa kontejner\u00eb d\u00ebshiron t\u00eb deploosh, nga cilat imazhe t'i kalosh atyre parametrat e ndrysh\u00ebm gjat\u00eb deplikimit. K\u00ebshtu, e ushqen k\u00ebt\u00eb sked\u00eb Nomad, dhe ai fillon kontejner\u00ebt n\u00eb p\u00ebrputhje me t\u00eb n\u00eb produksion. <\/p>\n<p>N\u00eb rastin ton\u00eb, ne kuptuam se thjesht t\u00eb shkruash skedar\u00eb HCL identik p\u00ebr \u00e7do sh\u00ebrbim nuk do t\u00eb ishte shum\u00eb e p\u00ebrshtatshme, sepse kemi shum\u00eb sh\u00ebrbime dhe ndonj\u00ebher\u00eb duam t\u2019i p\u00ebrdit\u00ebsojm\u00eb ato. Ndonj\u00ebher\u00eb ndodh q\u00eb nj\u00eb sh\u00ebrbim \u00ebsht\u00eb deploar jo si nj\u00eb kopje, por n\u00eb varianta t\u00eb ndryshme. P\u00ebr shembull, nj\u00eb nga sistemet q\u00eb kemi n\u00eb produksion ka m\u00eb shum\u00eb se 100 instanca n\u00eb prodhim. Ato nisin nga t\u00eb nj\u00ebjtat imazhe, por ndryshojn\u00eb n\u00eb konfigurimet dhe skedar\u00ebt e konfigurimit. <\/p>\n<p>Prandaj vendos\u00ebm q\u00eb t\u00eb ishte e p\u00ebrshtatshme t\u00eb ruanim t\u00eb gjitha skedat tona konfiguruese p\u00ebr zhvillimin n\u00eb nj\u00eb depo t\u00eb p\u00ebrbashk\u00ebt. K\u00ebshtu, ato b\u00ebheshin t\u00eb lexueshme: ishte e leht\u00eb t'i mbash dhe mund t\u00eb shihje se cilat sisteme kishim. N\u00eb rast nevoje, gjithashtu nuk ishte e v\u00ebshtir\u00eb t\u00eb p\u00ebrdit\u00ebsoje ose t\u00eb ndryshoje di\u00e7ka. Shtimi i nj\u00eb sistemi t\u00eb ri gjithashtu nuk do t\u00eb ishte e v\u00ebshtir\u00eb \u2014 mjafton t\u00eb krijosh nj\u00eb sked\u00eb konfiguruese brenda nj\u00eb katalogu t\u00eb ri. Brenda saj ndodhen skedat: service.hcl, q\u00eb p\u00ebrmban p\u00ebrshkrimin e sh\u00ebrbimit ton\u00eb, dhe disa skeda env, q\u00eb lejojn\u00eb q\u00eb ky sh\u00ebrbim, kur \u00ebsht\u00eb vendosur n\u00eb prodhim, t\u00eb konfigurohet. <\/p>\n<p><img decoding=\"async\" alt=\"Depolimi i aplikacioneve n\u00eb VM, Nomad dhe Kubernetes.\" src=\"\/wp-content\/uploads\/2019\/05\/c0b0bdb763d3c3bb84fbc9e5dfecff82.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMegjithat\u00eb, disa nga sistemet tona jan\u00eb vendosur n\u00eb prodhim jo n\u00eb nj\u00eb ekzemplar, por n\u00eb disa menj\u00ebher\u00eb. Prandaj vendos\u00ebm q\u00eb t\u00eb ishte m\u00eb e p\u00ebrshtatshme t\u00eb ruanim jo konfigurimet n\u00eb form\u00ebn e tyre t\u00eb past\u00ebr, por pamjen e tyre t\u00eb templatuar. Dhe si gjuh\u00eb templatuar ne zgjodh\u00ebm <i>jinja 2<\/i>. N\u00eb k\u00ebt\u00eb format ruhen si konfigurimet e sh\u00ebrbimit vet\u00eb, ashtu edhe skedat env q\u00eb nevojiten p\u00ebr t\u00eb. <\/p>\n<p>P\u00ebrve\u00e7 k\u00ebsaj, ne kemi vendosur n\u00eb depo nj\u00eb skript-deploy t\u00eb p\u00ebrbashk\u00ebt p\u00ebr t\u00eb gjitha projektet, i cili lejon q\u00eb t\u00eb lan\u00e7oni dhe t\u00eb deployoni sh\u00ebrbimin tuaj n\u00eb prodhim, n\u00eb ambientin e duhur, n\u00eb targetin e duhur. N\u00eb rastin kur e kemi kthyer konfigurimin ton\u00eb HCL n\u00eb nj\u00eb shabllon, at\u00ebher\u00eb ai HCL-fail q\u00eb m\u00eb par\u00eb ishte nj\u00eb konfigurim i zakonsh\u00ebm Nomad, tani duket ndryshe.<\/p>\n<p><img decoding=\"async\" alt=\"Depolimi i aplikacioneve n\u00eb VM, Nomad dhe Kubernetes.\" src=\"\/wp-content\/uploads\/2019\/05\/202472f109ba09798d592418b1774a29.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDo t\u00eb thot\u00eb se ne kemi z\u00ebvend\u00ebsuar disa variabla t\u00eb konfigurimit me insertime variablash, t\u00eb cilat merren nga skedar\u00ebt env ose nga burime t\u00eb tjera. P\u00ebrve\u00e7 k\u00ebsaj, kemi fituar mund\u00ebsin\u00eb p\u00ebr t\u00eb nd\u00ebrtuar dinamike HCL-failat, q\u00eb do t\u00eb thot\u00eb se mund t\u00eb aplikojm\u00eb jo vet\u00ebm insertime t\u00eb zakonshme variablash. Duke qen\u00eb se jinja mb\u00ebshtet ciklet dhe kushtet, aty gjithashtu mund t\u00eb krijohen skedar\u00eb konfigurimi q\u00eb ndryshojn\u00eb n\u00eb var\u00ebsi t\u00eb vendndodhjes ku po deployoni aplikacionet tuaja. <\/p>\n<p>P\u00ebr shembull, do t\u00eb d\u00ebshironit t\u00eb deploy sh\u00ebrbimin tuaj n\u00eb preprod-hap dhe n\u00eb prod-hap. Le t\u00eb themi se n\u00eb preprod-hap nuk doni t\u00eb vendosni skriptet cron, por thjesht d\u00ebshironi t\u00eb shihni sh\u00ebrbimin n\u00eb nj\u00eb domen t\u00eb ve\u00e7uar, p\u00ebr t\u00eb siguruar q\u00eb ai funksionon. P\u00ebr k\u00ebdo q\u00eb deploy sh\u00ebrbimin, procesi duket shum\u00eb i thjesht\u00eb dhe i qart\u00eb. Mjafton t\u00eb ekzekutoni skedarin deploy.sh, t\u00eb tregoni se cili sh\u00ebrbim d\u00ebshironi t\u00eb deploy dhe n\u00eb cilin target. P\u00ebr shembull, d\u00ebshironi t\u00eb deploy nj\u00eb sistem n\u00eb Rusi, Bjellorusi ose Kazakistan. Mjafton t\u00eb ndryshoni nj\u00eb nga parametrat, dhe do t\u00eb krijohet skedari i duhur i konfigurimit. <\/p>\n<p>Kur sh\u00ebrbimi Nomad \u00ebsht\u00eb deploy dhe ndodhet n\u00eb klusterin tuaj, ai duket si m\u00eb posht\u00eb.<\/p>\n<p><img decoding=\"async\" alt=\"Depolimi i aplikacioneve n\u00eb VM, Nomad dhe Kubernetes.\" src=\"\/wp-content\/uploads\/2019\/05\/60e2e2b5502936809d643d73c6d853e2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00eb fillim, ju nevojitet nj\u00eb load balancer jasht\u00eb, i cili do t\u00eb pranoj\u00eb t\u00eb gjith\u00eb trafikun e p\u00ebrdoruesve. Ai do t\u00eb punoj\u00eb s\u00eb bashku me Consul dhe do t\u00eb m\u00ebsoj\u00eb prej tij se ku, n\u00eb cil\u00ebn nod, sipas cilit <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/sq\/lir\/ipv4\/\"   title=\"adres\u00ebn IP\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"585\">adres\u00ebn IP<\/a> ekziston nj\u00eb sh\u00ebrbim specifik q\u00eb korrespondon me nj\u00eb em\u00ebr domaini t\u00eb caktuar. Sh\u00ebrbimet n\u00eb Consul shfaqen nga Nomad. Duke qen\u00eb se k\u00ebto jan\u00eb produkte t\u00eb t\u00eb nj\u00ebjtit kompani, ato jan\u00eb t\u00eb lidhura mir\u00eb me nj\u00ebra-tjetr\u00ebn. Mund t\u00eb thuhet se Nomad, nga vet\u00eb natyra, di t\u00eb regjistroj\u00eb t\u00eb gjitha sh\u00ebrbimet q\u00eb fillohen n\u00eb t\u00eb brenda Consul. <\/p>\n<p>Pasi q\u00eb balancuesi juaj i jasht\u00ebm t\u00eb m\u00ebsoj\u00eb se n\u00eb cilin sh\u00ebrbim duhet t\u00eb d\u00ebrgoj\u00eb trafik, ai e drejton at\u00eb n\u00eb kontejnerin p\u00ebrkat\u00ebs ose n\u00eb disa kontejner\u00eb q\u00eb i p\u00ebrkasin aplikacionit tuaj. Natyrisht, gjat\u00eb k\u00ebtij procesi duhet t\u00eb mendojm\u00eb gjithashtu p\u00ebr sigurin\u00eb. Pavar\u00ebsisht se t\u00eb gjitha sh\u00ebrbimet ekzekutohen n\u00eb t\u00eb nj\u00ebjtin makin\u00eb virtuale n\u00eb konteiner\u00eb, zakonisht k\u00ebrkohet t\u00eb ndalohet qasja e lir\u00eb nga \u00e7do sh\u00ebrbim n\u00eb ndonj\u00eb sh\u00ebrbim tjet\u00ebr. Ne e arrit\u00ebm k\u00ebt\u00eb p\u00ebrmes segmentimit. \u00c7do sh\u00ebrbim ekzekutohej n\u00eb rrjetin e tij virtual, ku ishin t\u00eb p\u00ebrcaktuara rregullat e ruteve dhe rregullat p\u00ebr lejesh\/enjohje p\u00ebr qasje n\u00eb sistemet dhe sh\u00ebrbimet e tjera. Ato mund t\u00eb ishin brenda k\u00ebtij klasteri ose jasht\u00eb tij. P\u00ebr shembull, n\u00ebse d\u00ebshironi t\u00eb ndaloni nj\u00eb sh\u00ebrbim q\u00eb t\u00eb lidhet me nj\u00eb baz\u00eb t\u00eb dh\u00ebnash t\u00eb caktuar, kjo mund t\u00eb b\u00ebhet n\u00ebp\u00ebrmjet segmentimit n\u00eb nivelin e rrjetit. Pra, as p\u00ebr shkak t\u00eb nj\u00eb gabimi, nuk mund t\u00eb lidhesh rast\u00ebsisht nga mjedisi i testimit me baz\u00ebn tuaj t\u00eb dh\u00ebnash t\u00eb prodhimit.<\/p>\n<p>Sa na ka kushtuar procesi i kalimit n\u00eb aspektin e burimeve njer\u00ebzore? <\/p>\n<p>Kalon 5-6 muaj ka zgjatur kalimi i gjith\u00eb kompanis\u00eb n\u00eb Nomad. Ne kaluam sh\u00ebrbim pas sh\u00ebrbimi, por me nj\u00eb rit\u00ebm mjaft t\u00eb shpejt\u00eb. \u00c7do ekip duhej t\u00eb krijonte kontejner\u00ebt e vet p\u00ebr sh\u00ebrbimet. <\/p>\n<p>Ne kemi pranuar nj\u00eb qasje t\u00eb till\u00eb, q\u00eb \u00e7do ekip \u00ebsht\u00eb p\u00ebrgjegj\u00ebs p\u00ebr imazhet docker t\u00eb sistemeve t\u00eb tij vetjakisht. DevOps-i siguron infrastruktur\u00ebn e p\u00ebrbashk\u00ebt t\u00eb nevojshme p\u00ebr vendosjen, q\u00eb do t\u00eb thot\u00eb mb\u00ebshtetje t\u00eb vet\u00eb klasterit, p\u00ebrkrahjen e sistemit CI dhe k\u00ebshtu me radh\u00eb. Dhe n\u00eb at\u00eb koh\u00eb, mbi 60 sisteme ishin transferuar n\u00eb Nomad, duke rezultuar n\u00eb rreth 2,000 kontejner\u00eb. <\/p>\n<p>DevOps-i \u00ebsht\u00eb p\u00ebrgjegj\u00ebs p\u00ebr infrastruktur\u00ebn e p\u00ebrgjithshme t\u00eb gjith\u00e7kaje q\u00eb lidhet me vendosjen, me server\u00ebt. Nd\u00ebrsa \u00e7do ekip zhvillimi \u00ebsht\u00eb p\u00ebrgjegj\u00ebs p\u00ebr realizimin e kontejner\u00ebve p\u00ebr sistemin e tyre specifik, pasi ekipi vet\u00eb e di se \u00e7far\u00eb i nevojitet n\u00eb at\u00eb apo k\u00ebt\u00eb kontejner.<\/p>\n<h1>Arsyet p\u00ebr heqjen dor\u00eb nga Nomad<\/h1>\n<p>\n\u00c7far\u00eb p\u00ebrfitimesh fituam duke kaluar n\u00eb vendosjen me ndihm\u00ebn e Nomad dhe docker-it po ashtu?<\/p>\n<ol>\n<li>Ne<b> siguruam kushte t\u00eb nj\u00ebjta<\/b> p\u00ebr t\u00eb gjitha mjediset. N\u00eb zhvillim, ambientin e QA, para-prodhim, prodhim p\u00ebrdoren t\u00eb nj\u00ebjtat imazhe t\u00eb kontejner\u00ebve, me t\u00eb nj\u00ebjtat var\u00ebsi. Si pasoj\u00eb, ju nuk keni pothuajse asnj\u00eb shans q\u00eb n\u00eb prodhim t\u00eb dal\u00eb ndonj\u00eb gj\u00eb q\u00eb keni testuar m\u00eb par\u00eb lokalisht ose n\u00eb ambientin e testimit. <\/li>\n<li>Po ashtu, ne e zbuluam se mjafton <b>leht\u00eb t\u00eb shtoni nj\u00eb sh\u00ebrbim t\u00eb ri<\/b>. \u00c7do sistem i ri nga k\u00ebndv\u00ebshtrimi i shp\u00ebrndarjes fillon shum\u00eb thjesht. Mjafton t\u00eb shkoni n\u00eb depo, q\u00eb ruan konfigurimet, t\u00eb shtoni aty nj\u00eb konfigurim t\u00eb ri p\u00ebr sistemin tuaj, dhe jeni gjith\u00e7ka gati. Ju mund t\u00eb shp\u00ebrndani sistemin tuaj n\u00eb prodhim pa p\u00ebrpjekje t\u00eb tjera nga DevOps. <\/li>\n<li>T\u00eb gjitha <b>skedar\u00ebt e konfigurimit<\/b> n\u00eb nj\u00eb depo t\u00eb p\u00ebrbashk\u00ebt <b>u vun\u00eb n\u00eb rregull<\/b>. N\u00eb momentin kur po shp\u00ebrndanim sistemet tona duke p\u00ebrdorur <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/sq\/vps\/\"   title=\"server\u00ebve virtual\u00eb\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"791\">server\u00ebve virtual\u00eb<\/a>, ne kemi p\u00ebrdorur Ansible, ku konfigurimet ndodheshin n\u00eb t\u00eb nj\u00ebjtin depo. Megjithat\u00eb, p\u00ebr shumic\u00ebn e zhvilluesve, kishte disa v\u00ebshtir\u00ebsi p\u00ebr t\u00eb punuar me t\u00eb. K\u00ebtu, volumi i konfigurimeve dhe kodit q\u00eb ju nevojitet p\u00ebr t\u00eb shp\u00ebrndar\u00eb sh\u00ebrbimin ka r\u00ebn\u00eb n\u00eb m\u00ebnyr\u00eb t\u00eb konsiderueshme. Plus, p\u00ebr DevOps \u00ebsht\u00eb shum\u00eb e leht\u00eb t\u00eb ndryshoj\u00eb ose t\u00eb modifikoj\u00eb at\u00eb. N\u00eb rastin e kalimeve, p\u00ebr shembull, p\u00ebr nj\u00eb version t\u00eb ri t\u00eb Nomad, ata mund t\u00eb marrin dhe t\u00eb p\u00ebrdit\u00ebsojn\u00eb masivisht t\u00eb gjitha skedar\u00ebt operativ\u00eb q\u00eb ndodhen n\u00eb t\u00eb nj\u00ebjtin vend.<\/li>\n<\/ol>\n<p>\nPor ne gjithashtu u p\u00ebrball\u00ebm me disa mang\u00ebsi: <\/p>\n<p>Doli se ne <b>nuk arrit\u00ebm t\u00eb arrijm\u00eb pa probleme n\u00eb shp\u00ebrndarje <\/b>n\u00eb rastin e Nomad. Kur konteiner\u00ebt u lan\u00e7uan nga kushte t\u00eb ndryshme, mund t\u00eb ndodhte q\u00eb ai t\u00eb ishte aktiv, dhe Nomad e perceptonte at\u00eb si gati p\u00ebr t\u00eb pranuar trafik. Kjo ndodhte para se aplikacioni brenda tij t\u00eb kishte koh\u00eb t\u00eb aktivizohej. P\u00ebr k\u00ebt\u00eb arsye, sistemi fillonte t\u00eb jepte gabime 500, sepse trafiku fillonte t\u00eb drejtohej n\u00eb konteinerin q\u00eb ende nuk ishte gati ta priste. <\/p>\n<p>Ne p\u00ebrjetuam disa <b>defekte<\/b>. Problemi m\u00eb i r\u00ebnd\u00ebsish\u00ebm \u00ebsht\u00eb se Nomad nuk e menaxhon mir\u00eb nj\u00eb klaster t\u00eb madh n\u00ebse keni shum\u00eb sisteme dhe kontejner\u00eb. Kur d\u00ebshironi t\u00eb nxirrni n\u00eb sh\u00ebrbim nj\u00eb nga server\u00ebt q\u00eb \u00ebsht\u00eb pjes\u00eb e klasterit Nomad, ka nj\u00eb probabilitet t\u00eb konsideruesh\u00ebm q\u00eb klasteri t\u00eb ndjehet keq dhe t\u00eb shp\u00ebrb\u00ebhet. Disa kontejner\u00eb mund, p\u00ebr shembull, t\u00eb bien dhe t\u00eb mos ngrihen m\u00eb \u2014 kjo do t'ju kushtoj\u00eb shum\u00eb, n\u00ebse t\u00eb gjith\u00eb sistemet tuaja prodhuese ndodhen n\u00eb klasterin e menaxhuar nga Nomad. <\/p>\n<p>Prandaj, ne vendos\u00ebm t\u00eb mendojm\u00eb se ku duam t\u00eb shkojm\u00eb m\u00eb tej. N\u00eb at\u00eb koh\u00eb, ne filluam t\u00eb kuptojm\u00eb m\u00eb mir\u00eb se \u00e7far\u00eb donim t\u00eb arrinim. Dometh\u00ebn\u00eb: kemi nevoj\u00eb p\u00ebr besueshm\u00ebri, pak m\u00eb shum\u00eb funksionalitet se sa ofron Nomad, dhe nj\u00eb sistem m\u00eb t\u00eb pjekur dhe m\u00eb t\u00eb q\u00ebndruesh\u00ebm. <\/p>\n<p>N\u00eb k\u00ebt\u00eb kuptim, ne zgjedh\u00ebm Kubernetes si platform\u00ebn m\u00eb t\u00eb njohur p\u00ebr t\u00eb drejtuar klaster\u00ebt. Sidomos duke marr\u00eb parasysh se madh\u00ebsia dhe numri i kontejner\u00ebve tan\u00eb ishin mjaft t\u00eb m\u00ebdha. P\u00ebr k\u00ebt\u00eb q\u00ebllim, Kubernetes na duket sistemi m\u00eb i p\u00ebrshtatsh\u00ebm nga ato q\u00eb kishim shqyrtuar. <\/p>\n<h1>Kalimi n\u00eb Kubernetes<\/h1>\n<p>\nDo t\u00eb flas pak rreth koncept\u00ebve t\u00eb baz\u00ebs s\u00eb Kubernetes dhe se si ndryshojn\u00eb nga Nomad. <\/p>\n<p><img decoding=\"async\" alt=\"Depolimi i aplikacioneve n\u00eb VM, Nomad dhe Kubernetes.\" src=\"\/wp-content\/uploads\/2019\/05\/5723a69309f387e6cc6c5959b62ca18b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nS\u00eb pari, koncepti m\u00eb themelor n\u00eb Kubernetes \u00ebsht\u00eb koncepti i pod. <b>Pod<\/b> \u2014 \u00ebsht\u00eb nj\u00eb grup i nj\u00eb ose m\u00eb shum\u00eb kontejner\u00ebve q\u00eb gjithmon\u00eb fillojn\u00eb s\u00eb bashku. Dhe ata punojn\u00eb sikur t\u00eb ishin gjithmon\u00eb n\u00eb nj\u00eb makin\u00eb virtuale. Ata jan\u00eb t\u00eb aksesuesh\u00ebm nj\u00ebri nga tjetri me adres\u00ebn IP 127.0.0.1 n\u00eb porta t\u00eb ndryshme. <\/p>\n<p>Supozoni se keni nj\u00eb aplikacion PHP q\u00eb p\u00ebrb\u00ebhet nga nginx dhe php-fpm \u2013 nj\u00eb skem\u00eb klasike. N\u00eb t\u00eb gjitha gjasat, do t\u00eb d\u00ebshironit q\u00eb kontejner\u00ebt nginx dhe php-fpm t\u00eb ishin gjithmon\u00eb s\u00eb bashku. Kubernetes lejon q\u00eb kjo t\u00eb arrihet duke i p\u00ebrshkruar ato si nj\u00eb pod t\u00eb p\u00ebrbashk\u00ebt. Kjo \u00ebsht\u00eb ajo q\u00eb ne nuk mund ta marrim me Nomad.<\/p>\n<p>Koncepti i dyt\u00eb \u00ebsht\u00eb <b>deployment<\/b>. Faktikisht, pod vet\u00eb \u00ebsht\u00eb nj\u00eb gj\u00eb efemere, ai nis dhe zhduket. A d\u00ebshironi t\u00eb vrisni t\u00eb gjitha kontejner\u00ebt tuaj t\u00eb m\u00ebparsh\u00ebm dhe pastaj t\u00eb nisni menj\u00ebher\u00eb versionet e reja, apo do t\u00eb d\u00ebshironit t'i lansoni ata gradualisht \u2013 pik\u00ebrisht p\u00ebr k\u00ebt\u00eb proces p\u00ebrgjigjet koncepti i deployment. Ai p\u00ebrshkruan se si i deplojoni pod\u00ebt tuaj, n\u00eb cilat sasi dhe si t'i p\u00ebrdit\u00ebsoni. <\/p>\n<p>Koncepti i tret\u00eb \u00ebsht\u00eb <b>service<\/b>. Sh\u00ebrbimi juaj \u00ebsht\u00eb n\u00eb thelb sistemi juaj, i cili pranon nj\u00eb trafik dhe e drejton at\u00eb n\u00eb nj\u00eb ose disa pod-e, q\u00eb i p\u00ebrkasin sh\u00ebrbimit tuaj. Kjo do t\u00eb thot\u00eb se ai ju lejon t\u00eb deklaroni se gjith\u00eb trafiku hyr\u00ebs p\u00ebr nj\u00eb sh\u00ebrbim t\u00eb caktuar me nj\u00eb em\u00ebr t\u00eb caktuar duhet t\u00eb d\u00ebrgohet n\u00eb k\u00ebto pod-e specifike. P\u00ebr m\u00eb tep\u00ebr, ai ju siguron balancimin e trafikut. K\u00ebshtu, mund t\u00eb nisni dy pod-e t\u00eb aplikacionit tuaj, dhe i gjith\u00eb trafiku hyr\u00ebs do t\u00eb balancohet nj\u00eb m\u00ebnyr\u00eb t\u00eb barabart\u00eb midis pod-eve t\u00eb lidhura me k\u00ebt\u00eb sh\u00ebrbim.<\/p>\n<p>Dhe koncepti i kat\u00ebrt themelor \u2014 <b>Ingress<\/b>. Ky \u00ebsht\u00eb nj\u00eb sh\u00ebrbim q\u00eb ekzekutohet n\u00eb klasterin Kubernetes. Ai funksionon si nj\u00eb balancues ngarkese i jasht\u00ebm, i cili merr t\u00eb gjitha k\u00ebrkesat. Fal\u00eb API-s\u00eb s\u00eb Kubernetes Ingress, mund t\u00eb p\u00ebrcaktohet se ku duhet d\u00ebrguar k\u00ebto k\u00ebrkesa. P\u00ebr m\u00eb tep\u00ebr, ai e b\u00ebn k\u00ebt\u00eb n\u00eb nj\u00eb m\u00ebnyr\u00eb shum\u00eb fleksibile. Mund t\u00eb thoni se t\u00eb gjitha k\u00ebrkesat p\u00ebr k\u00ebt\u00eb host dhe k\u00ebt\u00eb URL d\u00ebrgohen n\u00eb k\u00ebt\u00eb sh\u00ebrbim. Nd\u00ebrsa k\u00ebto k\u00ebrkesa, q\u00eb vijn\u00eb p\u00ebr k\u00ebt\u00eb host dhe nj\u00eb URL tjet\u00ebr, d\u00ebrgohen n\u00eb nj\u00eb sh\u00ebrbim tjet\u00ebr. <\/p>\n<p>Ajo m\u00eb e mrekullueshme p\u00ebr ata q\u00eb krijojn\u00eb aplikacione \u00ebsht\u00eb se ju jeni n\u00eb gjendje t'i menaxhoni k\u00ebto gjith\u00e7ka vet\u00eb. Duke vendosur konfigurimin e Ingress, mund t\u00eb d\u00ebrgoni gjith\u00eb trafikun q\u00eb vjen n\u00eb nj\u00eb API t\u00eb caktuar n\u00eb konteiner t\u00eb ve\u00e7ant\u00eb, t\u00eb shkruar, p\u00ebr shembull, n\u00eb Go. Nd\u00ebrsa ky trafik, q\u00eb vjen n\u00eb t\u00eb nj\u00ebjt\u00ebn domen, por n\u00eb nj\u00eb URL tjet\u00ebr, d\u00ebrgohet n\u00eb konteiner t\u00eb shkruar n\u00eb PHP, ku ka shum\u00eb logjik\u00eb, por ato nuk jan\u00eb shum\u00eb t\u00eb shpejta.<\/p>\n<p>N\u00ebse krahasoni t\u00eb gjitha k\u00ebto koncepte me Nomad, mund t\u00eb thuhet se tre konceptet e para \u2013 jan\u00eb s\u00eb bashku nj\u00eb Sh\u00ebrbim. Nd\u00ebrsa koncepti i fundit mungon n\u00eb Nomad. Ne e kemi p\u00ebrdorur nj\u00eb balancues t\u00eb jasht\u00ebm: mund t\u00eb jet\u00eb haproxy, nginx, nginx+ etj. N\u00eb rastin e kubit, nuk keni nevoj\u00eb ta futni k\u00ebt\u00eb koncept t\u00eb shtuar ve\u00e7mas. Megjithat\u00eb, n\u00ebse shikoni brenda Ingress, at\u00ebher\u00eb \u00ebsht\u00eb ose nginx, ose haproxy, ose traefik, por si\u00e7 do t\u00eb thoshte, e nd\u00ebrtuar brenda Kubernetes. <\/p>\n<p>T\u00eb gjitha konceptet q\u00eb p\u00ebrmenda jan\u00eb n\u00eb thelb burime q\u00eb ekzistojn\u00eb brenda nj\u00eb klasteri Kubernetes. P\u00ebr p\u00ebrshkrimin e tyre n\u00eb kube, p\u00ebrdoret formati yaml, m\u00eb i lexuesh\u00ebm dhe i njohur se skedar\u00ebt HCL n\u00eb rastin e Nomad. Por strukturorisht, ata p\u00ebrshkruajn\u00eb p\u00ebr shembull p\u00ebr podin t\u00eb nj\u00ebjt\u00ebn gj\u00eb. Ata thon\u00eb \u2013 dua t\u00eb deplojoj disa pod-e aty, me imazhe t\u00eb caktuara, n\u00eb nj\u00eb num\u00ebr t\u00eb caktuar. <\/p>\n<p><img decoding=\"async\" alt=\"Depolimi i aplikacioneve n\u00eb VM, Nomad dhe Kubernetes.\" src=\"\/wp-content\/uploads\/2019\/05\/13836e7474b377a5e6b05112a53bfedd.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nP\u00ebrve\u00e7 k\u00ebsaj, ne kuptuam se nuk donim t\u00eb krijonim me dor\u00eb \u00e7do burim t\u00eb ve\u00e7ant\u00eb: deployments, sh\u00ebrbime, Ingress dhe t\u00eb tjera. N\u00eb vend t\u00eb k\u00ebsaj, ne donim q\u00eb gjat\u00eb depolimit t\u00eb p\u00ebrshkruanim \u00e7do sistem tonin q\u00eb ekzistonte n\u00eb terma Kubernetes, n\u00eb m\u00ebnyr\u00eb q\u00eb t\u00eb mos ishte e nevojshme t\u00eb rind\u00ebrtonim manualisht t\u00eb gjitha var\u00ebsit\u00eb e nevojshme t\u00eb burimeve n\u00eb rendin e duhur. Si nj\u00eb sistem q\u00eb na lejoj rreth k\u00ebsaj ishte zgjedhur Helm. <\/p>\n<h1>Koncepte kryesore n\u00eb Helm<\/h1>\n<p>\nHelm \u00ebsht\u00eb <b>menaxheri i paketave<\/b> p\u00ebr Kubernetes. Ai \u00ebsht\u00eb shum\u00eb i ngjash\u00ebm me m\u00ebnyr\u00ebn si funksionojn\u00eb menaxher\u00ebt e paketave n\u00eb gjuh\u00ebt e programimit. Ata ju lejojn\u00eb t\u00eb ruani nj\u00eb sh\u00ebrbim, q\u00eb p\u00ebrb\u00ebhet, p\u00ebr shembull, nga deployment nginx, deployment php-fpm, konfigurimi p\u00ebr Ingress, configmaps (kjo \u00ebsht\u00eb nj\u00eb entitet q\u00eb ju lejon t\u00eb p\u00ebrcaktoni env dhe parametra t\u00eb tjer\u00eb p\u00ebr sistemin tuaj) n\u00eb form\u00ebn e ashtuquajturave chart. N\u00eb k\u00ebt\u00eb m\u00ebnyr\u00eb, Helm <b>punon mbi Kubernetes<\/b>. Dometh\u00ebn\u00eb, nuk \u00ebsht\u00eb ndonj\u00eb sistem q\u00eb q\u00ebndron jasht\u00eb, p\u00ebrkundrazi, \u00ebsht\u00eb nj\u00eb sh\u00ebrbim tjet\u00ebr q\u00eb ekzekutohet brenda kubit. Ju komunikoni me t\u00eb p\u00ebrmes API-s\u00eb s\u00eb tij p\u00ebrmes komand\u00ebs n\u00eb konsol\u00eb. Komforti dhe bukuria e tij q\u00ebndron n\u00eb faktin se, edhe n\u00eb se helm d\u00ebsht\u00ebn ose e hiqni at\u00eb nga klasteri, sh\u00ebrbimet tuaja nuk do t\u00eb zhduken, pasi helm sh\u00ebrben n\u00eb thelb vet\u00ebm p\u00ebr lan\u00e7imin e sistemit. P\u00ebr funksionimin dhe gjendjen e sh\u00ebrbimeve kujdeset vet\u00eb Kubernetes. <\/p>\n<p>Po ashtu, ne kuptuam se <b>tematizimi<\/b>, t\u00eb cil\u00ebn deri m\u00eb tani ishim t\u00eb detyruar ta b\u00ebnim vet\u00eb p\u00ebrmes integrimit t\u00eb jinja n\u00eb konfigurimet tona, \u00ebsht\u00eb nj\u00eb nga funksionalitetet kryesore t\u00eb helm. T\u00eb gjitha konfigurimet q\u00eb krijoni p\u00ebr sistemet tuaja ruhen n\u00eb helm si shabllone, t\u00eb ngjashme pak me jinja, por n\u00eb t\u00eb v\u00ebrtet\u00eb p\u00ebrdorin shabllonizimin e gjuh\u00ebs Go, n\u00eb t\u00eb cil\u00ebn \u00ebsht\u00eb shkruar helm, ashtu si Kubernetes. <\/p>\n<p>Helm na shton disa koncepte t\u00eb tjera shtes\u00eb. <\/p>\n<p><b>Chart<\/b> \u2014 \u00ebsht\u00eb p\u00ebrshkrimi i sh\u00ebrbimit tuaj. N\u00eb menaxher\u00eb t\u00eb tjer\u00eb paketash do ta quajn\u00eb paket\u00eb, bundle ose di\u00e7ka t\u00eb ngjashme. K\u00ebtu quhet chart. <\/p>\n<p><b>Values <\/b>\u2013 jan\u00eb variablat q\u00eb d\u00ebshironi t\u00eb p\u00ebrdorni p\u00ebr t\u00eb nd\u00ebrtuar konfigurimet tuaja nga shabllon\u00ebt. <\/p>\n<p><b>Release<\/b>. P\u00ebr \u00e7do her\u00eb sh\u00ebrbimi q\u00eb \u00ebsht\u00eb vendosur p\u00ebrmes helm merr nj\u00eb version incremental t\u00eb l\u00ebshimit. Helm e mban mend se \u00e7far\u00eb ka qen\u00eb konfigurimi i sh\u00ebrbimit gjat\u00eb l\u00ebshimeve t\u00eb m\u00ebparshme. Prandaj, n\u00ebse duhet t\u00eb riktheheni, mjafton t\u00eb ekzekutoni komand\u00ebn helm callback, duke i treguar versionin e m\u00ebparsh\u00ebm t\u00eb l\u00ebshimit. Edhe n\u00ebse n\u00eb momentin e rikthimit konfigurimi p\u00ebrkat\u00ebs n\u00eb repositorin tuaj nuk \u00ebsht\u00eb i disponuesh\u00ebm, helm prap\u00eb e mban mend se \u00e7far\u00eb ka qen\u00eb dhe do ta rikthej\u00eb sistemin tuaj n\u00eb gjendjen n\u00eb t\u00eb cil\u00ebn ishte gjat\u00eb l\u00ebshimit t\u00eb m\u00ebparsh\u00ebm. <\/p>\n<p>N\u00eb rastin kur p\u00ebrdorim helm, konfigurimet e zakonshme p\u00ebr Kubernetes gjithashtu shnd\u00ebrrohen n\u00eb shabllone, ku ka mund\u00ebsi p\u00ebr t\u00eb p\u00ebrdorur variabla, funksione dhe p\u00ebr t\u00eb aplikuar operacione t\u00eb kusht\u00ebzuara. K\u00ebshtu, mund t\u00eb krijoni konfigurimin e sh\u00ebrbimit tuaj n\u00eb var\u00ebsi t\u00eb mjedisit.<\/p>\n<p><img decoding=\"async\" alt=\"Depolimi i aplikacioneve n\u00eb VM, Nomad dhe Kubernetes.\" src=\"\/wp-content\/uploads\/2019\/05\/b70ba431211038eacf911ba3aee22363.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00eb praktik\u00eb, ne vendos\u00ebm t\u00eb veprojm\u00eb pak ndryshe nga ajo q\u00eb b\u00ebm\u00eb n\u00eb rastin e Nomad. Ndryshe nga Nomad, ku n\u00eb nj\u00eb depo ruheshin dhe konfigurimet p\u00ebr vendosjen, si dhe variablat n q\u00eb ne na duheshin p\u00ebr t\u00eb vendosur sh\u00ebrbimin ton\u00eb, k\u00ebtu ne vendos\u00ebm t'i ndajm\u00eb ato n\u00eb dy depote t\u00eb ve\u00e7anta. N\u00eb depo \u00abdeploy\u00bb ruhen vet\u00ebm variablat n q\u00eb jan\u00eb t\u00eb nevojsh\u00ebm p\u00ebr vendosjen, nd\u00ebrsa n\u00eb depo \u00abhelm\u00bb ruhen konfigurimet apo chartet.<\/p>\n<p><img decoding=\"async\" alt=\"Depolimi i aplikacioneve n\u00eb VM, Nomad dhe Kubernetes.\" src=\"\/wp-content\/uploads\/2019\/05\/4add11a8f9d9a9244127f0b07d027fa2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00c7far\u00eb na dha kjo? <\/p>\n<p>Megjith\u00ebse n\u00eb vet\u00eb skedar\u00ebt e konfigurimit ne nuk ruajm\u00eb ndonj\u00eb t\u00eb dh\u00ebn\u00eb q\u00eb \u00ebsht\u00eb v\u00ebrtet e ndjeshme. P\u00ebr shembull, fjal\u00ebkalimet p\u00ebr bazat e t\u00eb dh\u00ebnave. Ato ruhen si sekrete n\u00eb Kubernetes, por megjithat\u00eb, aty ka disa gj\u00ebra t\u00eb ve\u00e7anta, p\u00ebr t\u00eb cilat ne nuk duam t\u00eb japim akses p\u00ebr t\u00eb gjith\u00eb. Prandaj, aksesin n\u00eb depot \u00abdeploy\u00bb \u00ebsht\u00eb m\u00eb i kufizuar, nd\u00ebrsa depoja \u00abhelm\u00bb p\u00ebrmban thjesht p\u00ebrshkrimin e sh\u00ebrbimit. P\u00ebr k\u00ebt\u00eb arsye, atij mund t'i jepet akses n\u00eb m\u00ebnyr\u00eb t\u00eb sigurt m\u00eb shum\u00eb njer\u00ebzve. <\/p>\n<p>Duke kemi jo vet\u00ebm prodhimin, por edhe ambiente t\u00eb tjera, kjo ndarje na lejon t\u00eb rip\u00ebrdorim helm-chart-et tona p\u00ebr t\u00eb instaluar sh\u00ebrbime jo vet\u00ebm n\u00eb prodhim, por edhe, p\u00ebr shembull, n\u00eb ambientin QA. Edhe p\u00ebr ta krijuar ato lokalisht, duke p\u00ebrdorur <i>Minikube<\/i> \u2014 kjo \u00ebsht\u00eb nj\u00eb mjet p\u00ebr ekzekutimin lokal t\u00eb Kubernetes. <\/p>\n<p>Brenda \u00e7do repozitori e kemi b\u00ebr\u00eb ndarjen n\u00eb drejtoni t\u00eb ve\u00e7anta p\u00ebr \u00e7do sh\u00ebrbim. K\u00ebshtu, brenda \u00e7do direktorie ndodhin shabllone t\u00eb lidhura me chart-in p\u00ebrkat\u00ebs dhe q\u00eb p\u00ebrshkruajn\u00eb burimet q\u00eb nevojiten p\u00ebr t\u00eb instaluar sistemin ton\u00eb. N\u00eb repozitorin \u2018deploy\u2019 kemi mbetur vet\u00ebm me en\u00eb. N\u00eb k\u00ebt\u00eb rast, ne nuk e kemi p\u00ebrdorur shabllonizimin me jinja, sepse helm ofron vet\u00eb shabllonizimin nga kutia \u2013 kjo \u00ebsht\u00eb nj\u00eb nga funksionet e tij kryesore. <\/p>\n<p>Ne kemi l\u00ebn\u00eb nj\u00eb skript p\u00ebr deploy \u2013 deploy.sh, i cili e thjeshton dhe stanardizon nisjen p\u00ebr implementimin me helm. K\u00ebshtu, p\u00ebr k\u00ebdo q\u00eb do t\u00eb b\u00ebj\u00eb implementimin, nd\u00ebrfaqja e implementimit duket nj\u00ebsoj si\u00e7 ishte n\u00eb rastin e implementimit p\u00ebrmes Nomad. I nj\u00ebjti deploy.sh, emri i sh\u00ebrbimit tuaj dhe vendi ku d\u00ebshironi ta implementoni. Kjo rezulton n\u00eb aktivizimin e helm brenda. Ai, nga ana e tij, mbledh konfigurime nga shabllonet, z\u00ebvend\u00ebson n\u00eb to skedar\u00ebt e nevojsh\u00ebm t\u00eb values, e m\u00eb pas implementon, duke i d\u00ebrguar n\u00eb Kubernetes. <\/p>\n<h1>P\u00ebrfundimet<\/h1>\n<p>\nSh\u00ebrbimi Kubernetes duket m\u00eb i komplikuar se Nomad. <\/p>\n<p><img decoding=\"async\" alt=\"Depolimi i aplikacioneve n\u00eb VM, Nomad dhe Kubernetes.\" src=\"\/wp-content\/uploads\/2019\/05\/5a9b5636ab4721acde096fea986ba38b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nK\u00ebtu, trafiku i daljes vjen n\u00eb Ingress. Ky \u00ebsht\u00eb pik\u00ebrisht kontrolluesi i p\u00ebrparm\u00eb q\u00eb merr t\u00eb gjitha k\u00ebrkesat dhe m\u00eb pas i d\u00ebrgon ato n\u00eb sh\u00ebrbimet p\u00ebrkat\u00ebse sipas t\u00eb dh\u00ebnave t\u00eb k\u00ebrkes\u00ebs. Ai i p\u00ebrcakton ato n\u00eb baz\u00eb t\u00eb konfigurimeve, t\u00eb cilat jan\u00eb pjes\u00eb e p\u00ebrshkrimit t\u00eb aplikacionit tuaj n\u00eb helm dhe t\u00eb cilat zhvilluesit i vendosin vet\u00eb. Sh\u00ebrbimi d\u00ebrgon k\u00ebrkesat n\u00eb pod-et e tij, pra n\u00eb kontejner\u00ebt specifik\u00eb, duke balancuar trafikun e ardhsh\u00ebm mes t\u00eb gjith\u00eb kontejner\u00ebve q\u00eb i p\u00ebrkasin k\u00ebtij sh\u00ebrbimi. Sigurisht, nuk duhet t\u00eb harrojm\u00eb se nga siguria n\u00eb nivel t\u00eb rrjetit, ne nuk duhet t\u00eb largohemi. Prandaj, n\u00eb klasterin Kubernetes, funksionon segmentimi, i cili \u00ebsht\u00eb i bazuar n\u00eb etiketimin. T\u00eb gjith\u00eb sh\u00ebrbimet kan\u00eb etiketa t\u00eb caktuara, t\u00eb cilat lidhen me t\u00eb drejtat e aksesit t\u00eb sh\u00ebrbimeve n\u00eb burime t\u00eb ndryshme brenda ose jasht\u00eb klasterit. <\/p>\n<p>Gjat\u00eb migrimit, ne pam\u00eb se Kubernetes ka t\u00eb gjitha mund\u00ebsit\u00eb e Nomad, q\u00eb kemi p\u00ebrdorur m\u00eb par\u00eb, dhe gjithashtu shton shum\u00eb t\u00eb reja. Mund t\u00eb zgjerohet p\u00ebrmes plugin-eve, dhe n\u00eb t\u00eb v\u00ebrtet\u00eb p\u00ebrmes llojeve t\u00eb personalizuara t\u00eb burimeve. Kjo do t\u00eb thot\u00eb se keni mund\u00ebsin\u00eb jo vet\u00ebm t\u00eb p\u00ebrdorni di\u00e7ka q\u00eb vjen me Kubernetes nga kutia, por t\u00eb krijoni burimin tuaj dhe sh\u00ebrbimin q\u00eb do ta lexoj\u00eb burimin tuaj. Kjo ofron mund\u00ebsi t\u00eb shtuara p\u00ebr zgjerimin e sistemit tuaj pa pasur nevoj\u00eb p\u00ebr rinstalim t\u00eb Kubernetes dhe pa nevoj\u00eb p\u00ebr ndryshime. <\/p>\n<p>Nj\u00eb shembull i till\u00eb p\u00ebrdorimi \u00ebsht\u00eb Prometheus, i cili ekzekutohet brenda klasterit Kubernetes. P\u00ebr ta filluar mbledhjen e metrikave nga nj\u00eb sh\u00ebrbim t\u00eb caktuar, ne duhet t\u00eb shtojm\u00eb n\u00eb p\u00ebrshkrimin e sh\u00ebrbimit nj\u00eb tip t\u00eb shtes\u00eb burimi, t\u00eb ashtuquajturin sh\u00ebrbim-monitor. Prometheus, p\u00ebr shkak se di t\u00eb lexoj\u00eb dhe \u00ebsht\u00eb aktivizuar n\u00eb Kubernetes, fillon automatikisht t\u00eb mbledh\u00eb metrika nga sistemi i ri. Kjo \u00ebsht\u00eb mjaft e p\u00ebrshtatshme. <\/p>\n<p>Deployimi i par\u00eb q\u00eb b\u00ebm\u00eb n\u00eb Kubernetes ishte n\u00eb mars t\u00eb vitit 2018. Dhe gjat\u00eb k\u00ebtij koh\u00eb, kurr\u00eb nuk kemi pasur probleme me t\u00eb. Ai funksionon mjaft stabilisht pa defekte t\u00eb r\u00ebnd\u00ebsishme. P\u00ebr m\u00eb tep\u00ebr, mund ta zgjerojm\u00eb m\u00eb tej. Aktualisht, kemi mjaft mund\u00ebsi brenda tij dhe ne na p\u00eblqen shum\u00eb ritmi i zhvillimit t\u00eb Kubernetes. N\u00eb k\u00ebt\u00eb moment, m\u00eb shum\u00eb se 3000 konteiner\u00eb jan\u00eb n\u00eb Kubernetes. Klasteri p\u00ebrmban disa Node. Ai \u00ebsht\u00eb menaxhuar, stabil dhe shum\u00eb i kontrolluar.<br \/>\n<br \/>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/lamoda\/blog\/451644\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041f\u0430\u0432\u0435\u043b \u0410\u0433\u0430\u043b\u0435\u0446\u043a\u0438\u0439. \u042f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0442\u0438\u043c\u043b\u0438\u0434\u043e\u043c \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 Lamoda. \u0412 2018 \u0433\u043e\u0434\u0443 \u044f \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u043b \u043d\u0430 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 HighLoad++, \u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0445\u043e\u0447\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0443 \u0441\u0432\u043e\u0435\u0433\u043e \u0434\u043e\u043a\u043b\u0430\u0434\u0430. \u041c\u043e\u044f \u0442\u0435\u043c\u0430 \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u043e\u043f\u044b\u0442\u0443 \u043d\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u043f\u043e \u0434\u0435\u043f\u043b\u043e\u044e \u0441\u0438\u0441\u0442\u0435\u043c \u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0432 \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u044b. \u041d\u0430\u0447\u0438\u043d\u0430\u044f \u043e\u0442 \u043d\u0430\u0448\u0438\u0445 \u0434\u043e\u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0432\u0440\u0435\u043c\u0435\u043d, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u0434\u0435\u043f\u043b\u043e\u0438\u043b\u0438 \u0432\u0441\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":25343,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-33654","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=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041f\u0430\u0432\u0435\u043b \u0410\u0433\u0430\u043b\u0435\u0446\u043a\u0438\u0439. \u042f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0442\u0438\u043c\u043b\u0438\u0434\u043e\u043c \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 Lamoda. \u0412 2018 \u0433\u043e\u0434\u0443 \u044f \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u043b \u043d\u0430 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 HighLoad++, \u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0445\u043e\u0447\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0443 \u0441\u0432\u043e\u0435\u0433\u043e \u0434\u043e\u043a\u043b\u0430\u0434\u0430. \u041c\u043e\u044f \u0442\u0435\u043c\u0430 \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u043e\u043f\u044b\u0442\u0443 \u043d\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u043f\u043e \u0434\u0435\u043f\u043b\u043e\u044e \u0441\u0438\u0441\u0442\u0435\u043c \u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0432 \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u044b. \u041d\u0430\u0447\u0438\u043d\u0430\u044f \u043e\u0442 \u043d\u0430\u0448\u0438\u0445 \u0434\u043e\u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0432\u0440\u0435\u043c\u0435\u043d, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u0434\u0435\u043f\u043b\u043e\u0438\u043b\u0438 \u0432\u0441\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b\" \/>\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\/sq\/blog\/administrirovanie\/deploj-prilozhenij-v-vm-nomad-i-kubernetes\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\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\u0414\u0435\u043f\u043b\u043e\u0439 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 VM, Nomad \u0438 Kubernetes | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041f\u0430\u0432\u0435\u043b \u0410\u0433\u0430\u043b\u0435\u0446\u043a\u0438\u0439. \u042f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0442\u0438\u043c\u043b\u0438\u0434\u043e\u043c \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 Lamoda. \u0412 2018 \u0433\u043e\u0434\u0443 \u044f \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u043b \u043d\u0430 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 HighLoad++, \u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0445\u043e\u0447\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0443 \u0441\u0432\u043e\u0435\u0433\u043e \u0434\u043e\u043a\u043b\u0430\u0434\u0430. \u041c\u043e\u044f \u0442\u0435\u043c\u0430 \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u043e\u043f\u044b\u0442\u0443 \u043d\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u043f\u043e \u0434\u0435\u043f\u043b\u043e\u044e \u0441\u0438\u0441\u0442\u0435\u043c \u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0432 \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u044b. \u041d\u0430\u0447\u0438\u043d\u0430\u044f \u043e\u0442 \u043d\u0430\u0448\u0438\u0445 \u0434\u043e\u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0432\u0440\u0435\u043c\u0435\u043d, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u0434\u0435\u043f\u043b\u043e\u0438\u043b\u0438 \u0432\u0441\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/deploj-prilozhenij-v-vm-nomad-i-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=\"2019-10-31T18:53:58+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:53:58+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\udd47Deployimi i aplikacioneve n\u00eb VM, Nomad dhe Kubernetes | ProHoster","description":"P\u00ebrsh\u00ebndetje t\u00eb gjith\u00ebve! Un\u00eb quhem Pavel Agaletski. Punoj si lider ekipi n\u00eb grupin q\u00eb zhvillon sistemin e d\u00ebrgesave p\u00ebr Lamoda. N\u00eb vitin 2018, kam folur n\u00eb konferenc\u00ebn HighLoad++, dhe sot dua t\u00eb paraqes transkriptin e fjalimit tim. Tema ime \u00ebsht\u00eb p\u00ebr p\u00ebrvoj\u00ebn e kompanis\u00eb son\u00eb n\u00eb deployimin e sistemeve dhe sh\u00ebrbimeve n\u00eb ambiente t\u00eb ndryshme. Duke filluar nga koha jon\u00eb parahistorike, kur deployonim t\u00eb gjitha sistemet.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/deploj-prilozhenij-v-vm-nomad-i-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","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\u0414\u0435\u043f\u043b\u043e\u0439 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 VM, Nomad \u0438 Kubernetes | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041f\u0430\u0432\u0435\u043b \u0410\u0433\u0430\u043b\u0435\u0446\u043a\u0438\u0439. \u042f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0442\u0438\u043c\u043b\u0438\u0434\u043e\u043c \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 Lamoda. \u0412 2018 \u0433\u043e\u0434\u0443 \u044f \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u043b \u043d\u0430 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 HighLoad++, \u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0445\u043e\u0447\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0443 \u0441\u0432\u043e\u0435\u0433\u043e \u0434\u043e\u043a\u043b\u0430\u0434\u0430. \u041c\u043e\u044f \u0442\u0435\u043c\u0430 \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u043e\u043f\u044b\u0442\u0443 \u043d\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u043f\u043e \u0434\u0435\u043f\u043b\u043e\u044e \u0441\u0438\u0441\u0442\u0435\u043c \u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0432 \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u044b. \u041d\u0430\u0447\u0438\u043d\u0430\u044f \u043e\u0442 \u043d\u0430\u0448\u0438\u0445 \u0434\u043e\u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0432\u0440\u0435\u043c\u0435\u043d, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u0434\u0435\u043f\u043b\u043e\u0438\u043b\u0438 \u0432\u0441\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/deploj-prilozhenij-v-vm-nomad-i-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":"2019-10-31T18:53:58+00:00","article:modified_time":"2019-10-31T18:53:58+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"33654","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":"2026-02-08 20:38:40","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:36:34","updated":"2026-02-08 20:38:40","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/33654","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=33654"}],"version-history":[{"count":2,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/33654\/revisions"}],"predecessor-version":[{"id":157982,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/33654\/revisions\/157982"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/25343"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=33654"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=33654"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=33654"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}