{"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":"Depojimi i aplikacioneve n\u00eb VM, Nomad dhe Kubernetes","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>P\u00ebrsh\u00ebndetje t\u00eb gjith\u00ebve! Un\u00eb quhem Pavel Agalecki. Punoj si lider i ekipit q\u00eb zhvillon sistemin e shp\u00ebrndarjes p\u00ebr Lamoda. N\u00eb vitin 2018, kam folur n\u00eb konferenc\u00ebn HighLoad++, dhe sot d\u00ebshiroj t\u00eb paraqes transkriptingun e fjal\u00ebs sime.<\/p>\n<p>Tema ime \u00ebsht\u00eb e p\u00ebrkushtuar p\u00ebr p\u00ebrvoj\u00ebn e kompanis\u00eb son\u00eb n\u00eb shp\u00ebrndarjen e sistemeve dhe sh\u00ebrbimeve n\u00eb mjedise t\u00eb ndryshme. Duke filluar nga koh\u00ebt tona prehistorike, kur ne shp\u00ebrndanim t\u00eb gjitha sistemet n\u00eb servera virtual\u00eb t\u00eb zakonsh\u00ebm, deri n\u00eb kalimin gradual 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 cilat ishin problemet tona n\u00eb proces.<\/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>\nLe t\u00eb fillojm\u00eb duke th\u00ebn\u00eb se 3 vjet m\u00eb par\u00eb, t\u00eb gjitha sistemet dhe sh\u00ebrbimet e kompanis\u00eb shp\u00ebrndaheshin n\u00eb servera 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 ishte i vendosur dhe t\u00eb mblidhte p\u00ebrmes mjeteve t\u00eb ndihm\u00ebs s\u00eb automatizuar, duke p\u00ebrdorur Jenkins. Me ndihm\u00ebn e Ansible, ai u shp\u00ebrndante nga sistemi yn\u00eb i kontrollit t\u00eb versioneve n\u00eb serverat virtual\u00eb. N\u00eb k\u00ebt\u00eb m\u00ebnyr\u00eb, \u00e7do sistem q\u00eb kishte kompania jon\u00eb, shp\u00ebrndahej n\u00eb t\u00eb pakt\u00ebn 2 servera: nj\u00ebri prej tyre ishte head, tjetri ishte tail. K\u00ebto dy sisteme ishin t\u00eb identike n\u00eb t\u00eb gjitha cil\u00ebsit\u00eb e tyre, fuqin\u00eb, konfigurimin dhe t\u00eb tjera. Diferenca midis tyre ishte vet\u00ebm se head merrte trafikun e p\u00ebrdoruesve, nd\u00ebrsa tail kurr\u00eb nuk merrte trafik nga p\u00ebrdoruesit. <\/p>\n<p>Pse ishte b\u00ebr\u00eb kjo? <\/p>\n<p>Kur ne shp\u00ebrndanim versione t\u00eb reja t\u00eb aplikacionit ton\u00eb, d\u00ebshironim t\u00eb siguronim mund\u00ebsin\u00eb e shp\u00ebrndarjes pa shqet\u00ebsime, pra pa pasoja t\u00eb dukshme p\u00ebr p\u00ebrdoruesit. Kjo arrihej p\u00ebrmes p\u00ebrdorimit t\u00eb Ansible p\u00ebr t\u00eb shp\u00ebrndar\u00eb versionin e mbledhur n\u00eb tail. Atje, njer\u00ebzit q\u00eb ishin angazhuar me shp\u00ebrndarjen mund t\u00eb kontrolonin dhe t\u00eb siguroheshin se gjith\u00e7ka ishte mir\u00eb: t\u00eb gjitha metrikat, ndarjet dhe aplikacionet funksiononin; p\u00ebrdoreshin skenar\u00ebt e nevojsh\u00ebm. Vet\u00ebm pasi ata ishin t\u00eb sigurt se gjith\u00e7ka ishte n\u00eb rregull, trafiku do t\u00eb kalonte. Ai fillonte t\u00eb shkonte n\u00eb at\u00eb server q\u00eb deri at\u00ebher\u00eb ishte tail. Nd\u00ebrsa ai q\u00eb kishte qen\u00eb head, mbetej pa trafik nga p\u00ebrdoruesit, p\u00ebrkundrazi me versionin e m\u00ebparsh\u00ebm t\u00eb aplikacionit ton\u00eb.<\/p>\n<p>N\u00eb k\u00ebt\u00eb m\u00ebnyr\u00eb, p\u00ebr p\u00ebrdoruesit, gjith\u00e7ka ishte pa nd\u00ebrprerje. Sepse kalimi \u00ebsht\u00eb n\u00eb nj\u00eb moment, pasi \u00ebsht\u00eb thjesht nj\u00eb nd\u00ebrrim balancuesi. Shum\u00eb leht\u00eb mund t\u00eb ktheheni n\u00eb versionin e m\u00ebparsh\u00ebm, thjesht duke nd\u00ebrruar balancuesin prapa. Gjithashtu, ne mund\u00ebm t\u00eb sigurojm\u00eb kapacitetin e aplikacionit n\u00eb prodhim edhe para se t\u00eb fillonte trafik p\u00ebrdoruesish, q\u00eb ishte mjaft e p\u00ebrshtatshme. <\/p>\n<p>\u00c7far\u00eb p\u00ebrfitimesh pam\u00eb n\u00eb gjith\u00eb k\u00ebt\u00eb?<\/p>\n<ol>\n<li>S\u00eb pari, kjo \u00ebsht\u00eb mjaft <b>thjesht funksionon.<\/b> T\u00eb gjith\u00ebve iu duket e qart\u00eb si funksionon nj\u00eb skem\u00eb e till\u00eb e publikuar, sepse shumica e njer\u00ebzve ndonj\u00ebher\u00eb e kan\u00eb publikuar n\u00eb server\u00eb virtual\u00eb t\u00eb zakonsh\u00ebm.<\/li>\n<li>Kjo \u00ebsht\u00eb mjaft <b>e sigurt<\/b>, pasi teknologjia e publikimit \u00ebsht\u00eb e thjesht\u00eb dhe e provuar nga mij\u00ebra kompani. Miliona server\u00eb publikohen n\u00eb k\u00ebt\u00eb m\u00ebnyr\u00eb. \u00cbsht\u00eb e v\u00ebshtir\u00eb t\u00eb thyesh di\u00e7ka. <\/li>\n<li>Dhe p\u00ebrfundimisht, ne mund\u00ebm t\u00eb marrim <b>publikime atomike<\/b>. Publikimet, t\u00eb cilat p\u00ebr p\u00ebrdoruesit ndodhin n\u00eb nj\u00eb moment, pa ndonj\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 k\u00ebt\u00eb t\u00eb gjith\u00eb, ne gjithashtu pam\u00eb disa disavantazhe: <\/p>\n<ol>\n<li>P\u00ebrve\u00e7 mjedisit t\u00eb prodhimit, mjedisi i zhvillimit, ka edhe mjedise t\u00eb tjera. P\u00ebr shembull, qa dhe parprodhuese. N\u00eb at\u00eb koh\u00eb, ne 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>t\u00eb makineris\u00eb virtuale. Dhe n\u00ebse d\u00ebshironi t\u00eb p\u00ebrdit\u00ebsoni bibliotekat ose t\u00eb instaloni var\u00ebsi t\u00eb reja, duhet ta b\u00ebni k\u00ebt\u00eb n\u00eb t\u00eb gjitha mjediset. Gjithashtu, duhej t\u00eb synchronizoni koh\u00ebn kur do t\u00eb b\u00ebni publikimin e versionit t\u00eb ri t\u00eb aplikacionit tuaj, me koh\u00ebn kur devops do t\u00eb realizoj\u00eb konfiguratat e nevojshme t\u00eb mjedisit. N\u00eb k\u00ebt\u00eb rast, \u00ebsht\u00eb e leht\u00eb t\u00eb p\u00ebrfundoni n\u00eb nj\u00eb situat\u00eb kur mjedisi yn\u00eb do t\u00eb ndryshoj\u00eb n\u00eb disa mjedise nj\u00ebra pas tjetr\u00ebs. P\u00ebr shembull, n\u00eb mjedisin QA do t\u00eb ket\u00eb nj\u00ebra versione bibliotekash, nd\u00ebrsa n\u00eb prodhim do t\u00eb jet\u00eb nj\u00eb tjet\u00ebr, q\u00eb do t\u00eb sillte 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 ekip tjet\u00ebr. Sakt\u00ebsisht, nga ekipi devops, i cili mban server\u00ebt. Ju duhet t\u00eb vendosni detyr\u00ebn p\u00ebr ta dhe t'u jepni p\u00ebrshkrimin e asaj q\u00eb doni t\u00eb b\u00ebni.<\/li>\n<li>N\u00eb at\u00eb koh\u00eb, ne gjithashtu doja t\u00eb ndanim monolit\u00ebt e m\u00ebdhenj q\u00eb kishim n\u00eb sh\u00ebrbime m\u00eb t\u00eb vogla, sepse e kuptonim se ata do t\u00eb rriteshin dhe m\u00eb shum\u00eb. N\u00eb at\u00eb moment, ne kishim m\u00eb shum\u00eb se 100 prej tyre. Ishte e nevojshme t\u00eb krijoheshin makina virtuale t\u00eb reja p\u00ebr \u00e7do sh\u00ebrbim t\u00eb ri, t\u00eb cilat gjithashtu duhej t\u00eb mbaheshin dhe t\u00eb deploiheshin. P\u00ebrve\u00e7 k\u00ebsaj, ne duhej jo nj\u00eb, por t\u00eb pakt\u00ebn dy makina. Dhe k\u00ebsaj i shtohet edhe nj\u00eb mjedis QA. Kjo shkaktonte probleme dhe e b\u00ebnte krijimin dhe fillimin e sistemeve t\u00eb reja m\u00eb <b>t\u00eb komplikuar, t\u00eb shtrenjta dhe t\u00eb ngadalta.<\/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 depolimi i makinave virtuale t\u00eb zakonshme n\u00eb depolimin e aplikacioneve tona n\u00eb konteinerin docker. Me docker, ju nevojitet nj\u00eb sistem q\u00eb mund t\u00eb shkoj\u00eb aplikacionin n\u00eb nj\u00eb grumbull, sepse nuk mund ta ngarkoni nj\u00eb konteiner thjesht k\u00ebshtu. Normalisht, d\u00ebshirohet t\u00eb monitoroni se sa konteiner\u00eb jan\u00eb ngarkuar, p\u00ebr t\u00eb siguruar q\u00eb ata ngarkohen automatikisht. P\u00ebr k\u00ebt\u00eb arsye, na duhej t\u00eb zgjidhnim nj\u00eb sistem menaxhimi. <\/p>\n<p>Ne menduam gjat\u00eb se cilin prej tyre mund t\u00eb merrnim. Problemi \u00ebsht\u00eb se n\u00eb at\u00eb moment, ky stend\u00eb depolimi n\u00eb servera virtual\u00eb t\u00eb zakonsh\u00ebm ishte disi e vjetruar, sepse kishte versione t\u00eb pakta t\u00eb sistemeve operative. N\u00eb nj\u00eb moment, aty madje kishte edhe FreeBSD, q\u00eb nuk ishte shum\u00eb e leht\u00eb p\u00ebr t'u mb\u00ebshtetur. Ne kuptuam se t\u00eb ishim sa m\u00eb shpejt t\u00eb migronim n\u00eb docker. DevOps-\u00ebt tan\u00eb shqyrtuan p\u00ebrvoj\u00ebn e tyre me zgjidhje t\u00eb ndryshme dhe zgjodh\u00ebn nj\u00eb sistem t\u00eb till\u00eb si Nomad. <\/p>\n<h1>Kalimi n\u00eb Nomad<\/h1>\n<p>\nNomad \u00ebsht\u00eb nj\u00eb produkt i kompanis\u00eb \"HashiCorp\". Ata jan\u00eb gjithashtu t\u00eb njohur p\u00ebr zgjidhje t\u00eb tjera:<\/p>\n<p><img decoding=\"async\" alt=\"Depojimi 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>\"Consul\"<\/b> \u00ebsht\u00eb nj\u00eb mjet p\u00ebr zbulimin e sh\u00ebrbimeve.<\/p>\n<p><b>\"Terraform\"<\/b> \u00ebsht\u00eb nj\u00eb sistem p\u00ebr menaxhimin e server\u00ebve, q\u00eb ju lejon t'i konfiguroni ato p\u00ebrmes nj\u00eb konfigurimi, e ashtuquajtur infrastructure-as-code.<\/p>\n<p><b>\"Vagrant\"<\/b> ju lejon t\u00eb ngrini makina virtuale n\u00eb lokal ose n\u00eb cloud p\u00ebrmes skedar\u00ebve t\u00eb caktuar t\u00eb konfigurimit. <\/p>\n<p>Nomad n\u00eb at\u00eb koh\u00eb na u duk nj\u00eb zgjidhje e mjaftueshme e thjesht\u00eb, n\u00eb t\u00eb cil\u00ebn mund t\u00eb kalonim shpejt pa ndryshuar gjith\u00eb infrastruktur\u00ebn. P\u00ebr m\u00eb tep\u00ebr, \u00ebsht\u00eb relativisht i leht\u00eb p\u00ebr t'u m\u00ebsuar. Prandaj, pik\u00ebrisht at\u00eb e zgjodh\u00ebm si sistemin ton\u00eb t\u00eb filtrimit t\u00eb konteiner\u00ebve. <\/p>\n<p>\u00c7far\u00eb nevojitet p\u00ebr t\u00eb depoluar sistemin tuaj n\u00eb Nomad? <\/p>\n<ol>\n<li>Para s\u00eb gjithash, nevojitet <b>nj\u00eb imazh docker<\/b> aplikacionit tuaj. Duhet ta grumbulloni at\u00eb dhe ta vendosni n\u00eb magazin\u00ebn e imazheve docker. N\u00eb rastin ton\u00eb, kjo \u00ebsht\u00eb artifactory \u2014 nj\u00eb sistem q\u00eb ju lejon t\u00eb shtoni n\u00eb t\u00eb artefakte t\u00eb ndryshme t\u00eb llojeve t\u00eb ndryshme. Ajo mund t\u00eb ruaj\u00eb arkiva, imazhe docker, paketa composer PHP, paketa NPM dhe k\u00ebshtu me radh\u00eb. <\/li>\n<li>Gjithashtu k\u00ebrkohet<b> sked\u00ebs s\u00eb konfigurimit<\/b>, i cili do t'i thot\u00eb Nomad-it se \u00e7far\u00eb, ku dhe n\u00eb \u00e7far\u00eb sasie d\u00ebshironi t\u00eb derdhni. <\/li>\n<\/ol>\n<p>\nKur flasim p\u00ebr Nomad, si format informativ ai p\u00ebrdor gjuh\u00ebn HCL, q\u00eb shkurtimisht do t\u00eb thot\u00eb <i>HashiCorp Configuration Language<\/i>. Kjo \u00ebsht\u00eb nj\u00eb superset 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=\"Depojimi 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 deklaroni sa kontejner\u00eb d\u00ebshironi t\u00eb derdhni, nga cilat imazhe t'u kaloni atyre parametra t\u00eb ndrysh\u00ebm gjat\u00eb derdhjes. N\u00eb k\u00ebt\u00eb m\u00ebnyr\u00eb, i ushqeni k\u00ebtij skedari Nomad, dhe ai nis kontejner\u00ebt n\u00eb p\u00ebrputhje me t\u00eb. <\/p>\n<p>N\u00eb rastin ton\u00eb, ne e kuptuam se thjesht t\u00eb shkruajm\u00eb skedar\u00eb HCL identik\u00eb p\u00ebr \u00e7do sh\u00ebrbim do t\u00eb ishte jo shum\u00eb e p\u00ebrshtatshme, sepse ka shum\u00eb sh\u00ebrbime dhe ndonj\u00ebher\u00eb d\u00ebshirojme t'i p\u00ebrdit\u00ebsojm\u00eb ato. Ndonj\u00ebher\u00eb ndodh q\u00eb nj\u00eb sh\u00ebrbim t\u00eb jet\u00eb i derdhur n\u00eb nj\u00eb vet\u00eb, por n\u00eb shum\u00eb variante. P\u00ebr shembull, nj\u00eb nga sistemet q\u00eb kemi n\u00eb prodhim, ka m\u00eb shum\u00eb se 100 instanca n\u00eb prodhim. Ato nisin nga t\u00eb nj\u00ebjtat imazhe, por dallojn\u00eb p\u00ebr konfigurimet dhe skedar\u00ebt e konfigurimeve. <\/p>\n<p>Prandaj, ne vendos\u00ebm se do t\u00eb ishte e p\u00ebrshtatshme t\u00eb ruajm\u00eb t\u00eb gjith\u00eb skedar\u00ebt tan\u00eb t\u00eb konfigurimit p\u00ebr derdhje n\u00eb nj\u00eb depo t\u00eb p\u00ebrbashk\u00ebt. K\u00ebshtu, ato b\u00ebheshin t\u00eb shikueshme: ishte e leht\u00eb t'i mir\u00ebmbash dhe mund t\u00eb shikoje se cilat sisteme kemi. N\u00eb rast nevoje, gjithashtu nuk \u00ebsht\u00eb e komplikuar t\u00eb p\u00ebrdit\u00ebsosh ose t\u00eb ndryshosh di\u00e7ka. T\u00eb shtosh nj\u00eb sistem t\u00eb ri gjithashtu nuk do t\u00eb jet\u00eb nj\u00eb problem \u2014 mjafton t\u00eb krijosh nj\u00eb skedar konfigurimi brenda nj\u00eb direktoriumi t\u00eb ri. Brenda saj ka skedar\u00eb: service.hcl, i cili p\u00ebrmban p\u00ebrshkrimin e sh\u00ebrbimit ton\u00eb, dhe disa skedar\u00eb env q\u00eb lejojn\u00eb q\u00eb ky sh\u00ebrbim, duke u derdhur n\u00eb prodhim, t\u00eb konfigurohet. <\/p>\n<p><img decoding=\"async\" alt=\"Depojimi 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 t\u00eb derdhura n\u00eb prodhim jo n\u00eb nj\u00eb vet\u00eb, por n\u00eb disa n\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb. Prandaj, ne vendos\u00ebm se do t\u00eb ishte m\u00eb e p\u00ebrshtatshme t\u00eb ruajm\u00eb jo konfiguracionet n\u00eb form\u00ebn e past\u00ebr, por form\u00ebn e tyre t\u00eb templatuar. Dhe si gjuh\u00eb templatuese ne zgjodh\u00ebm <i>jinja 2<\/i>. N\u00eb k\u00ebt\u00eb format ruajm\u00eb si konfigurimet e sh\u00ebrbimit, ashtu edhe skedar\u00ebt env q\u00eb i duhet atij. <\/p>\n<p>P\u00ebrve\u00e7 k\u00ebsaj, ne vendos\u00ebm n\u00eb repository nj\u00eb skenar-deploy t\u00eb p\u00ebrbashk\u00ebt p\u00ebr t\u00eb gjith\u00eb projektet, i cili lejon t\u00eb ndizni dhe implementoni sh\u00ebrbimin tuaj n\u00eb prodhim, n\u00eb mjedisin e duhur, n\u00eb destinacionin e duhur. N\u00eb rast se kthejm\u00eb konfigurimin ton\u00eb HCL n\u00eb nj\u00eb model, skedari HCL q\u00eb m\u00eb par\u00eb ishte nj\u00eb konfigurim i zakonsh\u00ebm Nomad tani duket disi ndryshe.<\/p>\n<p><img decoding=\"async\" alt=\"Depojimi 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 \/>\nKjo do t\u00eb thot\u00eb se ne z\u00ebvend\u00ebsuam disa variabla vendesh t\u00eb konfigurimit me vendosje variablash q\u00eb merren nga skedar\u00ebt env ose burime t\u00eb tjera. P\u00ebrve\u00e7 k\u00ebsaj, ne fituam mund\u00ebsin\u00eb p\u00ebr t\u00eb nd\u00ebrtuar skedar\u00eb HCL n\u00eb m\u00ebnyr\u00eb dinamike, pra mund t\u00eb aplikojm\u00eb jo vet\u00ebm vendosje t\u00eb zakonshme variablash. Duke qen\u00eb se jinja mb\u00ebshtet ciklet dhe kushtet, gjithashtu mund t\u00eb b\u00ebjm\u00eb skedar\u00eb konfigurimi q\u00eb ndryshojn\u00eb var\u00ebsisht nga vendi ku e implantoni aplikacionin tuaj. <\/p>\n<p>P\u00ebr shembull, ju d\u00ebshironi t\u00eb implantoni sh\u00ebrbimin tuaj n\u00eb p\u00ebrpara-prodhuese dhe n\u00eb prodhim. Le t\u00eb themi se n\u00eb p\u00ebrpara-prodhuese nuk d\u00ebshironi t\u00eb ndizni skriptet cron, por vet\u00ebm d\u00ebshironi t\u00eb shihni sh\u00ebrbimin n\u00eb nj\u00eb domain t\u00eb ve\u00e7ant\u00eb p\u00ebr t\u00eb siguruar q\u00eb po funksionon. P\u00ebr \u00e7do kush q\u00eb implanton sh\u00ebrbimin, procesi duket shum\u00eb i thjesht\u00eb dhe i qart\u00eb. Mjafton t\u00eb ekzekutoni skedarin deploy.sh, t\u00eb specifikoni se cilin sh\u00ebrbim d\u00ebshironi t\u00eb implantoni dhe n\u00eb cilin destinacion. P\u00ebr shembull, d\u00ebshironi t\u00eb implantoni nj\u00eb sistem n\u00eb Rusi, n\u00eb Bjellorusi apo n\u00eb Kazakistan. P\u00ebr k\u00ebt\u00eb, mjafton t\u00eb nd\u00ebrroni nj\u00eb nga parametrat dhe do t\u00eb krijohet skedari i sakt\u00eb i konfigurimit. <\/p>\n<p>Kur sh\u00ebrbimi Nomad tashm\u00eb \u00ebsht\u00eb implantuar n\u00eb klaster, ai duket k\u00ebshtu.<\/p>\n<p><img decoding=\"async\" alt=\"Depojimi 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 balancues i jasht\u00ebm q\u00eb do t\u00eb pranoj\u00eb t\u00eb gjith\u00eb trafik-in e p\u00ebrdoruesve. Ai do t\u00eb funksionoj\u00eb s\u00eb bashku me Consul dhe do t\u00eb m\u00ebsoj\u00eb nga ai, ku, n\u00eb cil\u00ebn nod\u00eb, p\u00ebr cilin <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/sq\/lir\/ipv4\/\"   title=\"adres\u00eb IP\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"585\">adres\u00eb IP<\/a> ndodhet sh\u00ebrbimi konkret q\u00eb i p\u00ebrgjigjet emrit t\u00eb caktuar t\u00eb domainit. Sh\u00ebrbimet n\u00eb Consul shfaqen nga Nomad vet\u00eb. Duke qen\u00eb se k\u00ebto jan\u00eb produkte t\u00eb s\u00eb nj\u00ebjt\u00ebs kompani, ato jan\u00eb t\u00eb lidhura mir\u00eb me nj\u00ebra-tjetr\u00ebn. Mund t\u00eb thuhet se Nomad nga kutia regjistron t\u00eb gjitha sh\u00ebrbimet e aktivizuara brenda tij n\u00eb Consul. <\/p>\n<p>Kur pasi balancuesi juaj i jasht\u00ebm m\u00ebson se n\u00eb cilin sh\u00ebrbim duhet t\u00eb drejtoj\u00eb trafikun, ai e redirekton at\u00eb n\u00eb t\u00eb p\u00ebrkat\u00ebsin kontejner ose n\u00eb disa kontejner\u00eb, t\u00eb cil\u00ebt i p\u00ebrgjigjen aplikacionit tuaj. Natyrisht, \u00ebsht\u00eb e nevojshme t\u00eb mendojm\u00eb edhe p\u00ebr sigurin\u00eb. Edhe pse t\u00eb gjith\u00eb sh\u00ebrbimet ekzekutohen n\u00eb t\u00eb nj\u00ebjtat makina virtuale n\u00eb kontejner\u00eb, zakonisht k\u00ebrkohet t\u00eb ndalohet qasja e lir\u00eb nga \u00e7do sh\u00ebrbim n\u00eb \u00e7do sh\u00ebrbim tjet\u00ebr. K\u00ebt\u00eb e arrit\u00ebm p\u00ebrmes segmentimit. \u00c7do sh\u00ebrbim ishte n\u00eb nj\u00eb rrjet t\u00eb vetin virtual, n\u00eb t\u00eb cilin ishin shkruar rregullat e rrug\u00ebzimit dhe rregullat e lejes\/ndalimit t\u00eb qasjes n\u00eb sisteme dhe sh\u00ebrbime t\u00eb 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 p\u00ebrmes segmentimit n\u00eb nivel rrjeti. Pra, ashtu si\u00e7 thash\u00eb, edhe me nj\u00eb gabim nuk mund t\u00eb lidheni rast\u00ebsisht nga ambienti testues me baz\u00ebn tuaj t\u00eb t\u00eb dh\u00ebnave prodhuese.<\/p>\n<p>Sa na kushtoi procesi i kalimit n\u00eb aspektin e burimeve njer\u00ebzore? <\/p>\n<p>Nj\u00eb periudh\u00eb prej rreth 5-6 muajsh zgjati kalimi i t\u00eb 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 skuad\u00ebr duhej t\u00eb krijonte kontejner\u00ebt e saj p\u00ebr sh\u00ebrbimet. <\/p>\n<p>Ne kemi pranuar nj\u00eb qasje t\u00eb till\u00eb, q\u00eb \u00e7do skuad\u00ebr \u00ebsht\u00eb p\u00ebrgjegj\u00ebse p\u00ebr imazhet docker t\u00eb sistemeve t\u00eb saj n\u00eb m\u00ebnyr\u00eb t\u00eb pavarur. DevOps ofron infrastruktur\u00ebn e p\u00ebrgjithshme t\u00eb nevojshme p\u00ebr deploy, pra mb\u00ebshtetje p\u00ebr vet\u00eb klasterin, mb\u00ebshtetje p\u00ebr sistemin CI etj. Dhe n\u00eb at\u00eb koh\u00eb, mbi 60 sisteme ishin transferuar n\u00eb Nomad, duke arritur rreth 2,000 kontejner\u00eb. <\/p>\n<p>DevOps \u00ebsht\u00eb p\u00ebrgjegj\u00ebs p\u00ebr infrastruktur\u00ebn e p\u00ebrgjithshme t\u00eb gjith\u00e7kaje q\u00eb lidhet me deploy, me server\u00ebt. Nd\u00ebrsa \u00e7do skuad\u00ebr zhvillimi, nga ana e saj, \u00ebsht\u00eb p\u00ebrgjegj\u00ebse p\u00ebr implementimin e kontejner\u00ebve p\u00ebr sistemin e saj konkret, pasi vet\u00eb skuadra e di se \u00e7far\u00eb i nevojitet n\u00eb at\u00eb ose at\u00eb kontejner.<\/p>\n<h1>Arsyet p\u00ebr refuzimin e Nomad<\/h1>\n<p>\nCilat jan\u00eb p\u00ebrfitimet q\u00eb kemi marr\u00eb duke kaluar n\u00eb deploy me Nomad dhe docker gjithashtu?<\/p>\n<ol>\n<li>Ne<b> siguruam kushte t\u00eb barabarta<\/b> p\u00ebr t\u00eb gjitha mjediset. N\u00eb zhvillim, mjedisin QA, n\u00eb pra-prodhuese dhe prodhim p\u00ebrdoren t\u00eb nj\u00ebjtat image konteiner\u00ebsh, me t\u00eb nj\u00ebjtat var\u00ebsi. Prandaj, ju praktikisht nuk keni shansin q\u00eb n\u00eb prodhim t\u00eb b\u00ebni ndonj\u00eb ndryshim nga ajo q\u00eb keni testuar lokalisht apo n\u00eb mjedisin e testimit. <\/li>\n<li>Gjithashtu, ne zbulua <b>m\u00eb se leht\u00eb mund t\u00eb shtoni nj\u00eb sh\u00ebrbim t\u00eb ri<\/b>. \u00c7do sistem i ri nga perspektiva e deploy-it aktivizohet shum\u00eb leht\u00eb. Mjafton t\u00eb shkoni n\u00eb repository-n q\u00eb mban konfigurat e, t\u00eb shtoni aty konfigun p\u00ebr sistemin tuaj dhe gjith\u00e7ka \u00ebsht\u00eb gati. Ju mund t\u00eb deploy-oni sistemin tuaj n\u00eb prodhim pa p\u00ebrpjekje shtes\u00eb nga DevOps. <\/li>\n<li>T\u00eb gjitha <b>skedar\u00ebt konfiguruese<\/b> n\u00eb nj\u00eb repository t\u00eb vet\u00ebm <b>shfaqeshin t\u00eb rishikueshme<\/b>. N\u00eb momentin kur ne deploy-onim sistemet tona p\u00ebrmes <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/sq\/vps\/\"   title=\"serverave virtuale\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"791\">serverave virtuale<\/a>, ne p\u00ebrdor\u00ebm Ansible, ku konfigurat ndodheshin n\u00eb t\u00eb nj\u00ebjtin repository. Megjithat\u00eb, p\u00ebr shumic\u00ebn e zhvilluesve, punimi me k\u00ebt\u00eb ishte pak m\u00eb i nd\u00ebrlikuar. K\u00ebtu volumi i konfigurat dhe kodit q\u00eb duhet t\u00eb shtoni p\u00ebr t\u00eb deploy-uar sh\u00ebrbimin u b\u00eb ndjesh\u00ebm m\u00eb i vog\u00ebl. Plus, p\u00ebr DevOps \u00ebsht\u00eb shum\u00eb e leht\u00eb ta rregullojn\u00eb ose ta ndryshojn\u00eb at\u00eb. N\u00eb rast t\u00eb kalimeve, p\u00ebr shembull, n\u00eb versionin e ri t\u00eb Nomad-it, 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 p\u00ebrball\u00ebm edhe me disa disavantazhe: <\/p>\n<p>E para, ne <b>nuk arrit\u00ebm t\u00eb arrinim pa ndonj\u00eb problem deploy-et <\/b>n\u00eb rastin e Nomad-it. Kur kontejner\u00ebt shp\u00ebrndaheshin nga kushte t\u00eb ndryshme, mund t\u00eb ndodhte q\u00eb ai t\u00eb ishte aktivizuar dhe Nomad e perceptonte at\u00eb si nj\u00eb kontejner t\u00eb gatsh\u00ebm p\u00ebr t\u00eb pranuar trafik. Kjo ndodhte edhe para se aplikacioni brenda tij t\u00eb kishte mund\u00ebsin\u00eb t\u00eb aktivizohej. P\u00ebr k\u00ebt\u00eb arsye, sistemi p\u00ebr nj\u00eb periudh\u00eb t\u00eb shkurt\u00ebr fillonte t\u00eb jepte gabime 500, sepse trafiku fillonte t\u00eb shkonte n\u00eb kontejnerin q\u00eb ende nuk ishte i gatsh\u00ebm ta priste at\u00eb. <\/p>\n<p>Ne has\u00ebm ndonj\u00eb <b>defekte<\/b>. Problemi m\u00eb i r\u00ebnd\u00ebsish\u00ebm \u00ebsht\u00eb se Nomad nuk e p\u00ebrballon shum\u00eb mir\u00eb nj\u00eb klaster t\u00eb madh, n\u00ebse keni shum\u00eb sisteme dhe konteiner\u00eb. Kur d\u00ebshironi t\u00eb nxirrni p\u00ebr mir\u00ebmbajtje nj\u00eb nga server\u00ebt q\u00eb \u00ebsht\u00eb pjes\u00eb e klasterit Nomad, ka nj\u00eb probabilitet t\u00eb madh q\u00eb klasteri t\u00eb ket\u00eb probleme dhe t\u00eb shp\u00ebrb\u00ebhet. Disa nga konteiner\u00ebt mund t\u00eb bien dhe t\u00eb mos ngrihen m\u00eb \u2014 kjo do t'ju kushtoj\u00eb shum\u00eb n\u00ebse t\u00eb gjitha sistemet tuaja n\u00eb prodhim jan\u00eb n\u00eb klasterin e menaxhuar nga Nomad. <\/p>\n<p>Prandaj, ne vendos\u00ebm t\u00eb mendojm\u00eb p\u00ebr hapat e ardhsh\u00ebm. N\u00eb at\u00eb moment, ne filluam t\u00eb kuptonim m\u00eb mir\u00eb se \u00e7far\u00eb d\u00ebshironim t\u00eb arrinim. Konkretisht: donim besueshm\u00ebri, pak m\u00eb shum\u00eb funksionalitete se ato q\u00eb ofron Nomad, dhe nj\u00eb sistem m\u00eb t\u00eb pjekur, m\u00eb stabil. <\/p>\n<p>N\u00eb k\u00ebt\u00eb aspekt, zgjedhja jon\u00eb ra mbi Kubernetes si platforma m\u00eb popullore p\u00ebr t\u00eb drejtuar klaster\u00eb. Sidomos duke pasur parasysh se madh\u00ebsia dhe numri i konteiner\u00ebve tan\u00eb ishin mjaft t\u00eb m\u00ebdha. P\u00ebr k\u00ebto q\u00ebllime, Kubernetes dukej si sistemi m\u00eb i p\u00ebrshtatsh\u00ebm nga ato q\u00eb mund t\u00eb shqyrtonim. <\/p>\n<h1>Kalimi n\u00eb Kubernetes<\/h1>\n<p>\nDo t\u00eb flas pak p\u00ebr konceptet kryesore t\u00eb Kubernetes dhe se si ato dallojn\u00eb nga Nomad. <\/p>\n<p><img decoding=\"async\" alt=\"Depojimi 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 konteiner\u00ebve, t\u00eb cil\u00ebt ekzekutohen gjithmon\u00eb s\u00eb bashku. Ato punojn\u00eb sikur gjithmon\u00eb t\u00eb ishin n\u00eb nj\u00eb makin\u00eb virtuale. Ato jan\u00eb t\u00eb aksesueshme p\u00ebr nj\u00ebra-tjetr\u00ebn p\u00ebrmes IP adres\u00ebs 127.0.0.1 n\u00eb porte t\u00eb ndryshme. <\/p>\n<p>Supozoni se keni nj\u00eb aplikacion PHP, i cili p\u00ebrb\u00ebhet nga nginx dhe php-fpm \u2013 nj\u00eb skem\u00eb klasike. M\u00eb shum\u00eb gjasa, do t\u00eb d\u00ebshironit q\u00eb dhe konteiner\u00ebt nginx dhe php-fpm t\u00eb ishin gjithmon\u00eb s\u00eb bashku. Kubernetes e lejon k\u00ebt\u00eb p\u00ebrmes p\u00ebrshkrimit t\u00eb tyre si nj\u00eb pod t\u00eb p\u00ebrbashk\u00ebt. Kjo \u00ebsht\u00eb pik\u00ebrisht ajo q\u00eb ne nuk mund ta arrinim me Nomad.<\/p>\n<p>Koncepti i dyt\u00eb \u00ebsht\u00eb <b>deployment<\/b>. E v\u00ebrteta \u00ebsht\u00eb se pod vet\u00eb \u2013 \u00ebsht\u00eb nj\u00eb gj\u00eb efemere, ajo ngrihet dhe zhduket. A d\u00ebshironi ta ndihmoni t\u00eb gjith\u00eb konteiner\u00ebt tuaj t\u00eb m\u00ebparsh\u00ebm ose d\u00ebshironi t'i l\u00ebshoni gradualisht \u2013 pik\u00ebrisht p\u00ebr k\u00ebt\u00eb proces p\u00ebrgjigjet koncepti i deployment. Ai p\u00ebrshkruan se si e grumbulloni pod-at tuaj, n\u00eb sa sasi dhe si t'i rifreskoni ato. <\/p>\n<p>Koncepti i tret\u00eb \u00ebsht\u00eb <b>sh\u00ebrbim<\/b>. Sh\u00ebrbimi juaj \u00ebsht\u00eb n\u00eb thelb sistemi juaj q\u00eb merr nj\u00eb trafik t\u00eb caktuar dhe m\u00eb pas e drejton at\u00eb n\u00eb nj\u00eb ose disa pod-e q\u00eb p\u00ebrputhen me sh\u00ebrbimin tuaj. K\u00ebshtu q\u00eb, ai lejon t\u00eb thuhet se t\u00eb gjith\u00eb trafiku i ardhsh\u00ebm n\u00eb sh\u00ebrbimin me emrin e till\u00eb duhet t\u00eb d\u00ebrgohet n\u00eb k\u00ebto pod-e t\u00eb caktuara. Dhe n\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb, ai siguron balancimin e trafikut. K\u00ebshtu q\u00eb mund t\u00eb nisni dy pod-e t\u00eb aplikacionit tuaj dhe t\u00eb gjith\u00eb trafiku i ardhsh\u00ebm do t\u00eb balancohet n\u00eb m\u00ebnyr\u00eb t\u00eb barabart\u00eb mes pod-eve q\u00eb lidhen me k\u00ebt\u00eb sh\u00ebrbim.<\/p>\n<p>Dhe koncepti i kat\u00ebrt kryesor \u2014 <b>Ingress<\/b>. Ky \u00ebsht\u00eb nj\u00eb sh\u00ebrbim q\u00eb aktivizohet n\u00eb nj\u00eb klaster Kubernetes. Ai vepron si nj\u00eb balancues i ngarkes\u00ebs jasht\u00eb, q\u00eb merr t\u00eb gjitha k\u00ebrkesat. P\u00ebrmes API Kubernetes Ingress, ai mund t\u00eb p\u00ebrcaktoj\u00eb se ku duhet d\u00ebrguar k\u00ebto k\u00ebrkesa. Dhe e b\u00ebn k\u00ebt\u00eb n\u00eb m\u00ebnyr\u00eb shum\u00eb fleksibile. Mund t\u00eb thoni se t\u00eb gjitha k\u00ebrkesat n\u00eb k\u00ebt\u00eb host dhe k\u00ebt\u00eb URL d\u00ebrgohen n\u00eb k\u00ebt\u00eb sh\u00ebrbim. Nd\u00ebrsa ato k\u00ebrkesa q\u00eb vijn\u00eb n\u00eb k\u00ebt\u00eb host dhe n\u00eb nj\u00eb URL tjet\u00ebr, d\u00ebrgohen n\u00eb nj\u00eb sh\u00ebrbim tjet\u00ebr. <\/p>\n<p>M\u00eb e shk\u00eblqyera nga pik\u00ebpamja e atij q\u00eb zhvillon aplikacionin \u00ebsht\u00eb se ju keni mund\u00ebsin\u00eb t\u00eb menaxhoni 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 kontejner\u00eb 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\u00ebjtin domen, por n\u00eb nj\u00eb URL tjet\u00ebr, d\u00ebrgohet n\u00eb kontejner\u00eb t\u00eb shkruar n\u00eb PHP, ku ka shum\u00eb logjik\u00eb, por ata nuk jan\u00eb shum\u00eb t\u00eb shpejt\u00eb.<\/p>\n<p>N\u00ebse e krahasojm\u00eb t\u00eb gjitha k\u00ebto koncepte me Nomad, mund t\u00eb thoshim se tre konceptet e para jan\u00eb s\u00eb bashku Sh\u00ebrbimi. Nd\u00ebrsa koncepti i fundit n\u00eb Nomad \u00ebsht\u00eb i munguar. Ne p\u00ebrdor\u00ebm nj\u00eb balancues t\u00eb jasht\u00ebm p\u00ebr k\u00ebt\u00eb: mund t\u00eb jet\u00eb haproxy, nginx, nginx+ dhe k\u00ebshtu me radh\u00eb. N\u00eb rastin e kubit, nuk keni nevoj\u00eb t\u00eb 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 nj\u00eb funksionalitet i integruar n\u00eb Kubernetes. <\/p>\n<p>T\u00eb gjitha konceptet q\u00eb p\u00ebrshkrova \u2014 n\u00eb thelb jan\u00eb burime q\u00eb ekzistojn\u00eb brenda klasterit Kubernetes. P\u00ebr p\u00ebrshkrimin e tyre n\u00eb kube p\u00ebrdoret formati yaml, m\u00eb i lexuesh\u00ebm dhe m\u00eb i njohur se skedar\u00ebt HCL n\u00eb rastin e Nomad. Por strukturisht ata p\u00ebrshkruajn\u00eb t\u00eb nj\u00ebjt\u00ebn gj\u00eb n\u00eb rastin e, p\u00ebr shembull, pod-it. Ata thon\u00eb \u2014 d\u00ebshiroj t\u00eb depozitoj ato pod-e atje, me k\u00ebto imazhe, n\u00eb k\u00ebt\u00eb num\u00ebr. <\/p>\n<p><img decoding=\"async\" alt=\"Depojimi 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 d\u00ebshironim t\u00eb krijonim manualisht \u00e7do burim t\u00eb ve\u00e7ant\u00eb: deployment, sh\u00ebrbime, Ingress dhe t\u00eb tjera. N\u00eb vend t\u00eb k\u00ebsaj, ne donim q\u00eb gjat\u00eb deployment-it t\u00eb p\u00ebrshkruanim \u00e7do sistem tonin n\u00eb terminologjin\u00eb e Kubernetes, n\u00eb m\u00ebnyr\u00eb q\u00eb t\u00eb mos e kishim t\u00eb nevojshme t\u00eb rip\u00ebrs\u00ebrisnim manualisht t\u00eb gjitha var\u00ebsit\u00eb e nevojshme t\u00eb burimeve n\u00eb rendin e duhur. Si nj\u00eb sistem q\u00eb na lejonte ta b\u00ebnim k\u00ebt\u00eb, u zgjodh Helm. <\/p>\n<h1>Koncepte kryesore n\u00eb Helm<\/h1>\n<p>\nHelm \u00ebsht\u00eb <b>, nj\u00eb grup utilitar\u00ebsh standard (binutils, coreutils, netutils, extrautils), shell-in e komandave<\/b> p\u00ebr Kubernetes. Ai \u00ebsht\u00eb shum\u00eb i ngjash\u00ebm me m\u00ebnyr\u00ebn se si funksionojn\u00eb menaxher\u00ebt e pakove 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 nj\u00eb deployment nginx, nj\u00eb deployment php-fpm, nj\u00eb konfigurim 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 ashtuquajturve charts. N\u00eb k\u00ebt\u00eb rast, Helm <b>funksionon mbi Kubernetes<\/b>. Pra, kjo nuk \u00ebsht\u00eb ndonj\u00eb sistem q\u00eb q\u00ebndron jasht\u00eb, por thjesht nj\u00eb sh\u00ebrbim tjet\u00ebr q\u00eb ekzekutohet brenda kubit. Ju nd\u00ebrveproni me t\u00eb n\u00ebp\u00ebrmjet API-t t\u00eb tij p\u00ebrmes komand\u00ebs n\u00eb konsol\u00eb. Komforti dhe bukuria e tij \u00ebsht\u00eb se madje edhe n\u00ebse helm d\u00ebshtojn\u00eb ose e fshini at\u00eb nga klasteri, sh\u00ebrbimet tuaja nuk do t\u00eb zhduken, pasi helm sh\u00ebrben n\u00eb thelb vet\u00ebm p\u00ebr t\u00eb nisur sistemin. P\u00ebr funksionimin dhe gjendjen e sh\u00ebrbimeve p\u00ebrgjigjet vet\u00eb Kubernetes. <\/p>\n<p>Gjithashtu ne kuptuam se <b>templating<\/b>, e cila deri tani kishim qen\u00eb t\u00eb detyruar ta b\u00ebnim vet\u00eb p\u00ebrmes integrimit t\u00eb jinja n\u00eb konfigurimet tona, \u00ebsht\u00eb nj\u00eb nga mund\u00ebsit\u00eb kryesore t\u00eb helm. T\u00eb gjitha konfigurimet q\u00eb krijoni p\u00ebr sistemet tuaja ruhen n\u00eb helm n\u00eb form\u00ebn e shablloneve, disi t\u00eb ngjashme me jinja, por n\u00eb t\u00eb v\u00ebrtet\u00eb p\u00ebrdorin nj\u00eb templating t\u00eb gjuh\u00ebs Go, n\u00eb t\u00eb cil\u00ebn \u00ebsht\u00eb shkruar helm, ashtu si Kubernetes. <\/p>\n<p>Helm na sjell disa koncepte shtes\u00eb. <\/p>\n<p><b>Grafiku<\/b> \u2014 \u00ebsht\u00eb p\u00ebrshkrimi i sh\u00ebrbimit tuaj. N\u00eb menaxher\u00ebt e tjer\u00eb t\u00eb pakove mund ta quajn\u00eb at\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 nd\u00ebrtimin e konfigurimeve tuaja nga shabllonet. <\/p>\n<p><b>Release<\/b>\u00c7do her\u00eb q\u00eb sh\u00ebrbimi, i cili deploy-het p\u00ebrmes helm, merr nj\u00eb version incremental t\u00eb l\u00ebshimit. Helm mban mend se cili ka qen\u00eb konfigurimi i sh\u00ebrbimit n\u00eb l\u00ebshimet e m\u00ebparshme. Prandaj, n\u00ebse \u00ebsht\u00eb e nevojshme t\u00eb kthehemi prapa, mjafton t\u00eb ekzekutojm\u00eb komand\u00ebn helm callback dhe t\u00eb especificojm\u00eb versionin e m\u00ebparsh\u00ebm t\u00eb l\u00ebshimit. Edhe n\u00ebse n\u00eb momentin e rikthimit, konfigurimi p\u00ebrkat\u00ebs nuk \u00ebsht\u00eb i disponuesh\u00ebm n\u00eb depot tuaj, helm akoma do ta mbaj\u00eb mend si ka qen\u00eb dhe do ta kthej\u00eb sistemin tuaj n\u00eb gjendjen q\u00eb kishte n\u00eb l\u00ebshimin e m\u00ebparsh\u00ebm. <\/p>\n<p>N\u00eb rastin kur ne p\u00ebrdorim helm, konfigurimet e zakonshme p\u00ebr Kubernetes gjithashtu shnd\u00ebrrohen n\u00eb shabllone, ku ka mund\u00ebsi t\u00eb p\u00ebrdoren variabla, funksione dhe t\u00eb aplikohen operator\u00eb kushtor\u00eb. K\u00ebshtu, ju mund t\u00eb nd\u00ebrtoni konfigurimin e sh\u00ebrbimit tuaj n\u00eb var\u00ebsi t\u00eb mjedisit.<\/p>\n<p><img decoding=\"async\" alt=\"Depojimi 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 kemi vendosur t\u00eb veprojm\u00eb pak ndryshe nga si kemi b\u00ebr\u00eb n\u00eb rastin me Nomad. N\u00ebse n\u00eb Nomad n\u00eb nj\u00eb depo ruheshin si konfigurimet p\u00ebr deploy dhe variablat n q\u00eb nevojiten p\u00ebr t\u00eb deploy-uar sh\u00ebrbimin ton\u00eb, k\u00ebtu kemi vendosur t'i ndajm\u00eb ato n\u00eb dy depo t\u00eb ve\u00e7anta. N\u00eb depon \"deploy\" ruhen vet\u00ebm variablat n t\u00eb nevojsh\u00ebm p\u00ebr deploy, nd\u00ebrsa n\u00eb depon \"helm\" ruhen konfigurimet ose chartet.<\/p>\n<p><img decoding=\"async\" alt=\"Depojimi 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 skedat konfiguratore nuk ruajm\u00eb ndonj\u00eb t\u00eb dh\u00ebn\u00eb v\u00ebrtet t\u00eb ndjesh\u00ebm, p\u00ebr shembull, fjal\u00ebkalimet p\u00ebr bazat e t\u00eb dh\u00ebnave. Ato ruhen n\u00eb form\u00eb secrets n\u00eb Kubernetes, megjithat\u00eb, ka disa elemente p\u00ebr t\u00eb cilat nuk duam t\u00eb japim akses p\u00ebr t\u00eb gjith\u00eb. Prandaj, aksesit n\u00eb depon \"deploy\" \u00ebsht\u00eb m\u00eb i kufizuar, nd\u00ebrsa depon \"helm\" p\u00ebrmban thjesht p\u00ebrshkrimin e sh\u00ebrbimit. P\u00ebr k\u00ebt\u00eb arsye, n\u00eb t\u00eb mund t\u00eb jepet akses n\u00eb m\u00ebnyr\u00eb t\u00eb sigurt p\u00ebr m\u00eb shum\u00eb njer\u00ebz. <\/p>\n<p>Meqen\u00ebse ne kemi jo vet\u00ebm prodhimin, por edhe mjedise t\u00eb tjera, p\u00ebrmes k\u00ebtij ndarjeje mund t\u00eb rip\u00ebrdorim chartet tona helm p\u00ebr t\u00eb deploy-uar sh\u00ebrbimet jo vet\u00ebm n\u00eb prodhim, por edhe, p\u00ebr shembull, n\u00eb ambientin QA. Edhe p\u00ebr t\u00eb zhvilluar ato n\u00eb m\u00ebnyr\u00eb lokale, duke p\u00ebrdorur <i>Minikube<\/i> \u2014 kjo \u00ebsht\u00eb nj\u00eb gj\u00eb p\u00ebr nisjen lokale t\u00eb Kubernetes. <\/p>\n<p>Brenda \u00e7do repozitor ne kemi l\u00ebn\u00eb ndarjen n\u00eb drejtorit\u00eb e ve\u00e7anta p\u00ebr \u00e7do sh\u00ebrbim. K\u00ebshtu q\u00eb brenda \u00e7do drejtorie ndodhen shabllone q\u00eb i p\u00ebrkasin chart-it p\u00ebrkat\u00ebs dhe p\u00ebrshkruajn\u00eb burimet q\u00eb duhet t\u00eb vendosen p\u00ebr t\u00eb nisur sistemin ton\u00eb. N\u00eb repozitorin \"deploy\" kemi l\u00ebn\u00eb vet\u00ebm envar. N\u00eb k\u00ebt\u00eb rast, nuk e p\u00ebrdor\u00ebm shabllonizimin p\u00ebrmes jinja, sepse helm vet\u00eb ofron shabllonizim nga kuti \u2013 kjo \u00ebsht\u00eb nj\u00eb nga funksionet e tij kryesore. <\/p>\n<p>Kemi l\u00ebn\u00eb skenarin p\u00ebr vendosjen \u2013 deploy.sh, i cili e thjesht\u00ebson dhe standardizon lan\u00e7imin p\u00ebr vendosjen me helmin. K\u00ebshtu, p\u00ebr \u00e7do person q\u00eb d\u00ebshiron t\u00eb vendos\u00eb, nd\u00ebrfaqja e vendosjes duket sakt\u00ebsisht si\u00e7 ishte n\u00eb rastin e vendosjes p\u00ebrmes Nomad. I nj\u00ebjti deploy.sh, emri i sh\u00ebrbimit tuaj dhe vendi ku d\u00ebshironi ta vendosni. Kjo \u00e7on n\u00eb at\u00eb q\u00eb helm nis. Ai ngaana e tij mbledh konfigurimet nga shabllonet, i vendos ato n\u00eb skedar\u00ebt e nevojsh\u00ebm t\u00eb vlerave, pastaj vendos, 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=\"Depojimi 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 dal\u00ebs vjen n\u00eb Ingress. Ky \u00ebsht\u00eb pik\u00ebrisht kontrolluesi i p\u00ebrpar\u00eb, i cili merr t\u00eb gjitha k\u00ebrkesat dhe m\u00eb pas i d\u00ebrgon ato n\u00eb sh\u00ebrbimet p\u00ebrkat\u00ebse p\u00ebr k\u00ebrkesat. Ai i p\u00ebrcakton ata 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 q\u00eb zhvilluesit i caktuan vet\u00eb. Sh\u00ebrbimi pastaj d\u00ebrgon k\u00ebrkesat n\u00eb pod-et e tij, pra n\u00eb kontejner\u00ebt specifik, duke balancuar trafikun e hyr\u00ebs nd\u00ebrmjet t\u00eb gjith\u00eb kontejner\u00ebve q\u00eb i p\u00ebrkasin k\u00ebtij sh\u00ebrbimi. Dhe, sigurisht, nuk duhet harruar se nga siguria n\u00eb nivelin e rrjetit, ne nuk duhet t\u00eb largohemi. Prandaj n\u00eb klastrin Kubernetes funksionon segmentimi, i cili bazohet n\u00eb etiketim. 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 klastri. <\/p>\n<p>P\u00ebrmes kalimit, ne v\u00ebm\u00eb re se Kubernetes ka t\u00eb gjitha aft\u00ebsit\u00eb q\u00eb kishte Nomad, t\u00eb cilin ne e p\u00ebrdornim m\u00eb par\u00eb, dhe gjithashtu sjell shum\u00eb gj\u00ebra t\u00eb reja. Ai mund t\u00eb zgjerohet p\u00ebrmes plug-in-\u00ebve, dhe n\u00eb fakt p\u00ebrmes tipave t\u00eb personalizuar t\u00eb burimeve. K\u00ebshtu q\u00eb keni mund\u00ebsin\u00eb t\u00eb mos p\u00ebrdorni vet\u00ebm at\u00eb q\u00eb vjen me Kubernetes nga fillimi, por t\u00eb krijoni burimin dhe sh\u00ebrbimin tuaj, t\u00eb cil\u00ebt do t\u00eb lexojn\u00eb burimin tuaj. Kjo ofron mund\u00ebsi t\u00eb tjera p\u00ebr zgjerimin e sistemit tuaj pa pasur nevoj\u00eb p\u00ebr riinstalimin e Kubernetes dhe pa ndryshime t\u00eb nevojshme. <\/p>\n<p>Nj\u00eb shembull i k\u00ebtij p\u00ebrdorimi \u00ebsht\u00eb Prometheus, i cili funksionon brenda klasterit Kubernetes. P\u00ebr ta b\u00ebr\u00eb at\u00eb t\u00eb filloj\u00eb t\u00eb mbledh\u00eb metrika nga nj\u00eb sh\u00ebrbim i caktuar, na nevojitet t\u00eb shtojm\u00eb n\u00eb p\u00ebrshkrimin e sh\u00ebrbimit nj\u00eb tip t\u00eb ri burimi, t\u00eb ashtuquajturin monitor-sh\u00ebrbimi. Prometheus, p\u00ebr shkak se di t\u00eb lexoj\u00eb, duke u ekzekutuar n\u00eb Kubernetes, tipin e personalizuar t\u00eb burimeve, automatikisht fillon t\u00eb mbledh\u00eb metrika nga sistemi i ri. Kjo \u00ebsht\u00eb mjaft e p\u00ebrshtatshme. <\/p>\n<p>Deploy-i i par\u00eb q\u00eb b\u00ebm\u00eb n\u00eb Kubernetes ishte n\u00eb mars 2018. Dhe gjat\u00eb k\u00ebsaj kohe ne nuk kemi p\u00ebrjetuar kurrfar\u00eb problemi me t\u00eb. Ai punon mjaft stabilisht pa ndonj\u00eb defekt t\u00eb r\u00ebnd\u00ebsish\u00ebm. Gjithashtu, ne mund ta zgjerim m\u00eb tej. Aktualisht, na mjaftojn\u00eb ato mund\u00ebsi q\u00eb ka, dhe ritmi i zhvillimit t\u00eb Kubernetes na p\u00eblqen shum\u00eb. N\u00eb k\u00ebt\u00eb moment, mbi 3000 konteiner\u00eb ndodhen n\u00eb Kubernetes. Klasteri p\u00ebrb\u00ebhet nga disa Node. Nd\u00ebrkoh\u00eb, ai \u00ebsht\u00eb i mb\u00ebshtetur, stabil dhe shum\u00eb i kontrolluesh\u00ebm.<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.2 - 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.\" \/>\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.2\" \/>\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.\" \/>\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\udd47Deploy 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 Lamoda.","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.","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}]}}