{"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\/et\/blog\/administrirovanie\/instrumenty-dlya-razrabotchikov-prilozhenij-zapuskaemyh-v-kubernetes","title":{"rendered":"Arendust\u00f6\u00f6riistad Kuberneteses t\u00f6\u00f6tavatele rakendustele","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Arendust\u00f6\u00f6riistad Kuberneteses t\u00f6\u00f6tavatele rakendustele\" src=\"\/wp-content\/uploads\/2019\/08\/ad1f46a3562dcefacaa1722ee1ce3387.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKaasaegne l\u00e4henemine haldamisele lahendab paljusid \u00e4ri muresid. Konteinerid ja orkestratsioonit\u00f6\u00f6riistad v\u00f5imaldavad h\u00f5lpsasti skaleerida projekte igasuguste keerukustega, lihtsustavad uute versioonide v\u00e4ljaandmist, tehes need usaldusv\u00e4\u00e4rsemaks, kuid samas p\u00f5hjustavad ka t\u00e4iendavaid probleeme arendajatele. Arendajat, eelk\u00f5ige, huvitab tema kood: arhitektuur, kvaliteet, j\u00f5udlus, elegants, mitte see, kuidas ta j\u00f5uab Kubernetesesse ja kuidas seda testida ja t\u00f5rkeotsingusse minna p\u00e4rast isegi minimaalsete muudatuste tegemist. Seet\u00f5ttu on loomulik, et aktiivselt arendatakse t\u00f6\u00f6riistu Kubernetesel, mis aitavad lahendada isegi k\u00f5ige \"arhailisemaid\" arendajate probleeme ja v\u00f5imaldavad neil keskenduda peamisele.<\/p>\n<p>Selles \u00fclevaates on l\u00fchike teave m\u00f5ne t\u00f6\u00f6riista kohta, mis lihtsustavad arendaja elu, kelle kood t\u00f6\u00f6tab Kubernetes klastri pod'ides.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Lihtsad abivahendid<\/h2>\n<p><\/p>\n<h3>Kubectl-debug<\/h3>\n<p><\/p>\n<ul>\n<li> Sisu: <b>lisage oma konteiner Pod'i ja vaadake, mis seal toimub<\/b>.<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/aylei\/kubectl-debug\">GitHub<\/a><\/noindex>.<\/li>\n<li> L\u00fchike statistika GH: 715 t\u00e4hte, 54 commiti, 9 kaasautorid.<\/li>\n<li> Keel: Go.<\/li>\n<li> Litsents: Apache License 2.0.<\/li>\n<\/ul>\n<p>\n\u042d\u0442\u043e\u0442 \u043f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f kubectl \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0435\u0433\u043e pod&#8217;a \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u043b\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0435\u043d \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0441 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438. \u0412 \u043d\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u043a\u0443 \u0440\u0430\u0431\u043e\u0442\u044b pod&#8217;\u0430: \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u0435\u0442\u0438, \u043f\u043e\u0441\u043b\u0443\u0448\u0430\u0442\u044c \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0442\u0440\u0430\u0444\u0438\u043a, \u0441\u0434\u0435\u043b\u0430\u0442\u044c strace \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0438 \u0442.\u043f.<\/p>\n<p>You can also switch to the process container by executing <code>chroot \/proc\/PID\/root<\/code> \u2014 which can be very handy 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, making it useful for every developer. We have written more about it in <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/436112\/\">eraldiseisvas artiklis<\/a><\/noindex>.<\/p>\n<h3>Telepresence<\/h3>\n<p><\/p>\n<ul>\n<li> Sisu: <b>move the application to your computer. Develop and debug locally<\/b>.<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/www.telepresence.io\/\">Veebileht<\/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> Litsents: Apache License 2.0.<\/li>\n<\/ul>\n<p>\nThe idea of this extension is to run a container with the application on the local user's computer while proxying all traffic from the cluster to it and back. This approach enables local development simply by modifying files in your favorite IDE: results will be available immediately.<\/p>\n<p>Kohalik k\u00e4ivitamise eelised \u2014 mugavus muudatuste tegemisel ja kohene tulemus, v\u00f5imalus rakendust tavap\u00e4raselt siluda. Puudustest \u2014 n\u00f5udlikkus \u00fchenduse kiiruselt, mis on eriti tunda, kui tuleb t\u00f6\u00f6tada rakendusega, millel on piisavalt k\u00f5rge RPS ja liiklus. Lisaks on Telepresence'il Windowsis probleemid volume mountidega, mis v\u00f5ib olla m\u00e4\u00e4rav piirang arendajatele, kes on sellele ops\u00fcsteemile harjunud.<\/p>\n<p>Oleme juba jaganud oma kogemusi Telepresence'i kasutamisel. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/446788\/\">siit<\/a><\/noindex>.<\/p>\n<h3>Ksync<\/h3>\n<p><\/p>\n<ul>\n<li> Sisu: <b>peaaegu kohene koodi s\u00fcnkroonimine konteineriga klastris<\/b>.<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/vapor-ware\/ksync\">GitHub<\/a><\/noindex>.<\/li>\n<li> L\u00fchike statistika GH: 555 t\u00e4hte, 362 commit'i, 11 panustajat.<\/li>\n<li> Keel: Go.<\/li>\n<li> Litsents: Apache License 2.0.<\/li>\n<\/ul>\n<p>\nUtiliit v\u00f5imaldab s\u00fcnkroonida kohaliku kausta sisu konteineri kataloogiga, mis on k\u00e4ivitatud klastris. Selline t\u00f6\u00f6riist sobib suurep\u00e4raselt skripteerimiskeelte arendajatele, kelle peamine probleem on koodi t\u00f6\u00f6tavasse konteinerisse viimine. Ksync on loodud selle peavalu leevendamiseks.<\/p>\n<p>\u00dche korra initsialiseerimine k\u00e4suga <code>ksync init<\/code> Klastris loob DaemonSet'i, mida kasutatakse valitud konteineri failis\u00fcsteemi oleku j\u00e4lgimiseks. Arendaja k\u00e4ivitab oma kohalikul arvutil k\u00e4su <code>ksync watch<\/code>, mis j\u00e4lgib konfiguratsioone ja k\u00e4ivitab <noindex><a rel=\"nofollow\" href=\"https:\/\/syncthing.net\/\">syncthing<\/a><\/noindex>, mis teostab failide vahetu s\u00fcnkroonimise klastri ja kohaliku s\u00fcsteemi vahel.<\/p>\n<p>J\u00e4\u00e4b anda ksync'ile juhised, mida ja millega s\u00fcnkroonida. N\u00e4iteks selline k\u00e4sk:<\/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 loob watcher'i nimega <code>myproject<\/code>, mis otsib pod'i, millel on silt <code>app=backend<\/code> ja p\u00fc\u00fcab s\u00fcnkroonida kohaliku katalooge <code>\/home\/user\/myproject\/<\/code> konteineri <code>\/var\/www\/myproject\/<\/code> nimel <code>php<\/code>.<\/p>\n<p>Probleemid ja m\u00e4rkused ksync'i kohta meie kogemusest:<\/p>\n<ul>\n<li> Kubernetes'i klastri s\u00f5lmedes peab olema kasutusel <code>overlay2<\/code> Docker'i salvestusjuhiks. \u00dckski teine utiliit ei t\u00f6\u00f6ta.<\/li>\n<li> \u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 Windows \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u041e\u0421 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 watcher&#8217;\u0430 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u0414\u0430\u043d\u043d\u044b\u0439 \u0431\u0430\u0433 \u0437\u0430\u043c\u0435\u0447\u0435\u043d \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043a\u0440\u0443\u043f\u043d\u044b\u043c\u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430\u043c\u0438 \u2014 \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439. \u041c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/syncthing\/syncthing\/issues\/5832\">vastava probleemi<\/a><\/noindex> projekti syncthing, kuid edusamme pole seni (juuli algusest) olnud.<\/li>\n<li> Kasuta faili <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.syncthing.net\/users\/ignoring.html\"><code>.stignore<\/code><\/a><\/noindex> selleks, et m\u00e4\u00e4rata teed v\u00f5i failide mustreid, mida ei ole vaja s\u00fcnkroonida (n\u00e4iteks kataloogid <code>app\/cache<\/code> ja <code>.git<\/code>).<\/li>\n<li> Kuidas ksync suunab konteineri taask\u00e4ivitamise iga faili muutumise korral. Node.js jaoks on see mugav, PHP jaoks aga t\u00e4iesti \u00fcleliigne. Paremini on v\u00e4lja l\u00fclitada opcache ja kasutada lippu <code>--reload=false<\/code>.<\/li>\n<li> Konfiguratsiooni saab alati muuta failis <code>$HOME\/.ksync\/ksync.yaml<\/code>.<\/li>\n<\/ul>\n<p><\/p>\n<h3>K\u00e4ivita<\/h3>\n<p><\/p>\n<ul>\n<li> Sisu: <b>debug'i protsesse otse klastris<\/b>.<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/solo-io\/squash\">GitHub<\/a><\/noindex>.<\/li>\n<li> Kohatu statistika GH: 1154 t\u00e4hte, 279 commit'i, 23 kaasautorit.<\/li>\n<li> Keel: Go.<\/li>\n<li> Litsents: Apache License 2.0.<\/li>\n<\/ul>\n<p>\n\u0414\u0430\u043d\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 pod&#8217;\u0430\u0445. \u0423\u0442\u0438\u043b\u0438\u0442\u0430 \u043f\u0440\u043e\u0441\u0442\u0430 \u0438 \u0432 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0439 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a <i>(vt allpool)<\/i> ja nimeteenuse + pod, kuhu sekkuda. Praegu toetatakse:<\/p>\n<ul>\n<li> delve \u2014 Go rakenduste jaoks;<\/li>\n<li> GDB \u2014 kaugjuhtimise kaudu + porti edastamine;<\/li>\n<li> JDWP poolt edastatav port Java rakenduste debugeerimiseks.<\/li>\n<\/ul>\n<p>\nIDE poolt on toetust vaid VScode'is (kasutades <noindex><a rel=\"nofollow\" href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ilevine.squash\">laiendust<\/a><\/noindex>), kuid sel aastal (2019) plaanitakse ka Eclipse'i ja Intellij' toetust.<\/p>\n<p>Squash \u0437\u0430\u043f\u0443\u0441\u043a\u0430a klastrites protsesside t\u00f5rkeotsinguks privileege saanud konteineri, seet\u00f5ttu on oluline esmalt tutvuda <noindex><a rel=\"nofollow\" href=\"https:\/\/squash.solo.io\/secure_mode\/\">turvare\u017eiimi<\/a><\/noindex> turvaprobleemide v\u00e4ltimiseks.<\/p>\n<h2>Komplekslahendused<\/h2>\n<p>\nSiin tuleme raskema kaliibriga - laiemate projektidega, mis katab korraga enamiku arendajate vajadustest.<\/p>\n<p><i><b>NB<\/b>: Sellel loetel on kindlasti ka meie avatud l\u00e4htekoodiga utiliidile <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/333682\/\"><b>werf<\/b><\/a><\/noindex> (varem tuntud kui dapp). Oleme sellest juba korduvalt kirjutanud ja r\u00e4\u00e4kinud, mist\u00f5ttu otsustasime selle \u00fclevaatesse mitte lisada. Kellel on soovi l\u00e4hemalt tutvuda, soovitame lugeda\/kuulata ettekannet \"<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/460351\/\">werf \u2014 meie CI\/CD t\u00f6\u00f6riist Kuberneteses<\/a><\/noindex>\u00bb.<\/i><\/p>\n<h3>DevSpace<\/h3>\n<p><\/p>\n<ul>\n<li> Sisu: <b>need, kes soovivad alustada Kubernetesega t\u00f6\u00f6tamist, kuid ei taha s\u00fcvitsi minna selle keerukustesse.<\/b>.<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/devspace-cloud\/devspace\">GitHub<\/a><\/noindex>.<\/li>\n<li> L\u00fchi\u00fclevaade GH-st: 630 t\u00e4hte, 1912 commit'i, 13 panustajat.<\/li>\n<li> Keel: Go.<\/li>\n<li> Litsents: Apache License 2.0.<\/li>\n<\/ul>\n<p>\nLahendus samanimeliselt ettev\u00f5ttelt, mis pakub lookup-klausleid Kubernetesega meeskonnat\u00f6\u00f6ks. T\u00f6\u00f6riist loodi kaubanduslikele klastritele, kuid t\u00f6\u00f6tab suurep\u00e4raselt ka teistega.<\/p>\n<p>Kui k\u00e4ivitate k\u00e4su <code>devspace init<\/code> projektiga kataloogis, pakutakse teile (interaktiivses re\u017eiimis):<\/p>\n<ul>\n<li> valida t\u00f6\u00f6 Kubernetes-kluster,<\/li>\n<li> kasutada olemasolevat <code>Dockerfile<\/code> (v\u00f5i genereerida uus) konteineri loomiseks selle p\u00f5hjal,<\/li>\n<li> valida konteineripiltide hoidmiseks repositoorium jne.<\/li>\n<\/ul>\n<p>\nP\u00e4rast neid ettevalmistusi saab alustada arendust, k\u00e4ivitades k\u00e4su <code>devspace dev<\/code>. See kogub konteineri, laadib selle repositooriumisse, k\u00e4ivitab klastrisse juurutamise ja k\u00e4ivitab portide suunamise ning konteineri s\u00fcnkroonimise kohaliku kataloogiga.<\/p>\n<p>Valikuliselt pakutakse terminaliga konteinerisse sisenemist. Sellel ei tasu keelduda, sest tegelikult k\u00e4ivitub konteiner komandeeringu sleep'iga ja rakendust tuleb reaalseks testimiseks k\u00e4sitsi k\u00e4ivitada.<\/p>\n<p>L\u00f5puks k\u00e4ivitab k\u00e4sk <code>devspace deploy<\/code> rakenduse ja sellega seotud infrastruktuuri klastrisse, p\u00e4rast mida k\u00f5ik hakkab t\u00f6\u00f6tama reaalses re\u017eiimis.<\/p>\n<p>Kogu projekti konfiguratsioon on salvestatud failis <code>devspace.yaml<\/code>. Lisaks arenduskeskkonna seadistustele leidub seal ka infrastruktuuri kirjeldus, mis sarnaneb standardsete Kubernetes manifestidega, kuid on oluliselt lihtsustatud.<\/p>\n<p><img decoding=\"async\" alt=\"Arendust\u00f6\u00f6riistad Kuberneteses t\u00f6\u00f6tavatele rakendustele\" src=\"\/wp-content\/uploads\/2019\/08\/7abbba3806facfb69ba4e3f9e0f18938.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Architektuur ja peamised etapid DevSpace'iga t\u00f6\u00f6tamiseks<\/i><\/p>\n<p>Lisaks sellele saab projekti h\u00f5lpsasti lisada ette m\u00e4\u00e4ratud komponente (n\u00e4iteks MySQL andmebaasi) v\u00f5i Helm-kaarte. Lisainfot leiate <noindex><a rel=\"nofollow\" href=\"https:\/\/devspace.cloud\/docs\/\">dokumentatsioonis<\/a><\/noindex> \u2014 see ei ole keeruline.<\/p>\n<h3>Skaffold<\/h3>\n<p><\/p>\n<ul>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/skaffold.dev\/\">Veebileht<\/a><\/noindex>; <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/GoogleContainerTools\/skaffold\">GitHub<\/a><\/noindex>.<\/li>\n<li> L\u00fchistatistika GH: 7423 t\u00e4hte, 4173 commit'i, 136 kaasautorit.<\/li>\n<li> Keel: Go.<\/li>\n<li> Litsents: Apache License 2.0.<\/li>\n<\/ul>\n<p>\n\u042d\u0442\u0430 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u043e\u0442 Google \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u0443\u0435\u0442 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043a\u0440\u044b\u0442\u044c \u0432\u0441\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430, \u0447\u0435\u0439 \u043a\u043e\u0434 \u0442\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 Kubernetes. \u041d\u0430\u0447\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u043c \u043d\u0435 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e, \u043a\u0430\u043a devspace&#8217;\u043e\u043c: \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u044f\u0437\u044b\u043a\u0430 \u0438 \u0430\u0432\u0442\u043e\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f <code>Dockerfile<\/code> siin ei pakuta.<\/p>\n<p>Kuid kui see teid ei heiduta \u2014 siin on, mida Skaffold v\u00f5imaldab:<\/p>\n<ul>\n<li> J\u00e4lgida l\u00e4htekoodi muutusi.<\/li>\n<li> \u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0441 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u043c pod&#8217;\u0430, \u0435\u0441\u043b\u0438 \u043e\u043d \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0441\u0431\u043e\u0440\u043a\u0438.<\/li>\n<li> Koguda konteinerid koodiga, kui programmeerimiskeel on t\u00f5lgendatav, v\u00f5i kompileerida artefakte ja pakkida need konteineritesse.<\/li>\n<li> Saadud pilte kontrollida automaatselt <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/GoogleContainerTools\/container-structure-test\">container-structure-test<\/a><\/noindex>.<\/li>\n<li> T\u00e4gida ja laadida pilte Docker Registry'sse.<\/li>\n<li> Rakendust klastris \u00fcles seada, kasutades kubectl, Helm'i v\u00f5i kustomize'i.<\/li>\n<li> Sadamate suunamine.<\/li>\n<li> Java, Node.js ja Pythonis kirjutatud rakenduste t\u00f5rkeotsing.<\/li>\n<\/ul>\n<p>\nT\u00f6\u00f6voolu erinevaid variatsioone kirjeldatakse deklareeritavalt failis <code>skaffold.yaml<\/code>. Projektile on v\u00f5imalik m\u00e4\u00e4rata ka mitu profiili, kus osaliselt v\u00f5i t\u00e4ielikult muuta ehituse ja juurutamise etappe. N\u00e4iteks arenduse jaoks saab m\u00e4\u00e4rata arendajale mugava baaspildi ja stagingu ning tootmise jaoks - minimaalne (+ kasutada <code>securityContext<\/code> konteinerites v\u00f5i \u00fcmber m\u00e4\u00e4rata kluster, kuhu rakendus juurutatakse).<\/p>\n<p>Docker-konteinerite koostamine v\u00f5ib toimuda kohapeal v\u00f5i kaugjuhtimise teel: <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/cloud-build\/\">Google Cloud Build<\/a><\/noindex> v\u00f5i klastris, kasutades <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/GoogleContainerTools\/kaniko\">Kaniko<\/a><\/noindex>. Samuti toetatakse Bazeli ja Jib Maven\/Gradle. Skaffold toetab sildistamist paljude strateegiate kaudu: git commit hash, kuup\u00e4ev\/aeg, sha256-hash l\u00e4htekoodide jne.<\/p>\n<p>Eraldi tasub mainida konteinerite testimise v\u00f5imalust. juba mainitud raamistik container-structure-test pakub j\u00e4rgmisi kontrollimeetodeid:<\/p>\n<ul>\n<li> K\u00e4skude t\u00e4itmine konteineri kontekstis, j\u00e4lgides v\u00e4ljumisstaatusi ja kontrollides k\u00e4su teksti \"v\u00e4ljundit\".<\/li>\n<li> Failide olemasolu kontrollimine konteineris ja atribuutide vastavuse kontrollimine nimetatule.<\/li>\n<li> Failide sisu kontrollimine regulaarsete v\u00e4ljenditega.<\/li>\n<li> Pildi metaandmete kontrollimine (<code>ENV<\/code>, <code>ENTRYPOINT<\/code>, <code>VOLUMES<\/code> jne).<\/li>\n<li> Litsentside \u00fchisuse kontrollimine.<\/li>\n<\/ul>\n<p>\nFailide s\u00fcnkroniseerimine konteineriga ei toimu k\u00f5ige optimaalsemalt: Skaffold loob lihtsalt arhiivi l\u00e4htekoodidega, kopeerib selle ja lahtipakkimiseks konteineris (peab olema installitud tar). Seet\u00f5ttu, kui teie peamine eesm\u00e4rk on koodi s\u00fcnkroniseerimine, on parem vaadata spetsialiseeritud lahenduste poole (ksync).<\/p>\n<p><img decoding=\"async\" alt=\"Arendust\u00f6\u00f6riistad Kuberneteses t\u00f6\u00f6tavatele rakendustele\" src=\"\/wp-content\/uploads\/2019\/08\/a53647e9d3bf002c292dcae7a774e561.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Skaffoldi t\u00f6\u00f6 peamised etapid<\/i><\/p>\n<p>Kokkuv\u00f5ttes ei v\u00f5imalda see t\u00f6\u00f6riist abstraheerida Kubernetes'i manifeste ning tal puudub mingisugune interaktiivsus, mist\u00f5ttu v\u00f5ib selle omandamine tunduda keeruline. Aga just see on ka selle eelis \u2014 suurem tegutsemisvabadus.<\/p>\n<h3>Garden<\/h3>\n<p><\/p>\n<ul>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/garden.io\/\">Veebileht<\/a><\/noindex>; <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/garden-io\/garden\">GitHub<\/a><\/noindex>.<\/li>\n<li> L\u00fchike statistika GH: 1063 t\u00e4hte, 1927 commit'i, 17 kaasautorid.<\/li>\n<li> Keeleks: TypeScript <i>(plaanitakse jagada projekt mitmeks komponendiks, millest m\u00f5ned on Go keeles, samuti luua SDK laiendite tegemiseks TypeScriptis\/JavaScriptis ja Go-s)<\/i>.<\/li>\n<li> Litsents: Apache License 2.0.<\/li>\n<\/ul>\n<p>\nNagu Skaffold, on ka Garden suunatud kodeerimise tarnimise automatiseerimisele K8s-klastrisse. Selleks tuleb esmalt kirjeldada projekti struktuur YAML-failis, seej\u00e4rel k\u00e4ivitada k\u00e4sk <code>garden dev<\/code>. See teeb kogu v\u00f5lu:<\/p>\n<ul>\n<li> Kogub konteinerid projekti erinevatest osadest.<\/li>\n<li> Vi viib l\u00e4bi integreerimise ja unit-testid, kui need on kirjeldatud.<\/li>\n<li> Taustat\u00f5ukab k\u00f5ik projekti komponendid klastrisse.<\/li>\n<li> Kui allika kood muutub, k\u00e4ivitab ta kogu t\u00f6\u00f6voo uuesti.<\/li>\n<\/ul>\n<p>\nSelle t\u00f6\u00f6riista kasutamisel keskendutakse peamiselt arendajate meeskonna kaugetevahelisele koost\u00f6\u00f6le. Sellisel juhul, kui m\u00f5ned ehituse ja testimise etapid on juba tehtud, kiirendab see kogu protsessi oluliselt, kuna Garden suudab kasutada vahem\u00e4lus olevaid tulemusi.<\/p>\n<p>Projekti mooduliks v\u00f5ib olla konteiner, Maven-konteiner, Helm-graafik, manifester <code>kubectl apply<\/code> v\u00f5i isegi OpenFaaS-funktsioon. Iga moodulit saab t\u00f5mmata kaug-Git-repositooriumist. Moodul v\u00f5ib m\u00e4\u00e4ratleda (v\u00f5i mitte) teenuseid, \u00fclesandeid ja teste. Teenustel ja \u00fclesannetel v\u00f5ivad olla s\u00f5ltuvused, mis aitavad m\u00e4\u00e4rata k\u00f5nealuste teenuste juurutamise j\u00e4rjekorda, korraldada \u00fclesannete ja testide k\u00e4ivitamist.<\/p>\n<p>Garden pakub kasutajale ilusat juhtpaneeli (praegu <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/garden-io\/garden\/tree\/master\/dashboard\">eksperimentaalses olekus<\/a><\/noindex>), milles on projekti visuaal: komponendid, nende kokkupaneku j\u00e4rjekord, \u00fclesannete ja testide t\u00e4itmine ning nende omavahelised seosed ja s\u00f5ltuvused. Otse brauseris saab vaadata ka k\u00f5iki projekti komponente ja kontrollida, mida iga komponent HTTP kaudu edastab (kui muidugi on m\u00e4\u00e4ratletud ingressi ressurss).<\/p>\n<p><img decoding=\"async\" alt=\"Arendust\u00f6\u00f6riistad Kuberneteses t\u00f6\u00f6tavatele rakendustele\" src=\"\/wp-content\/uploads\/2019\/08\/931b48a306fcce025e4dd8aa51d01552.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Garden'i paneel<\/i><\/p>\n<p>Sellel t\u00f6\u00f6riistal on ka hot-reload re\u017eiim, mis lihtsalt s\u00fcnkroniseerib skriptide muudatused konteineriga klastris, kiirendades oluliselt rakenduse silumist. Garden'il on hea <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.garden.io\/\">dokumentatsioon<\/a><\/noindex> ja korralik <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/garden-io\/garden\/tree\/master\/examples\">n\u00e4idiste kogum<\/a><\/noindex>, mis v\u00f5imaldab kiiresti tutvuda ja alustada kasutamist. Muide, hiljuti avaldasime <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/459586\/\">artikli t\u00f5lke<\/a><\/noindex> selle autoritelt.<\/p>\n<h2>Kokkuv\u00f5te<\/h2>\n<p>\nMuidugi ei piirdu Kubernetes'i rakenduste arendamiseks ja silumiseks m\u00f5eldud t\u00f6\u00f6riistade loetelu ainult sellega. On veel palju kasulikke ja praktilisi utiliite, mis v\u00e4\u00e4rivad v\u00e4hemalt m\u00e4rkimist, kui mitte eraldi artiklit. R\u00e4\u00e4kige, milliseid t\u00f6\u00f6riistu teie kasutate, milliste probleemidega olete kokku puutunud ja kuidas olete neid lahendanud!<\/p>\n<h2>P.S.<\/h2>\n<p>\nLugege ka meie blogist:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/460351\/\">werf \u2014 meie CI\/CD t\u00f6\u00f6riist Kubernetesis (\u00fclevaade ja videoettekanne)<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/459586\/\">Garden v0.10.0: Teie s\u00fclearvuti ei vaja Kubernetes<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/446788\/\">Kubernetesi n\u00e4pun\u00e4ited ja nipid: kohaliku arenduse ja Telepresence'i kohta<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/436112\/\">\u041f\u043b\u0430\u0433\u0438\u043d kubectl-debug \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0432 pod&#8217;\u0430\u0445 Kubernetes<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Allikas: <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 4.9.10 - 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 \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\" \/>\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\/et\/blog\/administrirovanie\/instrumenty-dlya-razrabotchikov-prilozhenij-zapuskaemyh-v-kubernetes\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\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 \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\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/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\udd47Arendust\u00f6\u00f6riistad Kuberneteses t\u00f6\u00f6tavate rakenduste jaoks | ProHoster","description":"Aegade l\u00e4henemine haldamiseks lahendab mitmeid \u00e4ri probleemide. Konteinerid ja orkestratsioonid v\u00f5imaldavad h\u00f5lpsasti skaleerida igasuguseid projekte, lihtsustavad uute versioonide v\u00e4ljalaskmist, tehes need usaldusv\u00e4\u00e4rsemaks, kuid samas loovad ka t\u00e4iendavaid probleeme arendajatele. Arendajat huvitab eesk\u00e4tt tema kood: arhitektuur, kvaliteet, j\u00f5udlus, elegants \u2014 mitte see, kuidas ta s\u00f5idab","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/instrumenty-dlya-razrabotchikov-prilozhenij-zapuskaemyh-v-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","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 \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","og:url":"https:\/\/prohoster.info\/et\/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"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/37475","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=37475"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/37475\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/28120"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=37475"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=37475"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=37475"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}