{"id":37475,"date":"2019-10-31T22:17:51","date_gmt":"2019-10-31T19:17:51","guid":{"rendered":"https:\/\/prohoster.info\/blog\/instrumenty-dlya-razrabotchikov-prilozhenij-zapuskaemyh-v-kubernetes\/"},"modified":"2019-10-31T22:17:51","modified_gmt":"2019-10-31T19:17:51","slug":"instrumenty-dlya-razrabotchikov-prilozhenij-zapuskaemyh-v-kubernetes","status":"publish","type":"post","link":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/instrumenty-dlya-razrabotchikov-prilozhenij-zapuskaemyh-v-kubernetes","title":{"rendered":"Kubernetes 1.14: a legfontosabb \u00faj\u00edt\u00e1sok \u00e1ttekint\u00e9se","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Kubernetes 1.14: a legfontosabb \u00faj\u00edt\u00e1sok \u00e1ttekint\u00e9se\" src=\"\/wp-content\/uploads\/2019\/08\/ad1f46a3562dcefacaa1722ee1ce3387.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA modern approach to operations addresses many pressing business problems. Containers and orchestrators allow for easy scaling of projects of any complexity, simplify the release of new versions, and make them more reliable, but at the same time create additional problems for developers. A programmer is primarily concerned with their code: architecture, quality, performance, elegance\u2014rather than how it will run in Kubernetes and how to test and debug it after even minor changes. Therefore, it is quite natural that tools for Kubernetes are actively developing, helping to solve the problems of even the most 'archaic' developers and allowing them to focus on what matters.<\/p>\n<p>This review provides a brief overview of some tools that simplify life for programmers whose code runs in the pods of a Kubernetes cluster.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Simple Helpers<\/h2>\n<p><\/p>\n<h3>Kubectl-debug<\/h3>\n<p><\/p>\n<ul>\n<li> Essence: <b>add your container to the Pod and see what is happening in it<\/b>.<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/aylei\/kubectl-debug\">GitHub<\/a><\/noindex>.<\/li>\n<li> Brief GH statistics: 715 stars, 54 commits, 9 contributors.<\/li>\n<li> Language: Go.<\/li>\n<li> License: Apache License 2.0.<\/li>\n<\/ul>\n<p>\nEz a kubectl b\u0151v\u00edtm\u00e9ny lehet\u0151v\u00e9 teszi, hogy egy tov\u00e1bbi kont\u00e9nert hozzunk l\u00e9tre a k\u00edv\u00e1nt pod belsej\u00e9ben, amely megosztja a folyamatnevek t\u00e9r\u00e9t a t\u00f6bbi kont\u00e9nerrel. Ezzel debugolhatjuk a pod m\u0171k\u00f6d\u00e9s\u00e9t: ellen\u0151rizhetj\u00fck a h\u00e1l\u00f3zat m\u0171k\u00f6d\u00e9s\u00e9t, figyelhetj\u00fck a h\u00e1l\u00f3zati forgalmat, k\u00e9sz\u00edthet\u00fcnk strace-t a k\u00edv\u00e1nt folyamatr\u00f3l stb.<\/p>\n<p>You can also switch into the process container by executing <code>chroot \/proc\/PID\/root<\/code> \u2014 this is very convenient when you need to get a root shell in a container for which the manifest specifies <code>securityContext.runAs<\/code>.<\/p>\n<p>The tool is simple and effective, so it may be useful for every developer. We wrote more about it in <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/436112\/\">k\u00fcl\u00f6n cikkben<\/a><\/noindex>.<\/p>\n<h3>Telepresence<\/h3>\n<p><\/p>\n<ul>\n<li> Essence: <b>move the application to your computer. Develop and debug locally<\/b>.<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/www.telepresence.io\/\">Weboldal<\/a><\/noindex>; <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/telepresenceio\/telepresence\">GitHub<\/a><\/noindex>.<\/li>\n<li> Brief GH statistics: 2131 stars, 2712 commits, 33 contributors.<\/li>\n<li> Language: Python.<\/li>\n<li> License: Apache License 2.0.<\/li>\n<\/ul>\n<p>\nThe idea of this tool is to run a container with an application on a local user computer and proxy all traffic from the cluster to it and back. This approach allows for local development, simply by changing files in your favorite IDE: results will be available immediately.<\/p>\n<p>A helyi ind\u00edt\u00e1s el\u0151nyei \u2013 a m\u00f3dos\u00edt\u00e1sok k\u00e9nyelme \u00e9s az azonnali eredm\u00e9ny, valamint a szok\u00e1sos m\u00f3don t\u00f6rt\u00e9n\u0151 hibakeres\u00e9s lehet\u0151s\u00e9ge. H\u00e1tr\u00e1nyai k\u00f6z\u00e9 tartozik a kapcsolat sebess\u00e9g\u00e9re vonatkoz\u00f3 ig\u00e9nyess\u00e9ge, amely k\u00fcl\u00f6n\u00f6sen \u00e9szlelhet\u0151, amikor egy viszonylag magas RPS-sel \u00e9s forgalommal rendelkez\u0151 alkalmaz\u00e1ssal kell dolgozni. Ezenk\u00edv\u00fcl a Telepresence-nak probl\u00e9m\u00e1i vannak a volume mounts-szal Windows rendszeren, ami d\u00f6nt\u0151 korl\u00e1tot jelenthet azok sz\u00e1m\u00e1ra, akik ehhez az oper\u00e1ci\u00f3s rendszerhez vannak szokva.<\/p>\n<p>M\u00e1r megosztottuk tapasztalatainkat a Telepresence haszn\u00e1lat\u00e1val kapcsolatban <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/446788\/\">itt<\/a><\/noindex>.<\/p>\n<h3>Ksync<\/h3>\n<p><\/p>\n<ul>\n<li> Essence: <b>majdnem azonnali k\u00f3d szinkroniz\u00e1l\u00e1s a klaszterben l\u00e9v\u0151 kont\u00e9nerrel<\/b>.<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/vapor-ware\/ksync\">GitHub<\/a><\/noindex>.<\/li>\n<li> R\u00f6vid GH statisztika: 555 csillag, 362 commit, 11 hozz\u00e1j\u00e1rul\u00f3.<\/li>\n<li> Language: Go.<\/li>\n<li> License: Apache License 2.0.<\/li>\n<\/ul>\n<p>\nA seg\u00e9dprogram lehet\u0151v\u00e9 teszi a helyi k\u00f6nyvt\u00e1r tartalm\u00e1nak szinkroniz\u00e1l\u00e1s\u00e1t a klaszterben fut\u00f3 kont\u00e9ner k\u00f6nyvt\u00e1r\u00e1val. Ez az eszk\u00f6z kiv\u00e1l\u00f3an alkalmas a szkriptnyelv\u0171 programoz\u00f3k sz\u00e1m\u00e1ra, akiknek f\u0151 probl\u00e9m\u00e1juk a k\u00f3d m\u0171k\u00f6d\u0151 kont\u00e9nerbe juttat\u00e1sa. A Ksync c\u00e9lja ennek a fejf\u00e1j\u00e1snak a megsz\u00fcntet\u00e9se.<\/p>\n<p>Egy egyszeri inicializ\u00e1l\u00e1ssal a <code>ksync init<\/code> parancs l\u00e9trehoz egy DaemonSet-et a klaszterben, amely a kiv\u00e1lasztott kont\u00e9ner f\u00e1jlrendszer\u00e9nek \u00e1llapot\u00e1t nyomon k\u00f6veti. A fejleszt\u0151 a saj\u00e1t helyi sz\u00e1m\u00edt\u00f3g\u00e9p\u00e9n elind\u00edtja a parancsot <code>ksync watch<\/code>, amely figyeli a konfigur\u00e1ci\u00f3kat, \u00e9s elind\u00edtja a <noindex><a rel=\"nofollow\" href=\"https:\/\/syncthing.net\/\">syncthing<\/a><\/noindex>, amely k\u00f6zvetlen f\u00e1jlszinkroniz\u00e1l\u00e1st v\u00e9gez a klaszterrel.<\/p>\n<p>Csak utas\u00edtani kell a ksync-et, hogy mit \u00e9s kivel szinkroniz\u00e1ljon. P\u00e9ld\u00e1ul, a k\u00f6vetkez\u0151 parancs:<\/p>\n<pre><code class=\"plaintext\">ksync create --name=myproject --namespace=test --selector=app=backend --container=php --reload=false \/home\/user\/myproject\/ \/var\/www\/myproject\/<\/code><\/pre>\n<p>\n\u2026 l\u00e9trehoz egy watchert, amelynek neve <code>myproject<\/code>, \u00e9s amely a \"app=backend\" c\u00edmk\u00e9t tartalmaz\u00f3 pod-ot keresi, <code>\u00e9s megpr\u00f3b\u00e1lja szinkroniz\u00e1lni a helyi k\u00f6nyvt\u00e1rat<\/code> a kont\u00e9ner k\u00f6nyvt\u00e1r\u00e1val. <code>\/home\/user\/myproject\/<\/code> Probl\u00e9m\u00e1k \u00e9s megjegyz\u00e9sek a ksync-r\u0151l tapasztalataink szerint: <code>\/var\/www\/myproject\/<\/code> A Kubernetes klaszter csom\u00f3pontjainak az <code>php<\/code>.<\/p>\n<p>overlay2<\/p>\n<ul>\n<li> t\u00e1rol\u00f3meghajt\u00f3t kell haszn\u00e1lnia a Dockerhez. M\u00e1s eszk\u00f6z\u00f6kkel nem fog m\u0171k\u00f6dni. <code>Windows oper\u00e1ci\u00f3s rendszer haszn\u00e1lata eset\u00e9n el\u0151fordulhat, hogy a f\u00e1jlrendszer watchere nem m\u0171k\u00f6dik megfelel\u0151en. Ezt a hib\u00e1t \u00e9szlelt\u00fck nagy k\u00f6nyvt\u00e1rakban \u2013 sok be\u00e1gyazott f\u00e1jllal \u00e9s k\u00f6nyvt\u00e1rral. L\u00e9trehoztunk egy<\/code> megfelel\u0151 hibajegyet<\/li>\n<li> Windows kliens OS haszn\u00e1latakor el\u0151fordulhat, hogy a f\u00e1jlrendszer figyel\u0151je nem m\u0171k\u00f6dik megfelel\u0151en. Ezt a hib\u00e1t nagym\u00e9ret\u0171 k\u00f6nyvt\u00e1rakban \u00e9s sok be\u00e1gyazott f\u00e1jl \u00e9s k\u00f6nyvt\u00e1r eset\u00e9n \u00e9szlelt\u00fck. K\u00e9sz\u00edtett\u00fcnk <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/syncthing\/syncthing\/issues\/5832\">Haszn\u00e1lja a f\u00e1jlt<\/a><\/noindex> .stignore<\/li>\n<li> Haszn\u00e1lja a f\u00e1jlt <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.syncthing.net\/users\/ignoring.html\"><code>.stignore<\/code><\/a><\/noindex> a f\u00e1jlok szinkroniz\u00e1l\u00e1s\u00e1ra nem sz\u00fcks\u00e9ges k\u00f6nyvt\u00e1rak vagy f\u00e1jlsablonok megad\u00e1s\u00e1hoz <code>app\/cache<\/code> \u00e9s <code>.git<\/code>).<\/li>\n<li> Alap\u00e9rtelmez\u00e9s szerint a ksync minden f\u00e1jlv\u00e1ltoz\u00e1skor \u00fajraind\u00edtja a kont\u00e9nert. Ez hasznos a Node.js eset\u00e9ben, de PHP eset\u00e9n teljesen felesleges. Jobb letiltani az opcache-t \u00e9s haszn\u00e1lni a flaget <code>--reload=false<\/code>.<\/li>\n<li> A konfigur\u00e1ci\u00f3 mindig jav\u00edthat\u00f3 a <code>$HOME\/.ksync\/ksync.yaml<\/code>.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Squash<\/h3>\n<p><\/p>\n<ul>\n<li> Essence: <b>hibakeres\u00e9st v\u00e9gezzen k\u00f6zvetlen\u00fcl a klaszteren<\/b>.<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/solo-io\/squash\">GitHub<\/a><\/noindex>.<\/li>\n<li> R\u00f6vid statisztika a GitHubon: 1154 csillag, 279 commit, 23 hozz\u00e1j\u00e1rul\u00f3.<\/li>\n<li> Language: Go.<\/li>\n<li> License: Apache License 2.0.<\/li>\n<\/ul>\n<p>\nEz az eszk\u00f6z a folyamatok debugol\u00e1s\u00e1ra szolg\u00e1l k\u00f6zvetlen\u00fcl a podokban. Az utilit\u00e1s egyszer\u0171, \u00e9s interakt\u00edv m\u00f3dban lehet\u0151s\u00e9get ad a megfelel\u0151 debugger kiv\u00e1laszt\u00e1s\u00e1ra. <i>(see below)<\/i> \u00e9s a n\u00e9vt\u00e9r + pod, amelybe be kell avatkozni. Jelenleg az al\u00e1bbiak t\u00e1mogatottak:<\/p>\n<ul>\n<li> delve \u2014 Go alkalmaz\u00e1sokhoz;<\/li>\n<li> GDB \u2014 t\u00e1voli c\u00e9lon + port tov\u00e1bb\u00edt\u00e1s;<\/li>\n<li> JDWP porttov\u00e1bb\u00edt\u00e1s Java-alkalmaz\u00e1sok hibakeres\u00e9s\u00e9hez.<\/li>\n<\/ul>\n<p>\nIDE oldalr\u00f3l a t\u00e1mogat\u00e1s csak a VScode-ban \u00e9rhet\u0151 el (a seg\u00edts\u00e9g\u00e9vel <noindex><a rel=\"nofollow\" href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ilevine.squash\">kiterjeszt\u00e9s<\/a><\/noindex>), azonban a jelenlegi (2019) \u00e9v tervei k\u00f6z\u00f6tt szerepel az Eclipse \u00e9s az Intellij is.<\/p>\n<p>A Squash a klaszter csom\u00f3pontjain privilegiz\u00e1lt kont\u00e9nert ind\u00edt a folyamatok hibakeres\u00e9s\u00e9re, ez\u00e9rt el\u0151sz\u00f6r is meg kell ismerni a <noindex><a rel=\"nofollow\" href=\"https:\/\/squash.solo.io\/secure_mode\/\">biztons\u00e1gi m\u00f3d<\/a><\/noindex> lehet\u0151s\u00e9geit a biztons\u00e1gi probl\u00e9m\u00e1k elker\u00fcl\u00e9se \u00e9rdek\u00e9ben.<\/p>\n<h2>Komplex megold\u00e1sok<\/h2>\n<p>\nT\u00e9rj\u00fcnk \u00e1t a neh\u00e9z t\u00fcz\u00e9rs\u00e9gre \u2014 a m\u00f3dszerekre, amelyek azonnal t\u00f6bb fejleszt\u0151i ig\u00e9nyt ki tudnak szolg\u00e1lni.<\/p>\n<p><i><b>NB<\/b>: Ebben a list\u00e1ban term\u00e9szetesen helyet kap az Open Source eszk\u00f6z\u00fcnk <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/333682\/\"><b>werf<\/b><\/a><\/noindex> (kor\u00e1bban dapp n\u00e9ven ismert). Azonban m\u00e1r t\u00f6bbsz\u00f6r \u00edrtunk \u00e9s besz\u00e9lt\u00fcnk r\u00f3la, ez\u00e9rt \u00fagy d\u00f6nt\u00f6tt\u00fcnk, hogy nem tessz\u00fck bele az \u00e1ttekint\u00e9sbe. Azok sz\u00e1m\u00e1ra, akik k\u00f6zelebbr\u0151l meg szeretn\u00e9k ismerni a lehet\u0151s\u00e9geit, aj\u00e1nljuk a \"<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/460351\/\">werf \u2014 a Kubernetes CI\/CD eszk\u00f6z\u00fcnk<\/a><\/noindex>\u00bb.<\/i><\/p>\n<h3>DevSpace<\/h3>\n<p><\/p>\n<ul>\n<li> Essence: <b>sz\u00e1m\u00e1ra, akik kezdeni szeretn\u00e9nek a Kubernetes haszn\u00e1lat\u00e1val, de nem akarnak m\u00e9lyen belemer\u00fclni a r\u00e9szletekbe<\/b>.<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/devspace-cloud\/devspace\">GitHub<\/a><\/noindex>.<\/li>\n<li> R\u00f6vid statisztika a GitHubon: 630 csillag, 1912 commit, 13 hozz\u00e1j\u00e1rul\u00f3.<\/li>\n<li> Language: Go.<\/li>\n<li> License: Apache License 2.0.<\/li>\n<\/ul>\n<p>\nMegold\u00e1s azonos nev\u0171 c\u00e9gt\u0151l, amely kezelt klasztereket k\u00edn\u00e1l Kubernetes alatt csapatfejleszt\u00e9shez. Az eszk\u00f6zt kereskedelmi klaszterekhez hozt\u00e1k l\u00e9tre, de b\u00e1rmilyen m\u00e1s klaszteren is j\u00f3l m\u0171k\u00f6dik.<\/p>\n<p>A parancs futtat\u00e1sakor <code>devspace init<\/code> a projekt k\u00f6nyvt\u00e1r\u00e1ban interakt\u00edv m\u00f3dban felaj\u00e1nlj\u00e1k a lehet\u0151s\u00e9geket:<\/p>\n<ul>\n<li> kiv\u00e1lasztani a m\u0171k\u00f6d\u0151 Kubernetes klasztert,<\/li>\n<li> haszn\u00e1lni a megl\u00e9v\u0151t <code>Dockerfile<\/code> (vagy gener\u00e1lni egy \u00fajat) a kont\u00e9ner l\u00e9trehoz\u00e1s\u00e1hoz ezen a b\u00e1zison,<\/li>\n<li> kiv\u00e1lasztani a tarthat\u00f3 kont\u00e9nerk\u00e9pek t\u00e1rol\u00f3j\u00e1t stb.<\/li>\n<\/ul>\n<p>\nMiut\u00e1n elv\u00e9gezt\u00fck az \u00f6sszes el\u0151k\u00e9sz\u00edt\u0151 l\u00e9p\u00e9st, elkezdhetj\u00fck a fejleszt\u00e9st, v\u00e9grehajtva a parancsot <code>devspace dev<\/code>. Ez \u00f6sszegy\u0171jti a kont\u00e9nert, felt\u00f6lti azt a t\u00e1rol\u00f3ba, kiadja a telep\u00edt\u00e9st a klaszterben, \u00e9s elind\u00edtja a portok \u00e1tir\u00e1ny\u00edt\u00e1s\u00e1t \u00e9s a kont\u00e9ner szinkroniz\u00e1l\u00e1s\u00e1t a helyi mapp\u00e1val.<\/p>\n<p>Opcion\u00e1lisan javasolj\u00e1k, hogy a termin\u00e1lban l\u00e9pj\u00fcnk be a kont\u00e9nerbe. Err\u0151l nem \u00e9rdemes lemondani, mivel a kont\u00e9ner val\u00f3j\u00e1ban a sleep parancssal indul, \u00e9s az alkalmaz\u00e1s val\u00f3s tesztel\u00e9s\u00e9hez k\u00e9zzel kell elind\u00edtani.<\/p>\n<p>V\u00e9g\u00fcl a parancs <code>devspace deploy<\/code> kibocs\u00e1tja az alkalmaz\u00e1st \u00e9s a hozz\u00e1 kapcsol\u00f3d\u00f3 infrastrukt\u00far\u00e1t a klaszterben, ezut\u00e1n minden m\u0171k\u00f6dni kezd \u00e9les m\u00f3dban.<\/p>\n<p>A projekt \u00f6sszes konfigur\u00e1ci\u00f3ja a f\u00e1jlban tal\u00e1lhat\u00f3 <code>devspace.yaml<\/code>. Az fejleszt\u00e9si k\u00f6rnyezet be\u00e1ll\u00edt\u00e1sain k\u00edv\u00fcl itt tal\u00e1lhat\u00f3 az infrastrukt\u00fara le\u00edr\u00e1sa, amely hasonl\u00edt a standard Kubernetes-manifesztumokhoz, de jelent\u0151sen egyszer\u0171s\u00edtett.<\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes 1.14: a legfontosabb \u00faj\u00edt\u00e1sok \u00e1ttekint\u00e9se\" src=\"\/wp-content\/uploads\/2019\/08\/7abbba3806facfb69ba4e3f9e0f18938.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>A DevSpace architekt\u00far\u00e1ja \u00e9s f\u0151 munkaf\u00e1zisai<\/i><\/p>\n<p>Ezen k\u00edv\u00fcl a projektbe k\u00f6nnyen hozz\u00e1adhat\u00f3 egy el\u0151re defini\u00e1lt komponens (p\u00e9ld\u00e1ul MySQL adatb\u00e1zis) vagy Helm-chart. Tov\u00e1bbi r\u00e9szletek\u00e9rt olvassa el a <noindex><a rel=\"nofollow\" href=\"https:\/\/devspace.cloud\/docs\/\">dokument\u00e1ci\u00f3<\/a><\/noindex> \u2014 nem neh\u00e9z.<\/p>\n<h3>Skaffold<\/h3>\n<p><\/p>\n<ul>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/skaffold.dev\/\">Weboldal<\/a><\/noindex>; <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/GoogleContainerTools\/skaffold\">GitHub<\/a><\/noindex>.<\/li>\n<li> R\u00f6vid GH statisztika: 7423 csillag, 4173 elk\u00f6telezett, 136 hozz\u00e1j\u00e1rul\u00f3.<\/li>\n<li> Language: Go.<\/li>\n<li> License: Apache License 2.0.<\/li>\n<\/ul>\n<p>\nEz a Google \u00e1ltal k\u00e9sz\u00edtett eszk\u00f6z az \u00f6sszes fejleszt\u0151i ig\u00e9nyt kiel\u00e9g\u00edteni hivatott, akinek a k\u00f3dja valamilyen form\u00e1ban a Kubernetes klaszterben fut. A haszn\u00e1lata nem olyan egyszer\u0171, mint a devspace-\u00e9, mivel nincs interaktivit\u00e1s, nyelv meghat\u00e1roz\u00e1s \u00e9s automatikus l\u00e9trehoz\u00e1s. <code>Dockerfile<\/code> itt nem fognak aj\u00e1nlani.<\/p>\n<p>Ha azonban ez nem riaszt el \u2014 n\u00e9zz\u00fck meg, mit tud csin\u00e1lni a Skaffold:<\/p>\n<ul>\n<li> Figyeli a forr\u00e1sk\u00f3d v\u00e1ltoz\u00e1sait.<\/li>\n<li> Szinkroniz\u00e1lja azt a pod kont\u00e9ner\u00e9vel, ha nem ig\u00e9nyel ford\u00edt\u00e1st.<\/li>\n<li> \u00d6sszegy\u0171jt elk\u00e9sz\u00edtett kont\u00e9nereket a k\u00f3ddal, ha a programoz\u00e1si nyelv \u00e9rtelmezett, vagy pedig leford\u00edtja az artefaktumokat, \u00e9s bet\u00f6lti azokat a kont\u00e9nerekbe.<\/li>\n<li> A l\u00e9trej\u00f6v\u0151 k\u00e9peket automatikusan ellen\u0151rzi a <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/GoogleContainerTools\/container-structure-test\">container-structure-test<\/a><\/noindex>.<\/li>\n<li> C\u00edmk\u00e9zi \u00e9s felt\u00f6lti a k\u00e9peket a Docker Registry-be.<\/li>\n<li> Telep\u00edti az alkalmaz\u00e1st a klaszterben, haszn\u00e1lva a kubectl-t, Helm-et vagy kustomize-t.<\/li>\n<li> Portokat ir\u00e1ny\u00edt \u00e1t.<\/li>\n<li> Hibaelh\u00e1r\u00edt\u00e1st v\u00e9gez a Java, Node.js, Python alkalmaz\u00e1sokkal.<\/li>\n<\/ul>\n<p>\nA munkafolyamat k\u00fcl\u00f6nb\u00f6z\u0151 v\u00e1ltozatai deklarat\u00edv m\u00f3don a f\u00e1jlban vannak le\u00edrva <code>skaffold.yaml<\/code>A projekt eset\u00e9ben t\u00f6bb profilt is meghat\u00e1rozhatunk, amelyekben r\u00e9szben vagy teljesen megv\u00e1ltoztathatjuk a build \u00e9s a deploy szakaszokat. P\u00e9ld\u00e1ul a fejleszt\u00e9shez k\u00e9nyelmes alapk\u00e9pet adhatunk meg, m\u00edg staging \u00e9s production eset\u00e9n minim\u00e1lisat (+ haszn\u00e1lni a <code>a kont\u00e9nernek van egy param\u00e9tere<\/code> kont\u00e9nerek vagy \u00e1tdefini\u00e1lni a klasztert, ahol az alkalmaz\u00e1s telep\u00edtve lesz).<\/p>\n<p>A Docker-kont\u00e9nerek \u00e9p\u00edt\u00e9se helyben vagy t\u00e1volr\u00f3l v\u00e9gezhet\u0151: a <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/cloud-build\/\">Google Cloud Build<\/a><\/noindex> vagy klaszterben a <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/GoogleContainerTools\/kaniko\">Kaniko<\/a><\/noindex>. A Bazel \u00e9s Jib Maven\/Gradle is t\u00e1mogatott. A Skaffold sz\u00e1mos strat\u00e9gi\u00e1t t\u00e1mogat a c\u00edmk\u00e9z\u00e9shez: git commit hash, d\u00e1tum\/id\u0151, sha256 forr\u00e1sok \u00f6sszege stb.<\/p>\n<p>K\u00fcl\u00f6n \u00e9rdemes megeml\u00edteni a kont\u00e9nerek tesztel\u00e9s\u00e9nek lehet\u0151s\u00e9g\u00e9t. A m\u00e1r eml\u00edtett container-structure-test keretrendszer a k\u00f6vetkez\u0151 ellen\u0151rz\u00e9si m\u00f3dszereket k\u00edn\u00e1lja:<\/p>\n<ul>\n<li> Parancsok v\u00e9grehajt\u00e1sa a kont\u00e9ner kontextus\u00e1ban az exit st\u00e1tuszok nyomon k\u00f6vet\u00e9s\u00e9vel \u00e9s a parancs sz\u00f6veges 'kimenet\u00e9nek' ellen\u0151rz\u00e9s\u00e9vel.<\/li>\n<li> F\u00e1jlok ellen\u0151rz\u00e9se a kont\u00e9nerben \u00e9s az attrib\u00fatumok megfelel\u0151s\u00e9ge a megadottaknak.<\/li>\n<li> F\u00e1jlok tartalm\u00e1nak ellen\u0151rz\u00e9se regul\u00e1ris kifejez\u00e9sekkel.<\/li>\n<li> K\u00e9p metadatainak \u00f6sszehasonl\u00edt\u00e1sa (<code>ENV<\/code>, <code>ENTRYPOINT<\/code>, <code>VOLUMES<\/code> stb.).<\/li>\n<li> Licencmegjelen\u00edt\u00e9sek ellen\u0151rz\u00e9se.<\/li>\n<\/ul>\n<p>\nA f\u00e1jlok szinkroniz\u00e1l\u00e1sa a kont\u00e9nerrel nem a legoptim\u00e1lisabb m\u00f3don t\u00f6rt\u00e9nik: a Skaffold egyszer\u0171en arch\u00edvumot k\u00e9sz\u00edt a forr\u00e1sokb\u00f3l, \u00e1tm\u00e1solja \u00e9s kicsomagolja a kont\u00e9nerben (a tar telep\u00edt\u00e9se sz\u00fcks\u00e9ges). Ez\u00e9rt, ha az els\u0151dleges feladatod a k\u00f3d szinkroniz\u00e1l\u00e1sa, \u00e9rdemes egy speci\u00e1lis megold\u00e1st (ksync) keresni.<\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes 1.14: a legfontosabb \u00faj\u00edt\u00e1sok \u00e1ttekint\u00e9se\" src=\"\/wp-content\/uploads\/2019\/08\/a53647e9d3bf002c292dcae7a774e561.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>A Skaffold f\u0151 munkaf\u00e1zisai<\/i><\/p>\n<p>\u00d6sszess\u00e9g\u00e9ben az eszk\u00f6z nem engedi meg elvonatkoztatni a Kubernetes-manifesztumokt\u00f3l, \u00e9s nincs semmilyen interaktivit\u00e1sa, \u00edgy els\u0151re neh\u00e9znek t\u0171nhet a tanul\u00e1sa. De ebben rejlik az el\u0151nye is \u2014 a nagyobb szabads\u00e1g a cselekv\u00e9sben.<\/p>\n<h3>Garden<\/h3>\n<p><\/p>\n<ul>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/garden.io\/\">Weboldal<\/a><\/noindex>; <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/garden-io\/garden\">GitHub<\/a><\/noindex>.<\/li>\n<li> R\u00f6vid GH statisztika: 1063 csillag, 1927 commit, 17 hozz\u00e1j\u00e1rul\u00f3.<\/li>\n<li> Nyelv: TypeScript <i>(tervezett, hogy a projektet t\u00f6bb komponensre bontj\u00e1k, melyek k\u00f6z\u00fcl egyesek Go-n lesznek, \u00e9s SDK-t k\u00e9sz\u00edtenek kieg\u00e9sz\u00edt\u0151k l\u00e9trehoz\u00e1s\u00e1ra TypeScript\/JavaScript \u00e9s Go nyelveken)<\/i>.<\/li>\n<li> License: Apache License 2.0.<\/li>\n<\/ul>\n<p>\nA Garden, ak\u00e1rcsak a Skaffold, a k\u00f3dok alkalmaz\u00e1s\u00e1nak K8s klaszterbe t\u00f6rt\u00e9n\u0151 sz\u00e1ll\u00edt\u00e1s\u00e1nak automatiz\u00e1l\u00e1s\u00e1ra \u00f6sszpontos\u00edt. Ennek \u00e9rdek\u00e9ben el\u0151sz\u00f6r a projekt strukt\u00far\u00e1j\u00e1t YAML f\u00e1jlban kell meghat\u00e1rozni, majd ind\u00edtani kell a <code>garden dev<\/code>. Ez elv\u00e9gzi az \u00f6sszes var\u00e1zslatot:<\/p>\n<ul>\n<li> \u00d6sszegy\u0171jti a kont\u00e9nereket a projekt k\u00fcl\u00f6nb\u00f6z\u0151 r\u00e9szeivel.<\/li>\n<li> Elv\u00e9gzi az integr\u00e1ci\u00f3s \u00e9s unit teszteket, ha ilyet le\u00edrtak.<\/li>\n<li> Kibocs\u00e1tja a projekt \u00f6sszes komponens\u00e9t a klaszterbe.<\/li>\n<li> A forr\u00e1sk\u00f3d m\u00f3dos\u00edt\u00e1sa eset\u00e9n \u00fajraind\u00edtja az eg\u00e9sz pipelinet.<\/li>\n<\/ul>\n<p>\nEz az eszk\u00f6z a t\u00e1voli klaszter k\u00f6z\u00f6s haszn\u00e1lat\u00e1ra \u00f6sszpontos\u00edt a fejleszt\u0151csapat \u00e1ltal. Ebben az esetben, ha bizonyos \u00f6ssze\u00e1ll\u00edt\u00e1si \u00e9s tesztel\u00e9si szakaszok m\u00e1r megt\u00f6rt\u00e9ntek, az jelent\u0151sen felgyors\u00edtja az eg\u00e9sz folyamatot, mivel a Garden k\u00e9pes haszn\u00e1lni a gyors\u00edt\u00f3t\u00e1razott eredm\u00e9nyeket.<\/p>\n<p>A projekt modulja lehet egy t\u00e1rol\u00f3, Maven t\u00e1rol\u00f3, Helm chart, manifest a <code>kubectl apply<\/code> vagy ak\u00e1r OpenFaaS funkci\u00f3. R\u00e1ad\u00e1sul b\u00e1rmelyik modult leh\u00fazhatjuk egy t\u00e1voli Git-t\u00e1rhelyr\u0151l. A modul lehet, hogy defini\u00e1l szolg\u00e1ltat\u00e1sokat, feladatokat \u00e9s teszteket (vagy nem). A szolg\u00e1ltat\u00e1sok \u00e9s feladatok f\u00fcgg\u0151s\u00e9geket tartalmazhatnak, \u00edgy meghat\u00e1rozhat\u00f3 a bizonyos szolg\u00e1ltat\u00e1s telep\u00edt\u00e9si sorrendje, a feladatok \u00e9s tesztek ind\u00edt\u00e1s\u00e1nak \u00fctemez\u00e9se.<\/p>\n<p>A Garden egy sz\u00e9p m\u0171szerfalat biztos\u00edt a felhaszn\u00e1l\u00f3nak (jelenleg <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/garden-io\/garden\/tree\/master\/dashboard\">k\u00eds\u00e9rleti \u00e1llapotban<\/a><\/noindex>), amelyen a projekt grafikonja l\u00e1that\u00f3: a komponensek, az \u00f6ssze\u00e1ll\u00edt\u00e1si sorrend, a feladatok \u00e9s tesztek v\u00e9grehajt\u00e1sa, valamint azok kapcsolatai \u00e9s f\u00fcgg\u0151s\u00e9geik. K\u00f6zvetlen\u00fcl a b\u00f6ng\u00e9sz\u0151ben megn\u00e9zhet\u0151 a projekt \u00f6sszes komponens\u00e9nek napl\u00f3ja, ellen\u0151rizhet\u0151, hogy mit ad ki egy bizonyos komponens HTTP-n (ha persze err\u0151l be van jelentve egy ingress forr\u00e1s).<\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes 1.14: a legfontosabb \u00faj\u00edt\u00e1sok \u00e1ttekint\u00e9se\" src=\"\/wp-content\/uploads\/2019\/08\/931b48a306fcce025e4dd8aa51d01552.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Garden m\u0171szerfal<\/i><\/p>\n<p>Az eszk\u00f6z rendelkezik hot-reload m\u00f3ddal is, amely egyszer\u0171en szinkroniz\u00e1lja a szkriptm\u00f3dos\u00edt\u00e1sokat a klaszterben l\u00e9v\u0151 t\u00e1rol\u00f3val, jelent\u0151sen felgyors\u00edtva az alkalmaz\u00e1s hibakeres\u00e9si folyamat\u00e1t. A Garden j\u00f3 <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.garden.io\/\">dokument\u00e1ci\u00f3<\/a><\/noindex> \u00e9s nem rossz <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/garden-io\/garden\/tree\/master\/examples\">p\u00e9ld\u00e1k k\u00e9szlet\u00e9t biztos\u00edtja,<\/a><\/noindex>amelyek lehet\u0151v\u00e9 teszik a gyors tanul\u00e1st \u00e9s a haszn\u00e1lat megkezd\u00e9s\u00e9t. Egy\u00e9bk\u00e9nt nemr\u00e9giben k\u00f6zz\u00e9tett\u00fck <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/459586\/\">cikkford\u00edt\u00e1s\u00e1t<\/a><\/noindex> a szerz\u0151it\u0151l.<\/p>\n<h2>Z\u00e1r\u00e1s<\/h2>\n<p>\nTerm\u00e9szetesen ez a lista nem korl\u00e1tozza a Kubernetes alkalmaz\u00e1sok fejleszt\u00e9s\u00e9re \u00e9s hibakeres\u00e9s\u00e9re szolg\u00e1l\u00f3 eszk\u00f6z\u00f6ket. Sok m\u00e1s hasznos \u00e9s praktikus seg\u00e9dprogram l\u00e9tezik, amelyek meg\u00e9rdemlik, hogy legal\u00e1bb megeml\u00edts\u00fck \u0151ket. Mes\u00e9lj el, milyen eszk\u00f6z\u00f6ket haszn\u00e1lsz, milyen probl\u00e9m\u00e1kkal tal\u00e1lkozt\u00e1l, \u00e9s hogyan oldottad meg \u0151ket!<\/p>\n<h2>P.S.<\/h2>\n<p>\nOlvasson tov\u00e1bbi inform\u00e1ci\u00f3kat a blogunkban:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/460351\/\">werf \u2014 az eszk\u00f6z\u00fcnk CI\/CD-hez Kubernetes-ben (\u00e1ttekint\u00e9s \u00e9s a besz\u00e1mol\u00f3 vide\u00f3ja)<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/459586\/\">Garden v0.10.0: A laptopodnak nincs sz\u00fcks\u00e9ge Kubernetesre<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/446788\/\">Kubernetes tippek \u00e9s tr\u00fckk\u00f6k: helyi fejleszt\u00e9s \u00e9s Telepresence<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/436112\/\">A kubectl-debug b\u0151v\u00edtm\u00e9ny a Kubernetes podokban t\u00f6rt\u00e9n\u0151 debugol\u00e1shoz<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Forr\u00e1s: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/462707\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u0440\u0435\u0448\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043d\u0430\u0441\u0443\u0449\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0431\u0438\u0437\u043d\u0435\u0441\u0430. \u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0438 \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043b\u0435\u0433\u043a\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u043b\u044e\u0431\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u0443\u043f\u0440\u043e\u0449\u0430\u044e\u0442 \u0440\u0435\u043b\u0438\u0437\u044b \u043d\u043e\u0432\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439, \u0434\u0435\u043b\u0430\u044e\u0442 \u0438\u0445 \u0431\u043e\u043b\u0435\u0435 \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u043c\u0438, \u043d\u043e \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0442\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430, \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0437\u0430\u0431\u043e\u0442\u0438\u0442 \u0435\u0433\u043e \u043a\u043e\u0434: \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430, \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u043e\u0441\u0442\u044c, \u2014 \u0430 \u043d\u0435 \u0442\u043e, \u043a\u0430\u043a \u043e\u043d \u043f\u043e\u0435\u0434\u0435\u0442 \u0432 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28120,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37475","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=\"\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a.\" \/>\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\/instrumenty-dlya-razrabotchikov-prilozhenij-zapuskaemyh-v-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\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u044b\u0445 \u0432 Kubernetes | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/instrumenty-dlya-razrabotchikov-prilozhenij-zapuskaemyh-v-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-31T19:17:51+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:17:51+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\udd47Fejleszt\u0151i eszk\u00f6z\u00f6k alkalmaz\u00e1sokhoz, amelyeket Kubernetes-ben futtatnak | ProHoster","description":"Modern megk\u00f6zel\u00edt\u00e9s a.","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/instrumenty-dlya-razrabotchikov-prilozhenij-zapuskaemyh-v-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\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u044b\u0445 \u0432 Kubernetes | ProHoster","og:description":"\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a.","og:url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/instrumenty-dlya-razrabotchikov-prilozhenij-zapuskaemyh-v-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-31T19:17:51+00:00","article:modified_time":"2019-10-31T19:17:51+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37475","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-01-23 18:00:22","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:26:27","updated":"2026-01-23 18:00:22","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\/37475","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=37475"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/37475\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/28120"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=37475"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=37475"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=37475"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}