{"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\/sq\/blog\/administrirovanie\/instrumenty-dlya-razrabotchikov-prilozhenij-zapuskaemyh-v-kubernetes","title":{"rendered":"Mjetet p\u00ebr zhvilluesit e aplikacioneve q\u00eb ekzekutohen n\u00eb Kubernetes","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Mjetet p\u00ebr zhvilluesit e aplikacioneve q\u00eb ekzekutohen n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2019\/08\/ad1f46a3562dcefacaa1722ee1ce3387.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQasja moderne n\u00eb operimin e uzinave zgjidh shum\u00eb probleme t\u00eb ngutshme p\u00ebr biznesin. Kontejner\u00ebt dhe orkestrator\u00ebt lejojn\u00eb q\u00eb projektet e \u00e7do niveli t\u00eb shkall\u00ebzohen leht\u00ebsisht, thjeshtojn\u00eb nxjerrjet e versioneve t\u00eb reja, duke i b\u00ebr\u00eb ato m\u00eb t\u00eb besueshme, por p\u00ebrk\u00ebthjn\u00eb gjithashtu dhe probleme t\u00eb tjera p\u00ebr zhvilluesit. Zhvilluesi, para s\u00eb gjithash, shqet\u00ebsohet p\u00ebr kodin e tij: arkitektur\u00ebn, cil\u00ebsin\u00eb, performanc\u00ebn, eleganc\u00ebn - dhe jo p\u00ebr at\u00eb se si do t\u00eb zbatohet n\u00eb Kubernetes dhe si do t\u00eb testohet e debugohet pas \u00e7do ndryshimi, edhe n\u00ebse \u00ebsht\u00eb minimal. Prandaj \u00ebsht\u00eb shum\u00eb e arsyeshme q\u00eb veglat p\u00ebr Kubernetes t\u00eb zhvillohen aktivisht, duke ndihmuar n\u00eb zgjidhjen e problemeve madje edhe t\u00eb zhvilluesve m\u00eb \"arkeik\u00eb\" dhe duke i lejuar ata t\u00eb p\u00ebrqendrohen n\u00eb thelb.<\/p>\n<p>N\u00eb k\u00ebt\u00eb p\u00ebrmbledhje paraqitet nj\u00eb informacion i shkurt\u00ebr rreth disa veglave q\u00eb thjeshtojn\u00eb jet\u00ebn e programuesve, t\u00eb cil\u00ebt kodet e tyre funksionojn\u00eb n\u00eb pod\u2019\u00ebt e klasterit Kubernetes.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Ndihm\u00ebs t\u00eb thjesht\u00eb<\/h2>\n<p><\/p>\n<h3>Kubectl-debug<\/h3>\n<p><\/p>\n<ul>\n<li> Thelbi: <b>shto kontejnerin t\u00ebnd n\u00eb Pod dhe shiko se \u00e7far\u00eb ndodh brenda tij<\/b>.<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/aylei\/kubectl-debug\">GitHub<\/a><\/noindex>.<\/li>\n<li> Statistika e shkurt\u00ebr e GH: 715 yje, 54 komitete, 9 kontribues.<\/li>\n<li> Gjuha: Go.<\/li>\n<li> Licenca: Licenca Apache 2.0.<\/li>\n<\/ul>\n<p>\nKy ky plugin p\u00ebr kubectl lejon krijimin e nj\u00eb kontejneri shtes\u00eb brenda pod-it q\u00eb ju intereson, i cili do t\u00eb ndaj\u00eb hap\u00ebsir\u00ebn n\u00ebnshtes\u00eb me kontejner\u00ebt e tjer\u00eb. N\u00eb t\u00eb mund t\u00eb kryeni debugging t\u00eb pun\u00ebs s\u00eb pod-it: t\u00eb verifikoni funksionimin e rrjetit, t\u00eb d\u00ebgjoni trafikun e rrjetit, t\u00eb b\u00ebni strace t\u00eb procesit q\u00eb ju intereson etj.<\/p>\n<p>Po ashtu mund t\u00eb kalosh n\u00eb kontejnerin e procesit, duke ekzekutuar <code>chroot \/proc\/PID\/root<\/code> \u2014 kjo \u00ebsht\u00eb shum\u00eb e dobishme kur duhet t\u00eb marr\u00ebsh shell-in e root n\u00eb kontejnerin p\u00ebr t\u00eb cilin \u00ebsht\u00eb vendosur n\u00eb manifest <code>securityContext.runAs<\/code>.<\/p>\n<p>Vegla \u00ebsht\u00eb e thjesht\u00eb dhe efektive, k\u00ebshtu q\u00eb mund t\u00eb jet\u00eb e dobishme p\u00ebr \u00e7do zhvillues. M\u00eb shum\u00eb rreth saj kemi shkruar n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/436112\/\">nj\u00eb artikull t\u00eb ve\u00e7ant\u00eb<\/a><\/noindex>.<\/p>\n<h3>Telepresence<\/h3>\n<p><\/p>\n<ul>\n<li> Thelbi: <b>transfero aplikacionin n\u00eb kompjuterin t\u00ebnd. Zhvillo dhe debugo lokal<\/b>.<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/www.telepresence.io\/\">Websajti<\/a><\/noindex>; <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/telepresenceio\/telepresence\">GitHub<\/a><\/noindex>.<\/li>\n<li> Statistika e shkurt\u00ebr e GH: 2131 yj\u00eb, 2712 komitete, 33 kontribues.<\/li>\n<li> Gjuha: Python.<\/li>\n<li> Licenca: Licenca Apache 2.0.<\/li>\n<\/ul>\n<p>\nIdeja e k\u00ebtij mjeti \u00ebsht\u00eb t\u00eb niset nj\u00eb kontejner me aplikacionin n\u00eb kompjuterin lokal t\u00eb p\u00ebrdoruesit dhe t\u00eb proksinoj\u00eb t\u00eb gjith\u00eb trafikun nga klasteri n\u00eb t\u00eb dhe nga ai. Ky qasje lejon zhvillimin lokal, thjesht duke modifikuar skedar\u00ebt n\u00eb IDE-n\u00eb t\u00ebnde t\u00eb preferuar: rezultatet do t\u00eb jen\u00eb t\u00eb aksesueshme menj\u00ebher\u00eb.<\/p>\n<p>Avantazhet e ekzekutimit lokal \u2014 leht\u00ebsia e ndryshimeve dhe rezultati n\u00eb \u00e7ast, mund\u00ebsia p\u00ebr t\u00eb ndihmuar aplikacionin n\u00eb nj\u00eb m\u00ebnyr\u00eb t\u00eb njohur. Nga ana tjet\u00ebr, k\u00ebrkesat p\u00ebr shpejt\u00ebsin\u00eb e lidhjes jan\u00eb t\u00eb theksuara, sidomos kur punoni me nj\u00eb aplikacion me nj\u00eb RPS t\u00eb lart\u00eb dhe trafik. P\u00ebr m\u00eb tep\u00ebr, Telepresence ka probleme me volume mounts n\u00eb Windows, q\u00eb mund t\u00eb jet\u00eb nj\u00eb kufizim vendimtar p\u00ebr zhvilluesit q\u00eb jan\u00eb m\u00ebsuar me k\u00ebt\u00eb sistem operativ.<\/p>\n<p>Kemi ndar\u00eb tashm\u00eb p\u00ebrvoj\u00ebn ton\u00eb me p\u00ebrdorimin e Telepresence <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/446788\/\">k\u00ebtu<\/a><\/noindex>.<\/p>\n<h3>Ksync<\/h3>\n<p><\/p>\n<ul>\n<li> Thelbi: <b>p\u00ebrgj nearly instant synchronization of code with the container in the cluster<\/b>.<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/vapor-ware\/ksync\">GitHub<\/a><\/noindex>.<\/li>\n<li> Statistika e shkurt\u00ebr e GH: 555 yje, 362 commit-e, 11 kontributor\u00eb.<\/li>\n<li> Gjuha: Go.<\/li>\n<li> Licenca: Licenca Apache 2.0.<\/li>\n<\/ul>\n<p>\nUtlilitarja lejon t\u00eb sinkronizoni p\u00ebrmbajtjen e nj\u00eb direktorie lokale me direktorin\u00eb e nj\u00eb konteineri t\u00eb cilin e drejton klasteri. Ky instrument \u00ebsht\u00eb i shk\u00eblqyer p\u00ebr zhvilluesit e gjuh\u00ebve t\u00eb programimit t\u00eb skriptit, problemin kryesor t\u00eb t\u00eb cil\u00ebve \u00ebsht\u00eb q\u00eb t\u00eb dor\u00ebzojn\u00eb kodin n\u00eb nj\u00eb konteiner n\u00eb pun\u00eb. Ksync \u00ebsht\u00eb dizajnuar p\u00ebr t\u00eb hequr k\u00ebt\u00eb shqet\u00ebsim.<\/p>\n<p>Me inicializimin e vet\u00ebm nj\u00eb her\u00eb me komand\u00ebn <code>ksync init<\/code> n\u00eb klaster krijohet nj\u00eb DaemonSet q\u00eb p\u00ebrdoret p\u00ebr t\u00eb ndjekur gjendjen e sistemit dosjeve t\u00eb konteinerit t\u00eb zgjedhur. N\u00eb kompjuterin e tij lokal, zhvilluesi ekzekuton komand\u00ebn <code>ksync watch<\/code>, e cila ndjek konfigurimet dhe nis <noindex><a rel=\"nofollow\" href=\"https:\/\/syncthing.net\/\">syncthing<\/a><\/noindex>, e cila kryen sinkronizimin e drejtp\u00ebrdrejt\u00eb t\u00eb skedar\u00ebve me klasterin.<\/p>\n<p>Mbetej t\u00eb instruktojm\u00eb ksync, se \u00e7far\u00eb dhe me \u00e7far\u00eb t\u00eb sinkronizoj\u00eb. P\u00ebr shembull, komand\u00eb t\u00eb till\u00eb:<\/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 do t\u00eb krijoj\u00eb nj\u00eb watcher me emrin <code>myproject<\/code>, i cili do t\u00eb k\u00ebrkoj\u00eb pod-in me etiket\u00ebn <code>app=backend<\/code> dhe t\u00eb tentoj\u00eb t\u00eb sinkronizoj\u00eb direktorin\u00eb lokale <code>\/home\/user\/myproject\/<\/code> me direktorin\u00eb <code>\/var\/www\/myproject\/<\/code> n\u00eb konteinerin e em\u00ebrtuar <code>php<\/code>.<\/p>\n<p>Problemet dhe sh\u00ebnimet rreth ksync nga p\u00ebrvoja jon\u00eb:<\/p>\n<ul>\n<li> N\u00eb nyjet e klasterit Kubernetes duhet t\u00eb p\u00ebrdoret <code>overlay2<\/code> si drejtor i ruajtjes p\u00ebr Docker. Asnj\u00eb veg\u00ebl tjet\u00ebr nuk do t\u00eb funksionoj\u00eb.<\/li>\n<li> Me p\u00ebrdorimin e Windows si sistem operativ klienti, mund t\u00eb ndodhin probleme t\u00eb pap\u00ebrshtatshme me watcher-in e sistemit t\u00eb skedar\u00ebve. Ky defekt \u00ebsht\u00eb v\u00ebn\u00eb re gjat\u00eb pun\u00ebs me drejtorit\u00eb e m\u00ebdha \u2014 me shum\u00eb skedar\u00eb dhe drejtorira t\u00eb ngulitura. Ne krijuam <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/syncthing\/syncthing\/issues\/5832\">nj\u00eb issue p\u00ebrkat\u00ebs<\/a><\/noindex> n\u00eb projektin syncthing, por deri tani (nga fillimi i korrikut) nuk ka progres.<\/li>\n<li> P\u00ebrdorni skedarin <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.syncthing.net\/users\/ignoring.html\"><code>.stignore<\/code><\/a><\/noindex> p\u00ebr t\u00eb p\u00ebrcaktuar shtegtar\u00ebt ose shabllonet e skedar\u00ebve q\u00eb nuk duhet t\u00eb sinkronizohen (p.sh., katalog\u00ebt <code>app\/cache<\/code> dhe <code>.git<\/code>).<\/li>\n<li> P\u00ebr default, ksync do t\u00eb rinis\u00eb konteinerin p\u00ebr \u00e7do ndryshim t\u00eb skedar\u00ebve. Kjo \u00ebsht\u00eb e p\u00ebrshtatshme p\u00ebr Node.js, por p\u00ebr PHP \u00ebsht\u00eb krejt\u00ebsisht e panevojshme. M\u00eb mir\u00eb \u00ebsht\u00eb t\u00eb \u00e7aktivizohet opcache dhe t\u00eb p\u00ebrdoret flaka <code>--reload=false<\/code>.<\/li>\n<li> Konfigurimi gjithmon\u00eb mund t\u00eb korigjohet n\u00eb <code>$HOME\/.ksync\/ksync.yaml<\/code>.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Squash<\/h3>\n<p><\/p>\n<ul>\n<li> Thelbi: <b>shkall\u00ebzo proceset direkt n\u00eb grumbull<\/b>.<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/solo-io\/squash\">GitHub<\/a><\/noindex>.<\/li>\n<li> Statistika e shkurt\u00ebr GH: 1154 yje, 279 komitete, 23 kontribues.<\/li>\n<li> Gjuha: Go.<\/li>\n<li> Licenca: Licenca Apache 2.0.<\/li>\n<\/ul>\n<p>\nKy mjet \u00ebsht\u00eb i destinuar p\u00ebr debugging t\u00eb proceseve direkt n\u00eb pod-a. Utilita \u00ebsht\u00eb e thjesht\u00eb dhe n\u00eb modin interaktiv ju lejon t\u00eb zgjidhni debugin e nevojsh\u00ebm <i>(shih m\u00eb posht\u00eb)<\/i> dhe namespace + pod, n\u00eb procesin e t\u00eb cilit duhet t\u00eb nd\u00ebrhyhet. N\u00eb k\u00ebt\u00eb moment jan\u00eb t\u00eb mb\u00ebshtetur:<\/p>\n<ul>\n<li> delve \u2014 p\u00ebr aplikacionet n\u00eb Go;<\/li>\n<li> GDB \u2014 p\u00ebrmes target remote + kalimi i portit;<\/li>\n<li> kalimi i portit JDWP p\u00ebr shkall\u00ebzimin e aplikacioneve Java.<\/li>\n<\/ul>\n<p>\nNga ana e IDE, mb\u00ebshtetje ka vet\u00ebm n\u00eb VScode (me ndihm\u00ebn e <noindex><a rel=\"nofollow\" href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ilevine.squash\">zgjerimet<\/a><\/noindex>), megjithat\u00eb, n\u00eb planet p\u00ebr vitin e tanish\u00ebm (2019) jan\u00eb Eclipe dhe Intellij.<\/p>\n<p>P\u00ebr shkall\u00ebzimin e proceseve, Squash aktivizon nj\u00eb konteiner t\u00eb privilegjuar n\u00eb nyjat e grumbullit, prandaj duhet s\u00eb pari t\u00eb njihet me mund\u00ebsit\u00eb e <noindex><a rel=\"nofollow\" href=\"https:\/\/squash.solo.io\/secure_mode\/\">modo t\u00eb siguris\u00eb<\/a><\/noindex> p\u00ebr t\u00eb shmangur probleme me sigurin\u00eb.<\/p>\n<h2>Zgjidhje komplekse<\/h2>\n<p>\nKalojm\u00eb n\u00eb artilerin\u00eb e r\u00ebnd\u00eb \u2014 projekte m\u00eb 't\u00eb m\u00ebdha', t\u00eb destinuara p\u00ebr t\u00eb mbyllur shum\u00eb nevoja t\u00eb zhvilluesve.<\/p>\n<p><i><b>NB<\/b>: N\u00eb k\u00ebt\u00eb list\u00eb, padyshim, ka vend edhe p\u00ebr utilitarin ton\u00eb Open Source <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/333682\/\"><b>werf<\/b><\/a><\/noindex> (m\u00eb par\u00eb i njohur si dapp). Sidoqoft\u00eb, ne tashm\u00eb kemi shkruar dhe folur shum\u00eb p\u00ebr t\u00eb, prandaj vendos\u00ebm t\u00eb mos e p\u00ebrfshijm\u00eb n\u00eb rishikim. P\u00ebr ata q\u00eb d\u00ebshirojn\u00eb t\u00eb njihen m\u00eb af\u00ebr me mund\u00ebsit\u00eb e tij, rekomandojm\u00eb t\u00eb lexoni\/d\u00ebgjoni paraqitjen \"<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/460351\/\">werf \u2014 mjeti yn\u00eb p\u00ebr CI\/CD n\u00eb Kubernetes<\/a><\/noindex>\u00bb.<\/i><\/p>\n<h3>DevSpace<\/h3>\n<p><\/p>\n<ul>\n<li> Thelbi: <b>p\u00ebr ata q\u00eb duan t\u00eb fillojn\u00eb t\u00eb punojn\u00eb n\u00eb Kubernetes, por nuk duan t\u00eb thellohen shum\u00eb n\u00eb thell\u00ebsirat e tij<\/b>.<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/devspace-cloud\/devspace\">GitHub<\/a><\/noindex>.<\/li>\n<li> Statistika e shkurt\u00ebr GH: 630 yje, 1912 komitete, 13 kontribues.<\/li>\n<li> Gjuha: Go.<\/li>\n<li> Licenca: Licenca Apache 2.0.<\/li>\n<\/ul>\n<p>\nZgjidhje nga kompania e nj\u00ebjt\u00eb, q\u00eb ofron grumbuj t\u00eb menaxhuar me Kubernetes p\u00ebr zhvillimin ekipor. Utilitarja u krijua p\u00ebr grumbujt komercial, por funksionon gjithashtu shum\u00eb mir\u00eb me \u00e7do tjet\u00ebr.<\/p>\n<p>Gjat\u00eb ekzekutimit t\u00eb komand\u00ebs <code>devspace init<\/code> n\u00eb katalogun me projektin, do t'ju ofrohet (n\u00eb m\u00ebnyr\u00eb interaktive):<\/p>\n<ul>\n<li> t\u00eb zgjidhni grumbullin tuaj t\u00eb pun\u00ebs Kubernetes,<\/li>\n<li> t\u00eb p\u00ebrdorni at\u00eb ekzistues <code>Dockerfile<\/code> (ose t\u00eb gjeneroni nj\u00eb t\u00eb ri) p\u00ebr t\u00eb krijuar nj\u00eb konteiner mbi t\u00eb,<\/li>\n<li> t\u00eb zgjidhni nj\u00eb depo p\u00ebr ruajtjen e imazheve t\u00eb konteiner\u00ebve dhe k\u00ebshtu me radh\u00eb.<\/li>\n<\/ul>\n<p>\nPas t\u00eb gjitha k\u00ebtyre veprimeve p\u00ebrgatitore, mund t\u00eb filloni zhvillimin duke ekzekutuar komand\u00ebn <code>devspace dev<\/code>. Ajo do t\u00eb mbledh\u00eb kontejnerin, do ta ngarkoj\u00eb at\u00eb n\u00eb depo, do t\u00eb publikoj\u00eb nj\u00eb shp\u00ebrndarje n\u00eb klaster dhe do t\u00eb filloj\u00eb p\u00ebrcjelljen e porteve dhe sinkronizimin e kontejnerit me katalogun lokal.<\/p>\n<p>Opcionalisht do t\u00eb ofrohet t\u00eb kaloni n\u00eb kontejner p\u00ebrmes terminalit. Mos e refuzoni, pasi n\u00eb realitet, kontejneri nis me komand\u00ebn sleep, dhe p\u00ebr testimin e v\u00ebrtet\u00eb, aplikacioni duhet t\u00eb niset manualisht.<\/p>\n<p>N\u00eb fund, komanda <code>devspace deploy<\/code> publikon aplikacionin dhe infrastruktur\u00ebn e lidhur n\u00eb klaster, pas s\u00eb cil\u00ebs gjith\u00e7ka fillon t\u00eb funksionoj\u00eb n\u00eb m\u00ebnyr\u00eb operative.<\/p>\n<p>T\u00eb gjitha konfigurimet e projektit ruhen n\u00eb skedarin <code>devspace.yaml<\/code>. P\u00ebrve\u00e7 konfigurimeve p\u00ebr mjedisin e zhvillimit, n\u00eb t\u00eb mund t\u00eb gjeni p\u00ebrshkrimin e infrastruktur\u00ebs, i ngjash\u00ebm me manifestet standarde Kubernetes, vet\u00ebm shum\u00eb i thjeshtuar.<\/p>\n<p><img decoding=\"async\" alt=\"Mjetet p\u00ebr zhvilluesit e aplikacioneve q\u00eb ekzekutohen n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2019\/08\/7abbba3806facfb69ba4e3f9e0f18938.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Arkitektura dhe hapat kryesor\u00eb t\u00eb pun\u00ebs me DevSpace<\/i><\/p>\n<p>P\u00ebr m\u00eb tep\u00ebr, n\u00eb projekt \u00ebsht\u00eb e leht\u00eb t\u00eb shtosh nj\u00eb komponent t\u00eb paracaktuar (p\u00ebr shembull, DBMS MySQL) ose Helm-chart. Lexoni m\u00eb shum\u00eb n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/devspace.cloud\/docs\/\">dokumentacionin<\/a><\/noindex> \u2014 ajo nuk \u00ebsht\u00eb e komplikuar.<\/p>\n<h3>Skaffold<\/h3>\n<p><\/p>\n<ul>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/skaffold.dev\/\">Websajti<\/a><\/noindex>; <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/GoogleContainerTools\/skaffold\">GitHub<\/a><\/noindex>.<\/li>\n<li> Statistika e shkurt\u00ebr e GH: 7423 yje, 4173 komit\u00eb, 136 kontribues.<\/li>\n<li> Gjuha: Go.<\/li>\n<li> Licenca: Licenca Apache 2.0.<\/li>\n<\/ul>\n<p>\nKy utilitar nga Google pretendon t\u00eb p\u00ebrmbush\u00eb t\u00eb gjitha nevojat e zhvilluesit, t\u00eb cilin kodi i tij do t\u00eb ekzekutohet n\u00eb nj\u00eb kluster Kubernetes. T\u00eb fillosh ta p\u00ebrdor\u00ebsh nuk \u00ebsht\u00eb aq e thjesht\u00eb sa me devspace: nuk ka interaktivitet, p\u00ebrcaktim gjuhe dhe autoregjinim <code>Dockerfile<\/code> k\u00ebtu nuk do t'ju ofrohen.<\/p>\n<p>Megjithat\u00eb, n\u00ebse kjo nuk ju frik\u00ebson \u2014 ja se \u00e7far\u00eb lejon t\u00eb b\u00ebni Skaffold:<\/p>\n<ul>\n<li> T\u00eb monitoroni ndryshimet n\u00eb kodin burimor.<\/li>\n<li> P\u00ebr ta sinkronizuar at\u00eb me kontejnerin e pod-it, n\u00ebse ai nuk k\u00ebrkon nd\u00ebrtim.<\/li>\n<li> T\u00eb nd\u00ebrtoni kontejner\u00eb me kodin, n\u00ebse gjuha e programimit \u00ebsht\u00eb interpretues, ose t\u00eb kompiloni artefaktet dhe t'i paketoni ato n\u00eb kontejner\u00eb.<\/li>\n<li> Imazhet e marra t'i kontrolloni automatikisht me ndihm\u00ebn e <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/GoogleContainerTools\/container-structure-test\">container-structure-test<\/a><\/noindex>.<\/li>\n<li> T\u00eb etiketoni dhe ngarkoni imazhet n\u00eb Docker Registry.<\/li>\n<li> T\u00eb zhvilloni aplikacione n\u00eb klaster, duke p\u00ebrdorur kubectl, Helm ose kustomize.<\/li>\n<li> T\u00eb b\u00ebni p\u00ebrcjelljen e porteve.<\/li>\n<li> T\u00eb debuggoni aplikacione t\u00eb shkruara n\u00eb Java, Node.js, Python.<\/li>\n<\/ul>\n<p>\nWorkflow n\u00eb variacione t\u00eb ndryshme p\u00ebrshkruhet n\u00eb m\u00ebnyr\u00eb deklarative n\u00eb skedarin <code>skaffold.yaml<\/code>. P\u00ebr projektin mund t\u00eb p\u00ebrcaktoni gjithashtu disa profile, n\u00eb t\u00eb cilat mund t\u00eb ndryshoni pjes\u00ebrisht ose plot\u00ebsisht fazat e nd\u00ebrtimit dhe shp\u00ebrndarjes. P\u00ebr shembull, p\u00ebr zhvillimin, t\u00eb p\u00ebrcaktoni nj\u00eb imazh baz\u00eb t\u00eb p\u00ebrshtatsh\u00ebm p\u00ebr zhvilluesin, dhe p\u00ebr staging dhe production \u2014 minimal (+ t\u00eb p\u00ebrdorni <code>securityContext<\/code> t\u00eb kontejner\u00ebve apo t\u00eb rib\u00ebrni klasterin n\u00eb t\u00eb cilin aplikacioni do t\u00eb shp\u00ebrndahet).<\/p>\n<p>Nd\u00ebrtimi i konteiner\u00ebve Docker mund t\u00eb b\u00ebhet lokal ose n\u00eb distanc\u00eb: n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/cloud-build\/\">Google Cloud Build<\/a><\/noindex> apo n\u00eb nj\u00eb grup me ndihm\u00ebn e <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/GoogleContainerTools\/kaniko\">Kaniko<\/a><\/noindex>. Po ashtu, p\u00ebrkrahja jepet p\u00ebr Bazel dhe Jib Maven\/Gradle. P\u00ebr etiketimin, Skaffold mb\u00ebshtet shum\u00eb strategji: sipas hash-it t\u00eb commit git, dat\u00ebs\/ora, shifrat sha256 t\u00eb burimeve, etj.<\/p>\n<p>Ve\u00e7an\u00ebrisht vlen t\u00eb p\u00ebrmendet mund\u00ebsia e testimit t\u00eb konteiner\u00ebve. Korniza e p\u00ebrmendur container-structure-test ofron metodat e m\u00ebposhtme t\u00eb verifikimit:<\/p>\n<ul>\n<li> Ekzekutimi i komandave n\u00eb kontekstin e konteinerit duke monitoruar statuset e daljes dhe duke verifikuar 'rezultatin' tekstual t\u00eb komand\u00ebs.<\/li>\n<li> Kontrolli i pranis\u00eb s\u00eb skedave n\u00eb konteiner dhe p\u00ebrputhja e atributeve me ato t\u00eb caktuara.<\/li>\n<li> Kontrolli i p\u00ebrmbajtjes s\u00eb skedave p\u00ebrmes shprehjeve t\u00eb rregullta.<\/li>\n<li> Krahasimi i metadatas s\u00eb imazhit (<code>ENV<\/code>, <code>ENTRYPOINT<\/code>, <code>VOLUMES<\/code> etj.).<\/li>\n<li> Kontrolli i p\u00ebrputhshm\u00ebris\u00eb s\u00eb licencave.<\/li>\n<\/ul>\n<p>\nSinkronizimi i skedave me konteinerin realizohet n\u00eb nj\u00eb m\u00ebnyr\u00eb q\u00eb nuk \u00ebsht\u00eb m\u00eb e optimizuar: Skaffold thjesht krijon nj\u00eb arkiv me burimet, e kopjon dhe e nxjerr n\u00eb konteiner (duhet t\u00eb jet\u00eb instaluar tar). Prandaj, n\u00ebse detyra juaj kryesore \u00ebsht\u00eb sinkronizimi i kodit, m\u00eb mir\u00eb t\u00eb shikoni nj\u00eb zgjidhje t\u00eb specializuar (ksync).<\/p>\n<p><img decoding=\"async\" alt=\"Mjetet p\u00ebr zhvilluesit e aplikacioneve q\u00eb ekzekutohen n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2019\/08\/a53647e9d3bf002c292dcae7a774e561.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Hapat kryesor\u00eb t\u00eb pun\u00ebs Skaffold<\/i><\/p>\n<p>N\u00eb t\u00ebr\u00ebsi, ky mjet nuk lejon t\u00eb abstrahohet nga manifestet Kubernetes dhe nuk ka asnj\u00eb interaktivitet, prandaj mund t\u00eb duket i komplikuar p\u00ebr t'u m\u00ebsuar. Por n\u00eb k\u00ebt\u00eb gj\u00eb, q\u00ebndron edhe shk\u00eblqimi i tij \u2014 liria e madhe e veprimit.<\/p>\n<h3>Garden<\/h3>\n<p><\/p>\n<ul>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/garden.io\/\">Websajti<\/a><\/noindex>; <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/garden-io\/garden\">GitHub<\/a><\/noindex>.<\/li>\n<li> Statistika e shkurt\u00ebr GH: 1063 yje, 1927 commit-e, 17 kontributor\u00eb.<\/li>\n<li> Gjuha: TypeScript <i>(planifikohet t\u00eb ndahet projekti n\u00eb disa komponent\u00eb, disa prej t\u00eb cil\u00ebve do t\u00eb jen\u00eb n\u00eb Go, si dhe t\u00eb krijohet nj\u00eb SDK p\u00ebr krijimin e shtesave n\u00eb TypeScript\/JavaScript dhe Go)<\/i>.<\/li>\n<li> Licenca: Licenca Apache 2.0.<\/li>\n<\/ul>\n<p>\nAshtu si Skaffold, Garden \u00ebsht\u00eb i fokusuar n\u00eb automatizimin e proceseve t\u00eb dor\u00ebzimit t\u00eb kodit t\u00eb aplikacionit n\u00eb klasterin K8s. P\u00ebr k\u00ebt\u00eb, s\u00eb pari duhet t\u00eb p\u00ebrshkruhet struktura e projektit n\u00eb nj\u00eb skedar YAML, pas s\u00eb cil\u00ebs duhet t\u00eb ekzekutohet komanda <code>garden dev<\/code>. Ajo do t\u00eb b\u00ebj\u00eb gjith\u00eb magjin\u00eb:<\/p>\n<ul>\n<li> Do t\u00eb mbledh\u00eb konteiner\u00ebt me pjes\u00ebt e ndryshme t\u00eb projektit.<\/li>\n<li> Do t\u00eb kryej\u00eb teste integrimi dhe teste unitore, n\u00ebse jan\u00eb p\u00ebrshkruar.<\/li>\n<li> Do t\u00eb l\u00ebshoj\u00eb t\u00eb gjitha komponent\u00ebt e projektit n\u00eb klaster.<\/li>\n<li> N\u00eb rast t\u00eb ndryshimit t\u00eb kodit burimor \u2014 do t\u00eb rilan\u00e7oj\u00eb t\u00eb gjith\u00eb pipeline-n.<\/li>\n<\/ul>\n<p>\nFokusi kryesor me p\u00ebrdorimin e k\u00ebtij instrumenti \u00ebsht\u00eb ndarja e nj\u00eb klasteri t\u00eb larg\u00ebt nga ekipi i zhvilluesve. N\u00eb k\u00ebt\u00eb rast, n\u00ebse disa faza e nd\u00ebrtimit dhe testimit tashm\u00eb jan\u00eb realizuar, kjo do t\u00eb p\u00ebrshpejtoj\u00eb ndjesh\u00ebm t\u00eb gjith\u00eb procesin, pasi Garden do t\u00eb mund t\u00eb p\u00ebrdor\u00eb rezultatet e ruajtura.<\/p>\n<p>Moduli i projektit mund t\u00eb jet\u00eb nj\u00eb konteiner, konteiner Maven, diagram Helm, manifest p\u00ebr <code>kubectl apply<\/code> ose madje nj\u00eb funksion OpenFaaS. Cdo modul mund t\u00eb t\u00ebrheq\u00eb informacione nga nj\u00eb repository t\u00eb larg\u00ebt Git. Nj\u00eb modul mund t\u00eb p\u00ebrcaktoj\u00eb (apo jo) sh\u00ebrbimet, detyrat dhe testet. Sh\u00ebrbimet dhe detyrat mund t\u00eb ken\u00eb var\u00ebsi, \u00e7ka mund\u00ebson p\u00ebrcaktimin e rendit t\u00eb vendosjes s\u00eb sh\u00ebrbimeve t\u00eb caktuara, organizimin e ekzekutimit t\u00eb detyrave dhe testeve.<\/p>\n<p>Garden i ofron p\u00ebrdoruesit nj\u00eb dashboard t\u00eb bukur (p\u00ebr momentin n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/garden-io\/garden\/tree\/master\/dashboard\">gjendje eksperimentale<\/a><\/noindex>), n\u00eb t\u00eb cilin shfaqet grafiku i projektit: komponent\u00ebt, rendi i nd\u00ebrtimit, ekzekutimi i detyrave dhe testeve, lidhjet e tyre dhe var\u00ebsit\u00eb. P\u00ebrmes shfletuesit mund t\u00eb shikoni log-et e t\u00eb gjitha komponenteve t\u00eb projektit dhe t\u00eb kontrolloni se \u00e7far\u00eb jep \u00e7do komponent p\u00ebrmes HTTP (n\u00ebse, natyrisht, p\u00ebr t\u00eb \u00ebsht\u00eb shpallur nj\u00eb burim ingress).<\/p>\n<p><img decoding=\"async\" alt=\"Mjetet p\u00ebr zhvilluesit e aplikacioneve q\u00eb ekzekutohen n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2019\/08\/931b48a306fcce025e4dd8aa51d01552.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Paneli p\u00ebr Garden<\/i><\/p>\n<p>Ky instrument ka gjithashtu nj\u00eb mod hot-reload, i cili thjesht sinkronizon ndryshimet e skripteve me konteinerin n\u00eb klaster, duke p\u00ebrshpejtuar shum\u00eb procesin e debug-ut t\u00eb aplikacionit. Garden ka nj\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.garden.io\/\">dokumentacioni<\/a><\/noindex> dhe nj\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/garden-io\/garden\/tree\/master\/examples\">grup t\u00eb mir\u00eb shembujsh<\/a><\/noindex>, q\u00eb lejojn\u00eb nj\u00eb adaptim t\u00eb shpejt\u00eb dhe fillim t\u00eb p\u00ebrdorimit. P\u00ebr m\u00eb tep\u00ebr, shum\u00eb koh\u00eb m\u00eb par\u00eb ne publikuam <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/459586\/\">p\u00ebrkthimi i artikullit<\/a><\/noindex> nga autor\u00ebt e tij.<\/p>\n<h2>P\u00ebrfundim<\/h2>\n<p>\nNatyrisht, ky list\u00eb nuk p\u00ebrfshin t\u00eb gjitha mjetet p\u00ebr zhvillimin dhe debug-un e aplikacioneve n\u00eb Kubernetes. Ka shum\u00eb mjete t\u00eb tjera jasht\u00ebzakonisht t\u00eb dobishme dhe praktike, t\u00eb cilat meritojn\u00eb, n\u00ebse jo nj\u00eb artikull t\u00eb ve\u00e7ant\u00eb, t\u00eb pakt\u00ebn nj\u00eb p\u00ebrmendje. Na tregoni se \u00e7far\u00eb p\u00ebrdorni, cilat probleme keni hasur dhe si i keni zgjidhur ato!<\/p>\n<h2>P.S.<\/h2>\n<p>\nLexoni gjithashtu n\u00eb blogun ton\u00eb:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/460351\/\">werf - mjeti yn\u00eb p\u00ebr CI\/CD n\u00eb Kubernetes (shqyrtim dhe video prezantimi)<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/459586\/\">Garden v0.10.0: Laptopi juaj nuk ka nevoj\u00eb p\u00ebr Kubernetes<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/446788\/\">K\u00ebshilla dhe truke p\u00ebr Kubernetes: mbi zhvillimin lokal dhe Telepresence<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/436112\/\">Plugins kubectl-debug p\u00ebr debug n\u00eb pod-at Kubernetes<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Burimi: <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.2.1 - 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\/sq\/blog\/administrirovanie\/instrumenty-dlya-razrabotchikov-prilozhenij-zapuskaemyh-v-kubernetes\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\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\/sq\/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\udd47Mjetet p\u00ebr zhvilluesit e aplikacioneve q\u00eb ekzekutohen n\u00eb Kubernetes | ProHoster","description":"Qasja moderne n\u00eb.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/instrumenty-dlya-razrabotchikov-prilozhenij-zapuskaemyh-v-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\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\/sq\/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\/sq\/wp-json\/wp\/v2\/posts\/37475","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=37475"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/37475\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/28120"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=37475"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=37475"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=37475"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}