{"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\/hu\/blog\/administrirovanie\/deploj-prilozhenij-v-vm-nomad-i-kubernetes","title":{"rendered":"Alkalmaz\u00e1sok telep\u00edt\u00e9se VM-be, Nomadba \u00e9s Kubernetesbe","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>\u00dcdv mindenkinek! A nevem Pavel Agaletckij. Csoportvezet\u0151k\u00e9nt dolgozom azon a csapaton, amely a Lamoda sz\u00e1ll\u00edt\u00e1si rendszer\u00e9t fejleszti. 2018-ban a HighLoad++ konferenci\u00e1n besz\u00e9ltem, \u00e9s ma szeretn\u00e9m bemutatni az el\u0151ad\u00e1som sz\u00f6veges \u00e1t\u00edr\u00e1s\u00e1t.<\/p>\n<p>A t\u00e9m\u00e1m a v\u00e1llalatunk tapasztalatait mutatja be k\u00fcl\u00f6nb\u00f6z\u0151 k\u00f6rnyezetekbe t\u00f6rt\u00e9n\u0151 rendszerek \u00e9s szolg\u00e1ltat\u00e1sok telep\u00edt\u00e9s\u00e9r\u0151l. Kezdve a prehistorikus id\u0151szakt\u00f3l, amikor m\u00e9g minden rendszer\u00fcnket hagyom\u00e1nyos virtu\u00e1lis szerverekre telep\u00edtett\u00fck, eg\u00e9szen a fokozatos \u00e1tmenetig a Nomadt\u00f3l a Kubernetesre t\u00f6rt\u00e9n\u0151 telep\u00edt\u00e9sig. Elmondom, mi\u00e9rt tett\u00fck ezt, \u00e9s milyen probl\u00e9m\u00e1kkal szembes\u00fclt\u00fcnk a folyamat sor\u00e1n.<\/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=\"Vide\u00f3 lej\u00e1tsz\u00e1sa\" 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>Alkalmaz\u00e1sok telep\u00edt\u00e9se VM-re<\/h1>\n<p>\nKezdj\u00fck azzal, hogy 3 \u00e9vvel ezel\u0151tt a c\u00e9g minden rendszere \u00e9s szolg\u00e1ltat\u00e1sa hagyom\u00e1nyos virtu\u00e1lis szervereken ker\u00fclt telep\u00edt\u00e9sre. M\u0171szakilag \u00fagy volt megszervezve, hogy a rendszereink \u00f6sszes k\u00f3dja automatiz\u00e1lt build eszk\u00f6z\u00f6kkel, jenkins seg\u00edts\u00e9g\u00e9vel k\u00e9sz\u00fclt. Az Ansible seg\u00edts\u00e9g\u00e9vel a verzi\u00f3kezel\u0151 rendszer\u00fcnkb\u0151l telep\u00edtett\u00fck a virtu\u00e1lis szerverekre. Minden egyes rendszer, amely a c\u00e9g\u00fcnkn\u00e9l volt, legal\u00e1bb 2 szerverre ker\u00fclt telep\u00edt\u00e9sre: az egyik a head, a m\u00e1sik a tail volt. Ezek a rendszerek teljesen azonosak voltak minden be\u00e1ll\u00edt\u00e1sban, teljes\u00edtm\u00e9nyben, konfigur\u00e1ci\u00f3ban \u00e9s egy\u00e9b param\u00e9terekben. Az egyetlen k\u00fcl\u00f6nbs\u00e9g k\u00f6zt\u00fck az volt, hogy a head kapta a felhaszn\u00e1l\u00f3i forgalmat, m\u00edg a tail soha nem kapott felhaszn\u00e1l\u00f3i forgalmat. <\/p>\n<p>Mi\u00e9rt volt ez \u00edgy? <\/p>\n<p>Amikor \u00faj verzi\u00f3kat telep\u00edtett\u00fcnk az alkalmaz\u00e1sunkb\u00f3l, szerett\u00fck volna biztos\u00edtani a z\u00f6kken\u0151mentes telep\u00edt\u00e9st, vagyis a felhaszn\u00e1l\u00f3k sz\u00e1m\u00e1ra \u00e9szrevehetetlen k\u00f6vetkezm\u00e9nyekkel. Ezt \u00fagy \u00e9rt\u00fck el, hogy a k\u00f6vetkez\u0151, Ansible \u00e1ltal \u00f6ssze\u00e1ll\u00edtott verzi\u00f3t a tail-re telep\u00edtett\u00fck. Itt azok, akik a telep\u00edt\u00e9ssel foglalkoztak, meg tudt\u00e1k n\u00e9zni \u00e9s megbizonyosodni arr\u00f3l, hogy minden rendben van: az \u00f6sszes metrikus \u00e9rt\u00e9k, szakasz \u00e9s alkalmaz\u00e1s m\u0171k\u00f6dik; a sz\u00fcks\u00e9ges szkriptek elindulnak. Csak miut\u00e1n megbizonyosodtak arr\u00f3l, hogy minden rendben van, \u00e1tkapcsolt\u00e1k a forgalmat. A forgalom azon szerverre kezdett \u00e1ramlani, amely kor\u00e1bban tail volt. Az a szerver, amely kor\u00e1bban head volt, felhaszn\u00e1l\u00f3i forgalom n\u00e9lk\u00fcl maradt, de a rajta folyamatban l\u00e9v\u0151 el\u0151z\u0151 verzi\u00f3val.<\/p>\n<p>\u00cdgy teh\u00e1t a felhaszn\u00e1l\u00f3k sz\u00e1m\u00e1ra ez z\u00f6kken\u0151mentes volt. Mivel a v\u00e1lt\u00e1s azonnali, mivel csup\u00e1n a terhel\u00e9seloszt\u00f3 v\u00e1lt\u00e1s\u00e1r\u00f3l van sz\u00f3. Nagyon k\u00f6nnyen vissza lehet t\u00e9rni az el\u0151z\u0151 verzi\u00f3ra, csak annyit kell tennie, hogy visszakapcsolja a terhel\u00e9seloszt\u00f3t. Ezen k\u00edv\u00fcl biztos\u00edthattuk az alkalmaz\u00e1s k\u00e9pess\u00e9geit a termel\u00e9s el\u0151tt, miel\u0151tt a felhaszn\u00e1l\u00f3i forgalom \u00e9rkezett volna, ami el\u00e9g k\u00e9nyelmes volt. <\/p>\n<p>Mik voltak az el\u0151ny\u00f6k, amiket mindezen kereszt\u00fcl l\u00e1ttunk?<\/p>\n<ol>\n<li>El\u0151sz\u00f6r is, ez el\u00e9g <b>egyszer\u0171en m\u0171k\u00f6dik.<\/b> Mindenki sz\u00e1m\u00e1ra vil\u00e1gos, hogyan m\u0171k\u00f6dik egy ilyen telep\u00edt\u00e9si s\u00e9ma, mert a legt\u00f6bb ember valaha telep\u00edtett m\u00e1r hagyom\u00e1nyos virtu\u00e1lis szerverekre.<\/li>\n<li>Ez el\u00e9g <b>megb\u00edzhat\u00f3<\/b>, mivel a telep\u00edt\u00e9si technol\u00f3gia egyszer\u0171, amelyet ezernyi c\u00e9g kipr\u00f3b\u00e1lt. Milli\u00f3nyi szerver telep\u00fcl \u00edgy. Neh\u00e9z valamit elrontani. <\/li>\n<li>V\u00e9g\u00fcl, megkaptuk a <b>atomikus telep\u00edt\u00e9seket<\/b>. Azok a telep\u00edt\u00e9sek, amelyek a felhaszn\u00e1l\u00f3k sz\u00e1m\u00e1ra egyszerre t\u00f6rt\u00e9nnek, an\u00e9lk\u00fcl, hogy \u00e9szlelni kellene a v\u00e1lt\u00e1st a r\u00e9gi verzi\u00f3 \u00e9s az \u00faj k\u00f6z\u00f6tt. <\/li>\n<\/ol>\n<p>\nDe mindezekben l\u00e1ttunk n\u00e9h\u00e1ny h\u00e1tr\u00e1nyt is: <\/p>\n<ol>\n<li>A termel\u00e9si k\u00f6rnyezeten k\u00edv\u00fcl, l\u00e9teznek m\u00e1s k\u00f6rnyezetek is, mint p\u00e9ld\u00e1ul a qa \u00e9s preproduction. Akkoriban sok szerver\u00fcnk \u00e9s k\u00f6r\u00fclbel\u00fcl 60 szolg\u00e1ltat\u00e1sunk volt. Ez\u00e9rt kellett <b>minden szolg\u00e1ltat\u00e1s sz\u00e1m\u00e1ra fenntartani a sz\u00e1m\u00e1ra relev\u00e1ns verzi\u00f3t <\/b>a virtu\u00e1lis g\u00e9pb\u0151l. R\u00e1ad\u00e1sul, ha friss\u00edteni akarja a k\u00f6nyvt\u00e1rakat vagy \u00faj f\u00fcgg\u0151s\u00e9geket szeretne telep\u00edteni, akkor ezt minden k\u00f6rnyezetben meg kell tennie. Id\u0151ben is szinkroniz\u00e1lni kellett, amikor \u00faj verzi\u00f3t akartunk telep\u00edteni az alkalmaz\u00e1sunkb\u00f3l, a devops \u00e1ltal sz\u00fcks\u00e9ges k\u00f6rnyezeti be\u00e1ll\u00edt\u00e1ssal. \u00cdgy k\u00f6nnyen olyan helyzetbe ker\u00fclhet\u00fcnk, amikor a k\u00f6rnyezet\u00fcnk t\u00f6bb szempontb\u00f3l is elt\u00e9rhet egym\u00e1st\u00f3l a k\u00fcl\u00f6nb\u00f6z\u0151 k\u00f6rnyezetekben. P\u00e9ld\u00e1ul a QA k\u00f6rnyezetben m\u00e1s k\u00f6nyvt\u00e1r verzi\u00f3k lesznek, mint a termel\u00e9sben, ami probl\u00e9m\u00e1khoz vezethet. <\/li>\n<li><b>A f\u00fcgg\u0151s\u00e9gek friss\u00edt\u00e9s\u00e9nek neh\u00e9zs\u00e9ge<\/b> a kiv\u00e1lasztott alkalmaz\u00e1s\u00e1ban. Ez nem rajtad m\u00falik, hanem egy m\u00e1sik csapaton. Nevezetesen a devops csapaton, amely a szervereket t\u00e1mogatja. Meg kell fogalmaznia sz\u00e1mukra a megfelel\u0151 feladatot, \u00e9s meg kell adnia a le\u00edr\u00e1st arr\u00f3l, mit szeretne tenni.<\/li>\n<li>Akkoriban azt is szerett\u00fck volna, hogy a megl\u00e9v\u0151 nagy monolitokat kisebb szolg\u00e1ltat\u00e1sokra osszuk, mivel tudtuk, hogy ezek sz\u00e1ma folyamatosan n\u00f6vekedni fog. Akkor m\u00e1r t\u00f6bb mint 100 szolg\u00e1ltat\u00e1sunk volt. Minden \u00faj szolg\u00e1ltat\u00e1shoz k\u00fcl\u00f6n virtu\u00e1lis g\u00e9pet kellett l\u00e9trehozni, amit szint\u00e9n karbantartani \u00e9s telep\u00edteni kellett. Ezen k\u00edv\u00fcl nem egy, hanem legal\u00e1bb k\u00e9t g\u00e9pre volt sz\u00fcks\u00e9g. Ehhez j\u00f6tt m\u00e9g a QA k\u00f6rnyezet is. Ez probl\u00e9m\u00e1kat okozott, \u00e9s megnehez\u00edtette az \u00faj rendszerek l\u00e9trehoz\u00e1s\u00e1t \u00e9s ind\u00edt\u00e1s\u00e1t. <b>A folyamat \u00edgy bonyolultabb\u00e1, k\u00f6lts\u00e9gesebb\u00e9 \u00e9s id\u0151ig\u00e9nyesebb\u00e9 v\u00e1lt.<\/b><\/li>\n<\/ol>\n<p>\nEz\u00e9rt \u00fagy d\u00f6nt\u00f6tt\u00fcnk, hogy c\u00e9lszer\u0171bb a hagyom\u00e1nyos virtu\u00e1lis g\u00e9pek telep\u00edt\u00e9se helyett a docker kont\u00e9nerekbe val\u00f3 alkalmaz\u00e1s-deploy-ra v\u00e1ltani. A docker haszn\u00e1lat\u00e1val olyan rendszerre van sz\u00fcks\u00e9g, amely k\u00e9pes az alkalmaz\u00e1st klaszterben futtatni, mivel nem lehet egyszer\u0171en csak \u00fagy elind\u00edtani egy kont\u00e9nert. \u00c1ltal\u00e1ban szeretn\u00e9nk figyelni, hogy h\u00e1ny kont\u00e9ner van fut\u00e1sban, hogy automatikusan elinduljanak. Ez\u00e9rt sz\u00fcks\u00e9g\u00fcnk volt egy ir\u00e1ny\u00edt\u00f3 rendszer kiv\u00e1laszt\u00e1s\u00e1ra. <\/p>\n<p>Hosszan t\u00f6prengt\u00fcnk azon, hogy melyiket v\u00e1lasszuk. Az a helyzet, hogy akkoriban ez a telep\u00edt\u00e9si technol\u00f3gia a hagyom\u00e1nyos virtu\u00e1lis szerverekre elavultnak sz\u00e1m\u00edtott, mivel nem a legfrissebb oper\u00e1ci\u00f3s rendszereket haszn\u00e1ltuk. Valamikor m\u00e9g FreeBSD-t is haszn\u00e1ltunk, amit nehezen lehetett karbantartani. Meg\u00e9rtett\u00fck, hogy min\u00e9l el\u0151bb \u00e1t kell migr\u00e1lnunk a dockerra. A DevOps csapatunk a megl\u00e9v\u0151 tapasztalataik alapj\u00e1n v\u00e1lasztotta a Nomad nev\u0171 megold\u00e1st. <\/p>\n<h1>\u00c1t\u00e1ll\u00e1s a Nomadra<\/h1>\n<p>\nA Nomad a \"HashiCorp\" c\u00e9gt\u0151l sz\u00e1rmaz\u00f3 term\u00e9k. Ezenk\u00edv\u00fcl m\u00e1s megold\u00e1saikr\u00f3l is ismertek:<\/p>\n<p><img decoding=\"async\" alt=\"Alkalmaz\u00e1sok telep\u00edt\u00e9se VM-be, Nomadba \u00e9s Kubernetesbe\" src=\"\/wp-content\/uploads\/2019\/05\/25dfbfe20b92f6e6865bdd8a2f15d8fa.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>\"Consul\"<\/b> \u2014 ez egy szolg\u00e1ltat\u00e1sfelfedez\u0151 eszk\u00f6z.<\/p>\n<p><b>\"Terraform\"<\/b> \u2014 szerverkezel\u0151 rendszer, amely lehet\u0151v\u00e9 teszi a konfigur\u00e1ci\u00f3val t\u00f6rt\u00e9n\u0151 be\u00e1ll\u00edt\u00e1sokat, amit infrastructure-as-code-nak neveznek.<\/p>\n<p><b>\"Vagrant\"<\/b> \u2014 lehet\u0151v\u00e9 teszi virtu\u00e1lis g\u00e9pek helyi vagy felh\u0151beli telep\u00edt\u00e9s\u00e9t bizonyos konfigur\u00e1ci\u00f3s f\u00e1jlok seg\u00edts\u00e9g\u00e9vel. <\/p>\n<p>Abban az id\u0151ben a Nomad el\u00e9g egyszer\u0171 megold\u00e1snak t\u0171nt, amelyre gyorsan \u00e1t lehetett \u00e1llni an\u00e9lk\u00fcl, hogy az eg\u00e9sz infrastrukt\u00far\u00e1t meg kellett volna v\u00e1ltoztatni. R\u00e1ad\u00e1sul viszonylag k\u00f6nnyen elsaj\u00e1t\u00edthat\u00f3. Ez\u00e9rt ezt v\u00e1lasztottuk a kont\u00e9ner\u00fcnk sz\u0171r\u0151rendszerek\u00e9nt. <\/p>\n<p>Mi sz\u00fcks\u00e9ges ahhoz, hogy egy\u00e1ltal\u00e1n telep\u00edthess\u00fck a rendszert a Nomadban? <\/p>\n<ol>\n<li>Mindenekel\u0151tt sz\u00fcks\u00e9g van <b>docker image-re<\/b> az alkalmaz\u00e1s\u00e1hoz. \u00d6ssze kell \u00e1ll\u00edtani, \u00e9s el kell helyezni a docker k\u00e9pek t\u00e1rol\u00f3j\u00e1ban. Ebben az esetben ez az artifactory \u2013 egy olyan rendszer, amely lehet\u0151v\u00e9 teszi k\u00fcl\u00f6nb\u00f6z\u0151 t\u00edpus\u00fa artefaktumok felt\u00f6lt\u00e9s\u00e9t. K\u00e9pes archiv\u00e1l\u00e1sokat, docker k\u00e9peket, PHP composer csomagokat, NPM csomagokat stb. t\u00e1rolni. <\/li>\n<li>Tov\u00e1bb\u00e1 sz\u00fcks\u00e9ges<b> konfigur\u00e1ci\u00f3s f\u00e1jl<\/b>, amely megmondja a Nomad-nak, hogy mit, hov\u00e1 \u00e9s milyen mennyis\u00e9gben szeretne telep\u00edteni. <\/li>\n<\/ol>\n<p>\nAmikor a Nomad-r\u00f3l besz\u00e9l\u00fcnk, az inform\u00e1ci\u00f3s f\u00e1jl form\u00e1tumak\u00e9nt HCL nyelvet haszn\u00e1l, ami az al\u00e1bbiakat jelenti <i>HashiCorp Configuration Language<\/i>. Ez egy Yaml-ra \u00e9p\u00fcl\u0151 szuperhalmaz, amely lehet\u0151v\u00e9 teszi, hogy a szolg\u00e1ltat\u00e1s\u00e1t Nomad kifejez\u00e9seivel \u00edrja le. <\/p>\n<p><img decoding=\"async\" alt=\"Alkalmaz\u00e1sok telep\u00edt\u00e9se VM-be, Nomadba \u00e9s Kubernetesbe\" src=\"\/wp-content\/uploads\/2019\/05\/bee3d1feedd52249c4325d8a3984a766.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEz megmondja, hogy h\u00e1ny kont\u00e9nert szeretne telep\u00edteni, mely k\u00e9pekb\u0151l kell \u00e1tadnia nekik k\u00fcl\u00f6nb\u00f6z\u0151 param\u00e9tereket a telep\u00edt\u00e9s sor\u00e1n. Teh\u00e1t ezt a f\u00e1jlt kapja meg a Nomad, \u00e9s ennek megfelel\u0151en ind\u00edtja el a kont\u00e9nereket a termel\u00e9sben. <\/p>\n<p>Az eset\u00fcnkben r\u00e1j\u00f6tt\u00fcnk, hogy nem lenne k\u00e9nyelmes minden szolg\u00e1ltat\u00e1shoz ugyanazokat, azonos HCL f\u00e1jlokat \u00edrni, mivel sok a szolg\u00e1ltat\u00e1s, \u00e9s n\u00e9ha szeretn\u00e9nk friss\u00edteni \u0151ket. El\u0151fordul, hogy egy szolg\u00e1ltat\u00e1s nem egy p\u00e9ld\u00e1nyban, hanem t\u00f6bb k\u00fcl\u00f6nb\u00f6z\u0151ben van telep\u00edtve. P\u00e9ld\u00e1ul az egyik rendszer\u00fcnk, amely a termel\u00e9sben van, t\u00f6bb mint 100 p\u00e9ld\u00e1nnyal rendelkezik. Azonos k\u00e9pekb\u0151l indulnak, de k\u00fcl\u00f6nb\u00f6z\u0151 konfigur\u00e1ci\u00f3s be\u00e1ll\u00edt\u00e1sokkal \u00e9s konfigur\u00e1ci\u00f3s f\u00e1jlokkal rendelkeznek. <\/p>\n<p>Ez\u00e9rt \u00fagy d\u00f6nt\u00f6tt\u00fcnk, hogy k\u00e9nyelmesebb lenne t\u00e1rolni az \u00f6sszes konfigur\u00e1ci\u00f3s f\u00e1jlunkat egy k\u00f6z\u00f6s t\u00e1rol\u00f3ban. \u00cdgy l\u00e1that\u00f3v\u00e1 v\u00e1ltak: k\u00f6nnyen karbantarthat\u00f3v\u00e1 v\u00e1ltak, \u00e9s l\u00e1thattuk, milyen rendszereink vannak. Sz\u00fcks\u00e9g eset\u00e9n nem volt neh\u00e9z valamit friss\u00edteni vagy megv\u00e1ltoztatni. \u00daj rendszert is egyszer\u0171 hozz\u00e1adni \u2013 el\u00e9g, ha l\u00e9trehoz egy konfigur\u00e1ci\u00f3s f\u00e1jlt egy \u00faj k\u00f6nyvt\u00e1ron bel\u00fcl. Abban tal\u00e1lhat\u00f3k a f\u00e1jlok: service.hcl, amely a szolg\u00e1ltat\u00e1sunk le\u00edr\u00e1s\u00e1t tartalmazza, \u00e9s n\u00e9h\u00e1ny env-f\u00e1jl, amelyek lehet\u0151v\u00e9 teszik a szolg\u00e1ltat\u00e1s be\u00e1ll\u00edt\u00e1s\u00e1t, amikor az a termel\u00e9sben van. <\/p>\n<p><img decoding=\"async\" alt=\"Alkalmaz\u00e1sok telep\u00edt\u00e9se VM-be, Nomadba \u00e9s Kubernetesbe\" src=\"\/wp-content\/uploads\/2019\/05\/c0b0bdb763d3c3bb84fbc9e5dfecff82.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00e9h\u00e1ny rendszer\u00fcnk azonban nem egy p\u00e9ld\u00e1nyban, hanem t\u00f6bb p\u00e9ld\u00e1nyban ker\u00fclt telep\u00edt\u00e9sre a termel\u00e9sben. Ez\u00e9rt \u00fagy d\u00f6nt\u00f6tt\u00fcnk, hogy nem a konfigur\u00e1ci\u00f3kat tiszta form\u00e1ban, hanem a sablonos\u00edtott form\u00e1jukban t\u00e1roljuk. A sablonkezel\u0151 nyelvk\u00e9nt pedig a <i>jinja 2<\/i>. Ilyen form\u00e1tumban t\u00e1roljuk a szolg\u00e1ltat\u00e1s konfigur\u00e1ci\u00f3s f\u00e1jljait \u00e9s a sz\u00fcks\u00e9ges env-f\u00e1jlokat. <\/p>\n<p>Ezenk\u00edv\u00fcl egy k\u00f6z\u00f6s deploy scriptet helyezt\u00fcnk el a rep\u00f3ban, amely lehet\u0151v\u00e9 teszi, hogy a szolg\u00e1ltat\u00e1s\u00e1t a megfelel\u0151 k\u00f6rnyezetbe, a megfelel\u0151 c\u00e9lnak megfelel\u0151en ind\u00edtsa \u00e9s telep\u00edtse. Amikor a HCL-konfigur\u00e1ci\u00f3t sablonra alak\u00edtottuk, a kor\u00e1bban hagyom\u00e1nyos Nomad konfigur\u00e1ci\u00f3 HCL-f\u00e1jlja n\u00e9mileg megv\u00e1ltozott.<\/p>\n<p><img decoding=\"async\" alt=\"Alkalmaz\u00e1sok telep\u00edt\u00e9se VM-be, Nomadba \u00e9s Kubernetesbe\" src=\"\/wp-content\/uploads\/2019\/05\/202472f109ba09798d592418b1774a29.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTeh\u00e1t kicser\u00e9lt\u00fck a konfigur\u00e1ci\u00f3 n\u00e9h\u00e1ny v\u00e1ltoz\u00f3j\u00e1t olyan v\u00e1ltoz\u00f3kra, amelyek az env-f\u00e1jlokb\u00f3l vagy m\u00e1s forr\u00e1sokb\u00f3l sz\u00e1rmaznak. Ezen k\u00edv\u00fcl lehet\u0151s\u00e9g\u00fcnk ny\u00edlt dinamikusan gener\u00e1lni az HCL-f\u00e1jlokat, teh\u00e1t nemcsak hagyom\u00e1nyos v\u00e1ltoz\u00f3beilleszt\u00e9seket alkalmazhatunk. Mivel a jinja t\u00e1mogatja a ciklusokat \u00e9s felt\u00e9teleket, a konfigur\u00e1ci\u00f3s f\u00e1jlokat is \u00edgy k\u00e9sz\u00edthetj\u00fck, amelyek a telep\u00edtett alkalmaz\u00e1sok hely\u00e9t\u0151l f\u00fcgg\u0151en v\u00e1ltoznak. <\/p>\n<p>P\u00e9ld\u00e1ul, ha a szolg\u00e1ltat\u00e1s\u00e1t a preporduction \u00e9s production k\u00f6rnyezetekbe k\u00edv\u00e1nja telep\u00edteni. Tegy\u00fck fel, hogy a preporduction k\u00f6rnyezetben nem szeretn\u00e9 futtatni a cron-skripteket, hanem csak a szolg\u00e1ltat\u00e1st szeretn\u00e9 l\u00e1tni egy k\u00fcl\u00f6n domainen, hogy megbizonyosodjon arr\u00f3l, hogy m\u0171k\u00f6dik. Aki telep\u00edti a szolg\u00e1ltat\u00e1st, annak a folyamat nagyon egyszer\u0171 \u00e9s \u00e1tl\u00e1that\u00f3. El\u00e9g, ha v\u00e9grehajtja a deploy.sh f\u00e1jlt, megadva, hogy melyik szolg\u00e1ltat\u00e1st szeretn\u00e9 telep\u00edteni \u00e9s melyik c\u00e9lnak. P\u00e9ld\u00e1ul, ha egy rendszert szeretne telep\u00edteni Oroszorsz\u00e1gba, Beloruszba vagy Kazahszt\u00e1nba. Ehhez el\u00e9g, ha megv\u00e1ltoztatja az egyik param\u00e9tert, \u00e9s \u00f6sszegy\u0171lik a megfelel\u0151 konfigur\u00e1ci\u00f3s f\u00e1jl. <\/p>\n<p>Amikor a Nomad szolg\u00e1ltat\u00e1s m\u00e1r telep\u00edtve van a klaszterbe, a k\u00f6vetkez\u0151t mutatja.<\/p>\n<p><img decoding=\"async\" alt=\"Alkalmaz\u00e1sok telep\u00edt\u00e9se VM-be, Nomadba \u00e9s Kubernetesbe\" src=\"\/wp-content\/uploads\/2019\/05\/60e2e2b5502936809d643d73c6d853e2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEls\u0151 l\u00e9p\u00e9sk\u00e9nt sz\u00fcks\u00e9ge van egy k\u00fcls\u0151 terhel\u00e9seloszt\u00f3ra, amely fogadja a felhaszn\u00e1l\u00f3i forgalmat. Ez egy\u00fctt fog m\u0171k\u00f6dni a Consul-al, \u00e9s megtudja t\u0151le, hogy hol, melyik noden, milyen <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/hu\/lir\/ipv4\/\"   title=\"IP-c\u00edm alapj\u00e1n hat\u00e1rozza meg a helyet\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"585\">IP-c\u00edm alapj\u00e1n hat\u00e1rozza meg a helyet<\/a> helyezkedik el a konkr\u00e9t szolg\u00e1ltat\u00e1s, amely \u00f6sszef\u00fcgg a meghat\u00e1rozott domain n\u00e9vvel. A Consul-ban a szolg\u00e1ltat\u00e1sok a Nomad-b\u00f3l sz\u00e1rmaznak. Mivel ezek ugyanannak a c\u00e9gnek a term\u00e9kei, j\u00f3l kapcsol\u00f3dnak egym\u00e1shoz. Azt mondhatjuk, hogy a Nomad alap\u00e9rtelmez\u00e9s szerint regisztr\u00e1lja az \u00f6sszes benne fut\u00f3 szolg\u00e1ltat\u00e1st a Consul-ban. <\/p>\n<p>Miut\u00e1n a k\u00fcls\u0151 terhel\u00e9seloszt\u00f3nk megtudta, hogy melyik szolg\u00e1ltat\u00e1sba kell ir\u00e1ny\u00edtani a forgalmat, az megfelel\u0151 kont\u00e9nerre vagy kont\u00e9nerekre ir\u00e1ny\u00edtja azt, amelyek a te alkalmaz\u00e1sodnak felelnek meg. Term\u00e9szetesen k\u00f6zben a biztons\u00e1gra is gondolni kell. M\u00e9g ha minden szolg\u00e1ltat\u00e1s ugyanazon virtu\u00e1lis g\u00e9peken fut is kont\u00e9nerekben, \u00e1ltal\u00e1ban meg kell tiltani a szolg\u00e1ltat\u00e1sok k\u00f6z\u00f6tti szabad hozz\u00e1f\u00e9r\u00e9st. Ezt szegment\u00e1l\u00e1ssal \u00e9rt\u00fck el. Minden szolg\u00e1ltat\u00e1s saj\u00e1t virtu\u00e1lis h\u00e1l\u00f3zaton futott, ahol a vonatkoz\u00f3 \u00fatv\u00e1laszt\u00e1si szab\u00e1lyok \u00e9s a m\u00e1s rendszerekhez \u00e9s szolg\u00e1ltat\u00e1sokhoz val\u00f3 hozz\u00e1f\u00e9r\u00e9si enged\u00e9lyez\u00e9si\/tilt\u00e1si szab\u00e1lyok szerepeltek. Ezek lehettek a klaszter belsej\u00e9ben vagy k\u00edv\u00fcl. P\u00e9ld\u00e1ul, ha meg akarod akad\u00e1lyozni, hogy egy szolg\u00e1ltat\u00e1s csatlakozzon egy bizonyos adatb\u00e1zishoz, ezt h\u00e1l\u00f3zati szegment\u00e1l\u00e1ssal lehet megtenni. Teh\u00e1t m\u00e9g v\u00e9letlen\u00fcl sem tudsz csatlakozni a tesztk\u00f6rnyezetb\u0151l a gy\u00e1rt\u00e1si adatb\u00e1zisodhoz.<\/p>\n<p>Mennyibe ker\u00fclt nek\u00fcnk a v\u00e1lt\u00e1s emberi er\u0151forr\u00e1s szempontj\u00e1b\u00f3l? <\/p>\n<p>K\u00f6r\u00fclbel\u00fcl 5-6 h\u00f3napunkba telt a c\u00e9get teljesen a Nomadra \u00e1t\u00e1ll\u00edtani. Szolg\u00e1ltat\u00e1sonk\u00e9nt v\u00e1ltottunk, de el\u00e9g gyors \u00fctemben. Minden csapat saj\u00e1t kont\u00e9nereket kellett, hogy k\u00e9sz\u00edtsen a szolg\u00e1ltat\u00e1saikhoz. <\/p>\n<p>N\u00e1lunk az a megk\u00f6zel\u00edt\u00e9s \u00e9rv\u00e9nyes\u00fcl, hogy minden csapat \u00f6n\u00e1ll\u00f3an felel\u0151s a saj\u00e1t rendszereik docker k\u00e9pei\u00e9rt. A devops csapat viszont a telep\u00edt\u00e9shez sz\u00fcks\u00e9ges \u00e1ltal\u00e1nos infrastrukt\u00far\u00e1t biztos\u00edtja, azaz a klaszter t\u00e1mogat\u00e1s\u00e1t, a CI rendszer t\u00e1mogat\u00e1s\u00e1t \u00e9s \u00edgy tov\u00e1bb. Akkoriban t\u00f6bb mint 60 rendszer\u00fcnk k\u00f6lt\u00f6z\u00f6tt a Nomadra, k\u00f6r\u00fclbel\u00fcl 2000 kont\u00e9ner alakult meg. <\/p>\n<p>A devops csapat felel\u0151s a telep\u00edt\u00e9ssel, a szerverekkel kapcsolatos \u00e1ltal\u00e1nos infrastrukt\u00far\u00e1\u00e9rt. A fejleszt\u0151csapat pedig a saj\u00e1t konkr\u00e9t rendszer\u00e9hez tartoz\u00f3 kont\u00e9nerek megval\u00f3s\u00edt\u00e1s\u00e1\u00e9rt felel, mivel \u0151k tudj\u00e1k, hogy mit is akarnak az adott kont\u00e9nerben.<\/p>\n<h1>A Nomad elhagy\u00e1s\u00e1nak okai<\/h1>\n<p>\nMilyen el\u0151ny\u00f6ket nyert\u00fcnk a Nomad \u00e9s a docker haszn\u00e1lat\u00e1val t\u00f6rt\u00e9n\u0151 telep\u00edt\u00e9s sor\u00e1n?<\/p>\n<ol>\n<li>Mi<b> biztos\u00edtottuk az azonos felt\u00e9teleket<\/b> minden k\u00f6rnyezetben. A fejleszt\u00e9sben, QA k\u00f6rnyezetben, el\u0151produkci\u00f3ban \u00e9s produkci\u00f3ban ugyanazokat a kont\u00e9nerk\u00e9peket \u00e9s azokkal az azonos f\u00fcgg\u0151s\u00e9geket haszn\u00e1lj\u00e1k. Ennek megfelel\u0151en gyakorlatilag nincs es\u00e9ly arra, hogy a produkci\u00f3ba olyan ker\u00fcl, amit kor\u00e1bban helyben vagy a tesztk\u00f6rnyezetben teszteltek. <\/li>\n<li>Azt is meg\u00e1llap\u00edtottuk, hogy elegend\u0151 <b>k\u00f6nnyen hozz\u00e1adni egy \u00faj szolg\u00e1ltat\u00e1st.<\/b>. B\u00e1rmilyen \u00faj rendszer szempontj\u00e1b\u00f3l a telep\u00edt\u00e9s nagyon egyszer\u0171en indul. Csak annyit kell tennie, hogy bemegy a konfigur\u00e1ci\u00f3kat t\u00e1rol\u00f3 rep\u00f3ba, hozz\u00e1ad egy \u00faj konfigur\u00e1ci\u00f3t az \u00d6n rendszer\u00e9hez, \u00e9s m\u00e1r k\u00e9szen is \u00e1ll. A DevOps sz\u00e1m\u00e1ra nem jelent plusz er\u0151fesz\u00edt\u00e9st, hogy a rendszer\u00e9t a produkci\u00f3ba telep\u00edtse. <\/li>\n<li>Transzparens \u00e1rak <b>konfigur\u00e1ci\u00f3s f\u00e1jlok<\/b> egy k\u00f6z\u00f6s rep\u00f3ban <b>\u00e1ttekinthet\u0151v\u00e9 v\u00e1ltak<\/b>. Abban a pillanatban, amikor a rendszereinket telep\u00edtett\u00fck <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/hu\/vps\/\"   title=\"virtu\u00e1lis szerverek\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"791\">virtu\u00e1lis szerverek<\/a>, Ansible-t haszn\u00e1ltunk, ahol a konfigur\u00e1ci\u00f3k ugyanabban a rep\u00f3ban voltak. Azonban a legt\u00f6bb fejleszt\u0151 sz\u00e1m\u00e1ra ennek kezel\u00e9se kicsit nehezebb volt. A konfigur\u00e1ci\u00f3k \u00e9s a k\u00f3d mennyis\u00e9ge, amelyet hozz\u00e1 kell adni a szolg\u00e1ltat\u00e1s telep\u00edt\u00e9s\u00e9hez, sokkal kisebb lett. Plusz a DevOps sz\u00e1m\u00e1ra rendk\u00edv\u00fcl egyszer\u0171 jav\u00edtani vagy m\u00f3dos\u00edtani. P\u00e9ld\u00e1ul, ha \u00faj verzi\u00f3ra v\u00e1ltanak a Nomad eset\u00e9ben, t\u00f6megesen friss\u00edthetik az \u00f6sszes oper\u00e1ci\u00f3s f\u00e1jlt, amely ugyanabban a helyen tal\u00e1lhat\u00f3.<\/li>\n<\/ol>\n<p>\nDe n\u00e9h\u00e1ny h\u00e1tr\u00e1nnyal is szembes\u00fclt\u00fcnk: <\/p>\n<p>Kider\u00fclt, hogy mi <b>nem tudtuk el\u00e9rni a deployok z\u00f6kken\u0151mentess\u00e9g\u00e9t <\/b>a Nomad eset\u00e9ben. Amikor a kont\u00e9nereket k\u00fcl\u00f6nb\u00f6z\u0151 k\u00f6rnyezetekb\u0151l tolt\u00e1k ki, el\u0151fordulhatott, hogy az elindult, \u00e9s a Nomad m\u00e1r k\u00e9szen \u00e1llt a forgalom fogad\u00e1s\u00e1ra. Ez m\u00e9g azel\u0151tt t\u00f6rt\u00e9nt, hogy a benne l\u00e9v\u0151 alkalmaz\u00e1s elindult volna. Emiatt a rendszer r\u00f6vid id\u0151re 500-as hib\u00e1kat kezdett el kiadni, mert a forgalom olyan kont\u00e9nerekhez kezdett el menni, amelyek m\u00e9g nem voltak k\u00e9szen a fogad\u00e1sra. <\/p>\n<p>Tal\u00e1lkoztunk n\u00e9h\u00e1ny <b>hib\u00e1val.<\/b>A legfontosabb hiba abban rejlik, hogy a Nomad nem kezeli j\u00f3l a nagy klasztert, ha sok rendszered \u00e9s kont\u00e9nered van. Amikor egy, a Nomad klaszter\u00e9be tartoz\u00f3 szervert szeretn\u00e9l karbantart\u00e1sra kivenni, meglehet\u0151sen nagy a val\u00f3sz\u00edn\u0171s\u00e9ge, hogy a klaszter nem fog j\u00f3l \u00e9rezni mag\u00e1t, \u00e9s sz\u00e9tesik. Egyes kont\u00e9nerek p\u00e9ld\u00e1ul \u00f6sszeomolhatnak, \u00e9s nem indulnak \u00fajra \u2014 ez k\u00e9s\u0151bb nagyon dr\u00e1g\u00e1n fog kij\u00f6nni, ha minden rendszered \u00e9ppen a Nomad \u00e1ltal kezelt klaszterben fut a termel\u00e9sben. <\/p>\n<p>Ez\u00e9rt \u00fagy d\u00f6nt\u00f6tt\u00fcnk, hogy elgondolkodunk, merre tov\u00e1bb. Ekkor m\u00e1r sokkal jobban tudtuk, mit szeretn\u00e9nk el\u00e9rni. Nevezetesen: megb\u00edzhat\u00f3s\u00e1gra, egy kicsit t\u00f6bb funkci\u00f3ra, mint amit a Nomad biztos\u00edt, \u00e9s egy \u00e9rettebb, stabilabb rendszerre v\u00e1gyunk. <\/p>\n<p>E tekintetben a Kubernetes-re esett a v\u00e1laszt\u00e1sunk, mint a legn\u00e9pszer\u0171bb platformra a klaszterek futtat\u00e1s\u00e1hoz. F\u0151leg az\u00e9rt, mert a kont\u00e9nereink m\u00e9rete \u00e9s sz\u00e1ma el\u00e9g nagy volt. Ilyen c\u00e9lokra a Kubernetes t\u0171nt a legmegfelel\u0151bb rendszernek azok k\u00f6z\u00fcl, amiket megvizsg\u00e1lhattunk. <\/p>\n<h1>\u00c1t\u00e1ll\u00e1s a Kubernetes-re<\/h1>\n<p>\nKicsit mes\u00e9lek a Kubernetes alapfogalmair\u00f3l, \u00e9s arr\u00f3l, hogyan k\u00fcl\u00f6nb\u00f6znek a Nomadt\u00f3l. <\/p>\n<p><img decoding=\"async\" alt=\"Alkalmaz\u00e1sok telep\u00edt\u00e9se VM-be, Nomadba \u00e9s Kubernetesbe\" src=\"\/wp-content\/uploads\/2019\/05\/5723a69309f387e6cc6c5959b62ca18b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEls\u0151sorban a Kubernetes legalapvet\u0151bb fogalma a pod. <b>Pod<\/b> \u2014 egy vagy t\u00f6bb kont\u00e9ner csoportja, amelyek mindig egy\u00fctt indulnak el. \u00dagy m\u0171k\u00f6dnek, mintha mindig egyetlen virtu\u00e1lis g\u00e9pen lenn\u00e9nek. Egym\u00e1s sz\u00e1m\u00e1ra a 127.0.0.1 IP-c\u00edmen, k\u00fcl\u00f6nb\u00f6z\u0151 portokon \u00e9rhet\u0151k el. <\/p>\n<p>Tegy\u00fck fel, hogy van egy PHP-alkalmaz\u00e1sod, amely nginx-b\u0151l \u00e9s php-fpm-b\u0151l \u00e1ll \u2014 klasszikus s\u00e9ma. Val\u00f3sz\u00edn\u0171leg azt szeretn\u00e9d, hogy az nginx \u00e9s a php-fpm kont\u00e9nerei mindig egy\u00fctt legyenek. A Kubernetes lehet\u0151v\u00e9 teszi, hogy ezt el\u00e9rd, ha egy k\u00f6z\u00f6s pod-k\u00e9nt \u00edrod le \u0151ket. Pontosan ezt nem tudtuk megval\u00f3s\u00edtani a Nomad seg\u00edts\u00e9g\u00e9vel.<\/p>\n<p>A m\u00e1sodik fogalom pedig <b>stb.);<\/b>. A l\u00e9nyeg az, hogy a pod \u00f6nmag\u00e1ban egy efemer dolog, elindul \u00e9s elt\u0171nik. Azt akarod, hogy el\u0151sz\u00f6r kill-eld az \u00f6sszes kor\u00e1bbi kont\u00e9nered, majd azonnal ind\u00edtsd el az \u00faj verzi\u00f3kat, vagy fokozatosan szeretn\u00e9d \u0151ket bevezetni \u2013 \u00e9ppen ez\u00e9rt a deployment fogalma felel\u0151s. Ez \u00edrja le, hogyan telep\u00edted a pod-okat, milyen mennyis\u00e9gben \u00e9s hogyan friss\u00edted \u0151ket. <\/p>\n<p>A harmadik fogalom pedig <b>a SystemD inicializ\u00e1l\u00e1si rendszer sz\u00e1m\u00e1ra:<\/b>A service is essentially your system that accepts some traffic and then directs it to one or more pods corresponding to your service. This means it allows you to state that all incoming traffic for a specific service with a given name should be routed to these specific pods. Additionally, it provides you with traffic balancing. This way, you can run two pods of your application, and all incoming traffic will be evenly distributed among the related pods for that service.<\/p>\n<p>And the fourth main concept is <b>Ingress<\/b>. This is a service that runs in a Kubernetes cluster. It acts as an external load balancer that handles all incoming requests. Using the Kubernetes API, Ingress can determine where these requests should be sent. Moreover, it does this very flexibly. You can specify that all requests to this host and such a URL should be sent to this service. And those requests coming to this host but on a different URL should be sent to another service. <\/p>\n<p>The coolest thing from the perspective of the application developer is that you can manage all of this yourself. By setting up the Ingress configuration, you can route all traffic arriving at a specific API to individual containers, for example, written in Go. And the traffic coming to the same domain but on another URL can be sent to containers written in PHP, where there's a lot of logic, but they are not very fast.<\/p>\n<p>If we compare all these concepts with Nomad, we can say that the first three concepts together form a Service. The last concept is absent in Nomad itself. We used an external load balancer for this: it could be haproxy, nginx, nginx+, and so on. In the case of Kubernetes, you don't need to introduce this additional concept separately. However, if you look at Ingress internally, it is either nginx, haproxy, or traefik, but built-in within Kubernetes. <\/p>\n<p>All the concepts I described are essentially resources that exist within the Kubernetes cluster. The YAML format is used to describe them in Kubernetes, which is more readable and familiar than the HCL files used in Nomad. Structurally, they describe the same thing in the case of a pod, for example. They indicate \u2013 I want to deploy these pods there, with these images, in this quantity. <\/p>\n<p><img decoding=\"async\" alt=\"Alkalmaz\u00e1sok telep\u00edt\u00e9se VM-be, Nomadba \u00e9s Kubernetesbe\" src=\"\/wp-content\/uploads\/2019\/05\/13836e7474b377a5e6b05112a53bfedd.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEzen k\u00edv\u00fcl meg\u00e9rtett\u00fck, hogy nem szeretn\u00e9nk k\u00e9zzel l\u00e9trehozni minden egyes er\u0151forr\u00e1st: deployment, szolg\u00e1ltat\u00e1sok, Ingress \u00e9s \u00edgy tov\u00e1bb. Ehelyett azt akartuk, hogy a telep\u00edt\u00e9s sor\u00e1n minden rendszer\u00fcnket le\u00edrhassuk Kubernetes terminol\u00f3gi\u00e1j\u00e1ban, \u00edgy nem kell k\u00e9zzel \u00fajra l\u00e9trehoznunk az \u00f6sszes sz\u00fcks\u00e9ges er\u0151forr\u00e1st a megfelel\u0151 sorrendben. E c\u00e9lra a Helm rendszert v\u00e1lasztottuk. <\/p>\n<h1>A Helm alapvet\u0151 fogalmai<\/h1>\n<p>\nA Helm a Kuberneteshez k\u00e9sz\u00fclt. Nagyon hasonl\u00f3an m\u0171k\u00f6dik, mint a programoz\u00e1si nyelvek csomagkezel\u0151i. Lehet\u0151v\u00e9 teszi, hogy a szolg\u00e1ltat\u00e1st, p\u00e9ld\u00e1ul az nginx deployment, php-fpm deployment, Ingress konfigur\u00e1ci\u00f3 \u00e9s configmap-ek (ez egy olyan entit\u00e1s, amely lehet\u0151v\u00e9 teszi a k\u00f6rnyezeti v\u00e1ltoz\u00f3k \u00e9s egy\u00e9b param\u00e9terek megad\u00e1s\u00e1t a rendszeredhez) \u00fagynevezett chartok form\u00e1j\u00e1ban t\u00e1rolhassuk. Ek\u00f6zben a Helm <b>csomagkezel\u0151<\/b> a Kubernetes f\u00f6l\u00f6tt m\u0171k\u00f6dik. <b>. Teh\u00e1t nem egy k\u00fcl\u00f6n\u00e1ll\u00f3 rendszer, hanem csak egy \u00fajabb szolg\u00e1ltat\u00e1s, amely a klaszterben fut. Az API-j\u00e1n kereszt\u00fcl interakci\u00f3ba l\u00e9psz vele parancssori utas\u00edt\u00e1ssal. Az el\u0151nye, hogy m\u00e9g ha a helm hib\u00e1t is jelez, vagy elt\u00e1vol\u00edtod a klaszterb\u0151l, a szolg\u00e1ltat\u00e1said nem t\u0171nnek el, mivel a helm val\u00f3j\u00e1ban csak a rendszer ind\u00edt\u00e1s\u00e1\u00e9rt felel\u0151s. A szolg\u00e1ltat\u00e1sok m\u0171k\u00f6d\u00e9s\u00e9t \u00e9s \u00e1llapot\u00e1t tov\u00e1bbra is a Kubernetes biztos\u00edtja.<\/b>Azt is meg\u00e9rtett\u00fck, hogy <\/p>\n<p>a sablonoz\u00e1s <b>, amelyet kor\u00e1bban saj\u00e1t magunknak kellett megval\u00f3s\u00edtanunk a jinja integr\u00e1l\u00e1s\u00e1val a konfigur\u00e1ci\u00f3inkba, a helm egyik alapvet\u0151 funkci\u00f3ja. Minden olyan konfigur\u00e1ci\u00f3t, amelyet a rendszereidhez k\u00e9sz\u00edtesz, a helm sablonk\u00e9nt t\u00e1rol, amelyek egy kicsit hasonl\u00edtanak a jinja-ra, de val\u00f3j\u00e1ban a Go nyelv sablonoz\u00e1s\u00e1t haszn\u00e1lj\u00e1k, amelyen a helm \u00e9s a Kubernetes is \u00edr\u00f3dott.<\/b>A Helm m\u00e9g n\u00e9h\u00e1ny tov\u00e1bbi fogalmat is bevezet. <\/p>\n<p>A Chart <\/p>\n<p><b>a szolg\u00e1ltat\u00e1sod le\u00edr\u00e1sa. M\u00e1s csomagkezel\u0151k eset\u00e9ben ezt csomagnak, bundlenek vagy hasonl\u00f3nak nevezn\u00e9k. Itt ezt chart-nak h\u00edvj\u00e1k.<\/b> A Values <\/p>\n<p><b>azok a v\u00e1ltoz\u00f3k, amelyeket a sablonokb\u00f3l k\u00e9sz\u00fclt konfigur\u00e1ci\u00f3id \u00f6sszeszerel\u00e9s\u00e9hez szeretn\u00e9l haszn\u00e1lni. <\/b>A Release <\/p>\n<p><b>Kiad\u00e1s<\/b>Minden alkalommal, amikor egy szolg\u00e1ltat\u00e1st helm seg\u00edts\u00e9g\u00e9vel telep\u00edt\u00fcnk, az egy increment\u00e1lis verzi\u00f3t kap. A Helm eml\u00e9kszik arra, mi volt a szolg\u00e1ltat\u00e1s konfigur\u00e1ci\u00f3ja az el\u0151z\u0151, el\u0151z\u0151 el\u0151tti verzi\u00f3kban. Teh\u00e1t, ha vissza kell l\u00e9pn\u00fcnk, el\u00e9g csak v\u00e9grehajtani a helm rollback parancsot, megadva neki az el\u0151z\u0151 verzi\u00f3t. M\u00e9g ha a vissza\u00e1ll\u00edt\u00e1s pillanat\u00e1ban a megfelel\u0151 konfigur\u00e1ci\u00f3 nem is \u00e1ll rendelkez\u00e9sre a t\u00e1rol\u00f3nkban, a helm m\u00e9g mindig eml\u00e9kszik arra, hogy mi volt az, \u00e9s vissza\u00e1ll\u00edtja a rendszert az el\u0151z\u0151 verzi\u00f3 \u00e1llapot\u00e1ra. <\/p>\n<p>Amikor helm-et haszn\u00e1lunk, a szok\u00e1sos Kubernetes konfigur\u00e1ci\u00f3k sablonokk\u00e1 v\u00e1lnak, amelyekben lehet\u0151s\u00e9g van v\u00e1ltoz\u00f3k, f\u00fcggv\u00e9nyek haszn\u00e1lat\u00e1ra \u00e9s felt\u00e9teles oper\u00e1torok alkalmaz\u00e1s\u00e1ra. \u00cdgy a szolg\u00e1ltat\u00e1s konfigur\u00e1ci\u00f3j\u00e1t a k\u00f6rnyezet f\u00fcggv\u00e9ny\u00e9ben lehet \u00f6ssze\u00e1ll\u00edtani.<\/p>\n<p><img decoding=\"async\" alt=\"Alkalmaz\u00e1sok telep\u00edt\u00e9se VM-be, Nomadba \u00e9s Kubernetesbe\" src=\"\/wp-content\/uploads\/2019\/05\/b70ba431211038eacf911ba3aee22363.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA gyakorlatban \u00fagy d\u00f6nt\u00f6tt\u00fcnk, hogy egy kiss\u00e9 m\u00e1s megk\u00f6zel\u00edt\u00e9st alkalmazunk, mint a Nomad eset\u00e9ben. M\u00edg a Nomad eset\u00e9ben egy t\u00e1rol\u00f3ban t\u00e1roltuk a telep\u00edt\u00e9si konfigur\u00e1ci\u00f3kat \u00e9s az n-v\u00e1ltoz\u00f3kat, amelyek sz\u00fcks\u00e9gesek voltak a szolg\u00e1ltat\u00e1s telep\u00edt\u00e9s\u00e9hez, itt \u00fagy d\u00f6nt\u00f6tt\u00fcnk, hogy ezeket k\u00e9t k\u00fcl\u00f6n t\u00e1rol\u00f3ra osztjuk. A 'deploy' t\u00e1rol\u00f3ban csak azok az n-v\u00e1ltoz\u00f3k tal\u00e1lhat\u00f3k, amelyek a telep\u00edt\u00e9shez sz\u00fcks\u00e9gesek, m\u00edg a 'helm' t\u00e1rol\u00f3ban a konfigur\u00e1ci\u00f3k vagy chartok vannak.<\/p>\n<p><img decoding=\"async\" alt=\"Alkalmaz\u00e1sok telep\u00edt\u00e9se VM-be, Nomadba \u00e9s Kubernetesbe\" src=\"\/wp-content\/uploads\/2019\/05\/4add11a8f9d9a9244127f0b07d027fa2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMit nyert\u00fcnk ezzel? <\/p>\n<p>B\u00e1r a konfigur\u00e1ci\u00f3s f\u00e1jlokban nem t\u00e1rolunk val\u00f3ban \u00e9rz\u00e9keny adatokat, p\u00e9ld\u00e1ul adatb\u00e1zis jelszavakat, ezek Kubernetes titkokk\u00e9nt vannak t\u00e1rolva. Ennek ellen\u00e9re vannak olyan inform\u00e1ci\u00f3k, amelyekhez nem szeretn\u00e9nk mindenkinek hozz\u00e1f\u00e9r\u00e9st adni. Ez\u00e9rt a 'deploy' t\u00e1rol\u00f3hoz val\u00f3 hozz\u00e1f\u00e9r\u00e9st szigor\u00fabban korl\u00e1tozzuk, m\u00edg a 'helm' t\u00e1rol\u00f3 csak a szolg\u00e1ltat\u00e1s le\u00edr\u00e1s\u00e1t tartalmazza. Ebb\u0151l kifoly\u00f3lag ezt biztons\u00e1gosan nagyobb k\u00f6r sz\u00e1m\u00e1ra is el\u00e9rhet\u0151v\u00e9 lehet tenni. <\/p>\n<p>Mivel nemcsak a produkci\u00f3s, hanem m\u00e1s k\u00f6rnyezetek is rendelkez\u00e9s\u00fcnkre \u00e1llnak, ennek a sz\u00e9tv\u00e1laszt\u00e1snak k\u00f6sz\u00f6nhet\u0151en \u00fajra felhaszn\u00e1lhatjuk a helm-chart-okat, hogy szolg\u00e1ltat\u00e1sokat telep\u00edts\u00fcnk nemcsak a produkci\u00f3s, hanem p\u00e9ld\u00e1ul a QA-k\u00f6rnyezetbe is. M\u00e9g lok\u00e1lis telep\u00edt\u00e9s c\u00e9lj\u00e1b\u00f3l is, a haszn\u00e1lat\u00e1val <i>Minikube<\/i> \u2014 ez egy olyan eszk\u00f6z, amely lehet\u0151v\u00e9 teszi a Kubernetes lok\u00e1lis futtat\u00e1s\u00e1t. <\/p>\n<p>Minden egyes t\u00e1rol\u00f3ban elk\u00fcl\u00f6n\u00edtett k\u00f6nyvt\u00e1rakat hagytunk minden szolg\u00e1ltat\u00e1s sz\u00e1m\u00e1ra. Ez\u00e9rt minden k\u00f6nyvt\u00e1rban olyan sablonok tal\u00e1lhat\u00f3k, amelyek a megfelel\u0151 diagramhoz kapcsol\u00f3dnak, \u00e9s le\u00edrj\u00e1k azokat a forr\u00e1sokat, amelyeket telep\u00edteni kell a rendszer\u00fcnk ind\u00edt\u00e1s\u00e1hoz. A \u201edeploy\u201d t\u00e1rol\u00f3ban csak az env f\u00e1jlokat hagytuk meg. Eset\u00fcnkben nem haszn\u00e1ltunk Jinja alap\u00fa sablonkezel\u00e9st, mert a Helm mag\u00e1t\u00f3l is biztos\u00edt sablonkezel\u00e9st \u2013 ez egyik alapvet\u0151 funkci\u00f3ja. <\/p>\n<p>Hagytunk egy telep\u00edt\u00e9si skriptet \u2013 deploy.sh, amely egyszer\u0171s\u00edti \u00e9s standardiz\u00e1lja a telep\u00edt\u00e9st Helm seg\u00edts\u00e9g\u00e9vel. \u00cdgy b\u00e1rki, aki telep\u00edteni szeretne, sz\u00e1m\u00e1ra a telep\u00edt\u00e9si fel\u00fclet pontosan \u00fagy n\u00e9z ki, mint a Nomad-alap\u00fa telep\u00edt\u00e9sekn\u00e9l. Ugyanaz a deploy.sh, a szolg\u00e1ltat\u00e1sod neve, \u00e9s ahov\u00e1 telep\u00edteni szeretn\u00e9d. Ez azt jelenti, hogy bel\u00fcl a Helm fut. \u0150 pedig \u00f6sszegy\u0171jti a konfigur\u00e1ci\u00f3kat a sablonokb\u00f3l, behelyettes\u00edti a sz\u00fcks\u00e9ges values f\u00e1jlokat, majd telep\u00edti \u0151ket a Kubernetesbe. <\/p>\n<h1>K\u00f6vetkeztet\u00e9sek<\/h1>\n<p>\nA Kubernetes szolg\u00e1ltat\u00e1s bonyolultabbnak t\u0171nik, mint a Nomad. <\/p>\n<p><img decoding=\"async\" alt=\"Alkalmaz\u00e1sok telep\u00edt\u00e9se VM-be, Nomadba \u00e9s Kubernetesbe\" src=\"\/wp-content\/uploads\/2019\/05\/5a9b5636ab4721acde096fea986ba38b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nItt a kimen\u0151 forgalom az Ingressbe \u00e9rkezik. Ez a frontkontroller, amely minden k\u00e9r\u00e9st fogad, \u00e9s k\u00e9s\u0151bb a megfelel\u0151 szolg\u00e1ltat\u00e1sokhoz ir\u00e1ny\u00edtja \u0151ket az adott k\u00e9r\u00e9s alapj\u00e1n. Ezeket a konfigur\u00e1ci\u00f3k alapj\u00e1n hat\u00e1rozza meg, amelyek a Helmben az alkalmaz\u00e1sod le\u00edr\u00e1s\u00e1nak r\u00e9sz\u00e9t k\u00e9pezik, \u00e9s amelyeket a fejleszt\u0151k \u00f6n\u00e1ll\u00f3an hat\u00e1roznak meg. A szolg\u00e1ltat\u00e1s pedig a saj\u00e1t podjaira k\u00fcldi a k\u00e9r\u00e9seket, vagyis a konkr\u00e9t kont\u00e9nerekre, kiegyens\u00falyozva a bej\u00f6v\u0151 forgalmat az \u00f6sszes olyan kont\u00e9ner k\u00f6z\u00f6tt, amely a szolg\u00e1ltat\u00e1shoz tartozik. \u00c9s persze nem szabad megfeledkezni arr\u00f3l sem, hogy a h\u00e1l\u00f3zati szint\u0171 biztons\u00e1gb\u00f3l nem szabad lefel\u00e9 t\u00e1voznunk. Ez\u00e9rt a Kubernetes klaszterben szegment\u00e1ci\u00f3 m\u0171k\u00f6dik, amely a c\u00edmk\u00e9z\u00e9sen alapul. Minden szolg\u00e1ltat\u00e1snak vannak meghat\u00e1rozott c\u00edmk\u00e9i, amelyekhez a szolg\u00e1ltat\u00e1sok hozz\u00e1f\u00e9r\u00e9si jogosults\u00e1gait k\u00f6tik az adott k\u00fcls\u0151\/bels\u0151 er\u0151forr\u00e1sokhoz a klaszteren bel\u00fcl vagy k\u00edv\u00fcl. <\/p>\n<p>\u00c1tmenet sor\u00e1n \u00e9szrevett\u00fck, hogy a Kubernetes rendelkezik mindazokkal a lehet\u0151s\u00e9gekkel, amelyeket a Nomad k\u00edn\u00e1lt, amit kor\u00e1bban haszn\u00e1ltunk, \u00e9s sok \u00fajat is hozz\u00e1ad. B\u0151v\u00edthet\u0151 pluginokon kereszt\u00fcl, \u00e9s val\u00f3j\u00e1ban egyedi er\u0151forr\u00e1st\u00edpusokkal. Teh\u00e1t lehet\u0151s\u00e9ged van nemcsak arra, hogy a Kubernetes dobozb\u00f3l kiindul\u00f3 elemeit haszn\u00e1ld, hanem saj\u00e1t er\u0151forr\u00e1st \u00e9s szolg\u00e1ltat\u00e1st k\u00e9sz\u00edts, amely az \u00e1ltalad l\u00e9trehozott er\u0151forr\u00e1ssal dolgozik. Ez tov\u00e1bbi b\u0151v\u00edt\u00e9si lehet\u0151s\u00e9geket ad a rendszered sz\u00e1m\u00e1ra an\u00e9lk\u00fcl, hogy \u00fajra kellene telep\u00edtened a Kubernetest vagy m\u00f3dos\u00edt\u00e1sokat kellene v\u00e9gezned. <\/p>\n<p>Egy p\u00e9lda az ilyen haszn\u00e1latra a Prometheus, amelyet a Kubernetes klaszter\u00fcnk belsej\u00e9ben futtatunk. Ahhoz, hogy elkezdje gy\u0171jteni a metrik\u00e1kat egy bizonyos szolg\u00e1ltat\u00e1sr\u00f3l, hozz\u00e1 kell adnunk a szolg\u00e1ltat\u00e1s le\u00edr\u00e1s\u00e1hoz egy tov\u00e1bbi er\u0151forr\u00e1st\u00edpust, \u00fagynevezett szolg\u00e1ltat\u00e1sfigyel\u0151t. A Prometheus, mivel k\u00e9pes kezelni a Kubernetesben fut\u00f3 egyedi er\u0151forr\u00e1st\u00edpusokat, automatikusan elkezdi gy\u0171jteni a metrik\u00e1kat az \u00faj rendszerr\u0151l. Ez el\u00e9g k\u00e9nyelmes. <\/p>\n<p>Az els\u0151 telep\u00edt\u00e9s, amelyet a Kubernetessel v\u00e9gezt\u00fcnk, 2018 m\u00e1rcius\u00e1ban volt. Ez id\u0151 alatt soha nem tapasztaltunk vele probl\u00e9m\u00e1t. El\u00e9g stabilan m\u0171k\u00f6dik, l\u00e9nyeges hib\u00e1k n\u00e9lk\u00fcl. R\u00e1ad\u00e1sul tov\u00e1bb b\u0151v\u00edthetj\u00fck. Jelenleg elegend\u0151ek sz\u00e1munkra a benne tal\u00e1lhat\u00f3 lehet\u0151s\u00e9gek, \u00e9s nagyon tetszik a Kubernetes fejl\u0151d\u00e9si \u00fcteme. Jelenleg t\u00f6bb mint 3000 kont\u00e9ner tal\u00e1lhat\u00f3 a Kubernetesben. A klaszter t\u00f6bb Node-b\u00f3l \u00e1ll. Emellett karbantartott, stabil \u00e9s nagyon ellen\u0151rz\u00f6tt.<br \/>\n<br \/>Forr\u00e1s: <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.3 - 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\/hu\/blog\/administrirovanie\/deploj-prilozhenij-v-vm-nomad-i-kubernetes\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\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\/hu\/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\udd47Alkalmaz\u00e1sok telep\u00edt\u00e9se VM-en, Nomadon \u00e9s Kubernetesen | ProHoster","description":"Mindenkinek hell\u00f3! A nevem Pavel Agaletskiy. Csapatvezet\u0151k\u00e9nt dolgozom azon a csapaton, amely a Lamoda sz\u00e1ll\u00edt\u00f3 rendszer\u00e9t fejleszti.","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/deploj-prilozhenij-v-vm-nomad-i-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hu_HU","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\/hu\/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\/hu\/wp-json\/wp\/v2\/posts\/33654","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=33654"}],"version-history":[{"count":2,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/33654\/revisions"}],"predecessor-version":[{"id":157982,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/33654\/revisions\/157982"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/25343"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=33654"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=33654"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=33654"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}