{"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 funksionojn\u00eb 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 funksionojn\u00eb n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2019\/08\/ad1f46a3562dcefacaa1722ee1ce3387.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQashtu i shkurtuar n\u00eb menaxhimin e infrastruktur\u00ebs zgjidh nj\u00eb s\u00ebr\u00eb problemesh t\u00eb r\u00ebnd\u00ebsishme p\u00ebr biznesin. Kontejner\u00ebt dhe orkestruesit lejojn\u00eb shkall\u00ebzimin e leht\u00eb t\u00eb projekteve t\u00eb \u00e7do kompleksiteti, thjeshtojn\u00eb l\u00ebshimin e versioneve t\u00eb reja, duke i b\u00ebr\u00eb ato m\u00eb t\u00eb besueshme, por po ashtu krijojn\u00eb probleme t\u00eb reja p\u00ebr zhvilluesit. Programuesi, para s\u00eb gjithash, \u00ebsht\u00eb i shqet\u00ebsuar p\u00ebr kodin e tij: arkitektur\u00ebn, cil\u00ebsin\u00eb, performanc\u00ebn, eleganc\u00ebn \u2014 dhe jo p\u00ebr m\u00ebnyr\u00ebn se si do t\u00eb implementohet n\u00eb Kubernetes dhe se si do t\u00eb testohet dhe rregullohet pas edhe ndyshimeve m\u00eb minimale. Prandaj \u00ebsht\u00eb e natyrshme q\u00eb po zhvillohen me shpejt\u00ebsi mjete p\u00ebr Kubernetes, q\u00eb ndihmojn\u00eb t\u00eb zgjidhin problemet edhe p\u00ebr zhvilluesit m\u00eb \"arkaik\", duke u lejuar atyre t\u00eb p\u00ebrqendrohen te e r\u00ebnd\u00ebsishmja.<\/p>\n<p>Ky p\u00ebrmbledhje paraqet informacion t\u00eb shkurtuar mbi disa mjete q\u00eb leht\u00ebsojn\u00eb jet\u00ebn e programuesve, t\u00eb cil\u00ebt kodet e tyre jan\u00eb duke funksionuar n\u00eb pod\u2019ax e Kubernetes.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Ndihm\u00ebsit e thjesht\u00eb<\/h2>\n<p><\/p>\n<h3>Kubectl-debug<\/h3>\n<p><\/p>\n<ul>\n<li> Thelbi: <b>shtoni konteinerin tuaj n\u00eb Pod dhe shihni se \u00e7far\u00eb po ndodh n\u00eb t\u00eb<\/b>.<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/aylei\/kubectl-debug\">GitHub<\/a><\/noindex>.<\/li>\n<li> Statistika t\u00eb shkurtuara t\u00eb GH: 715 yje, 54 komite, 9 kontributor\u00eb.<\/li>\n<li> Gjuha: Go.<\/li>\n<li> Licenca: 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>Gjithashtu mund t\u00eb kaloni n\u00eb konteineren e procesit, duke kryer <code>chroot \/proc\/PID\/root<\/code> \u2014 kjo \u00ebsht\u00eb shum\u00eb e dobishme kur duhen marr\u00eb shell root n\u00eb kontejnerin, p\u00ebr t\u00eb cilin \u00ebsht\u00eb vendosur n\u00eb manifest <code>securityContext.runAs<\/code>.<\/p>\n<p>Kjo mjet \u00ebsht\u00eb i thjesht\u00eb dhe efektiv, k\u00ebshtu q\u00eb mund t\u00eb jet\u00eb i dobish\u00ebm p\u00ebr \u00e7do zhvillues. M\u00eb shum\u00eb p\u00ebr t\u00eb 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. Zhvilloni dhe debugo lokalisht<\/b>.<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/www.telepresence.io\/\">Faqja<\/a><\/noindex>; <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/telepresenceio\/telepresence\">GitHub<\/a><\/noindex>.<\/li>\n<li> Statistikat e shkurt\u00ebr t\u00eb GH: 2131 yje, 2712 komitete, 33 kontribues.<\/li>\n<li> Gjuha: Python.<\/li>\n<li> Licenca: Apache License 2.0.<\/li>\n<\/ul>\n<p>\nIdea e k\u00ebsaj pajisjeje \u00ebsht\u00eb nisja e nj\u00eb kontejneri me aplikacionin n\u00eb kompjuterin lokal t\u00eb p\u00ebrdoruesit dhe proksimi i gjith\u00eb trafikut nga klasteri n\u00eb t\u00eb dhe prapa. Ky qasje lejon zhvillimin lokal, duke thjesht ndryshuar skedar\u00ebt n\u00eb IDE-n\u00eb tuaj t\u00eb preferuar: rezultatet do t\u00eb jen\u00eb menj\u00ebher\u00eb t\u00eb disponueshme.<\/p>\n<p>P\u00ebrpar\u00ebsit\u00eb e lan\u00e7imit lokal jan\u00eb leht\u00ebsia e korrigjimeve dhe rezultati i menj\u00ebhersh\u00ebm, si dhe mund\u00ebsia p\u00ebr t\u00eb debuguar aplikacionin n\u00eb nj\u00eb m\u00ebnyr\u00eb t\u00eb njohur. Nd\u00ebr defektet \u00ebsht\u00eb k\u00ebrkesa p\u00ebr shpejt\u00ebsin\u00eb e lidhjes, e cila b\u00ebhet ve\u00e7an\u00ebrisht e dukshme kur \u00ebsht\u00eb e nevojshme t\u00eb punohet me nj\u00eb aplikacion q\u00eb ka RPS dhe trafik t\u00eb mjaftuesh\u00ebm t\u00eb lart\u00eb. P\u00ebr m\u00eb tep\u00ebr, Telepresence ka probleme me mount volumes n\u00eb Windows, \u00e7ka mund t\u00eb b\u00ebhet nj\u00eb kufizim vendimtar p\u00ebr zhvilluesit q\u00eb jan\u00eb m\u00ebsuar me k\u00ebt\u00eb sistem operativ.<\/p>\n<p>Ne tashm\u00eb kemi ndar\u00eb p\u00ebrvoj\u00ebn ton\u00eb t\u00eb p\u00ebrdorimit t\u00eb 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>sinkronizimi pothuajse i menj\u00ebhersh\u00ebm i kodit me kontejnerin n\u00eb klaster<\/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: Apache License 2.0.<\/li>\n<\/ul>\n<p>\nUtilitari lejon t\u00eb sinkronizoni p\u00ebrmbajtjen e drejtoris\u00eb lokale me katalogun e kontejnerit t\u00eb ekzekutuar n\u00eb klaster. Ky mjet \u00ebsht\u00eb i p\u00ebrshtatsh\u00ebm p\u00ebr zhvilluesit q\u00eb p\u00ebrdorin gjuh\u00eb programimi skenar, problemi kryesor i t\u00eb cil\u00ebve \u00ebsht\u00eb d\u00ebrgimi i kodit n\u00eb nj\u00eb kontejner n\u00eb pun\u00eb. Ksync \u00ebsht\u00eb krijuar p\u00ebr t\u00eb leht\u00ebsuar k\u00ebt\u00eb dhimbje koke.<\/p>\n<p>N\u00eb nj\u00eb inicializim t\u00eb vet\u00ebm me komand\u00ebn <code>ksync init<\/code> N\u00eb klaster krijohet nj\u00eb DaemonSet, i cili p\u00ebrdoret p\u00ebr t\u00eb monitoruar gjendjen e sistemit t\u00eb skedar\u00ebve t\u00eb kontejnerit t\u00eb p\u00ebrzgjedhur. N\u00eb kompjuterin e tij lokal, zhvilluesi ekzekuton komand\u00ebn <code>ksync watch<\/code>, e cila monitoron konfigurimet dhe aktivizon <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>Ka mbetur t\u00eb udh\u00ebzohet ksync se \u00e7far\u00eb t\u00eb sinkronizoj\u00eb dhe me \u00e7far\u00eb. P\u00ebr shembull, nj\u00eb komand\u00eb e 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 me etiket\u00ebn <code>app=backend<\/code> dhe do t\u00eb p\u00ebrpiqet t\u00eb sinkronizoj\u00eb drejtorin\u00eb lokale <code>\/home\/user\/myproject\/<\/code> me katalogun <code>\/var\/www\/myproject\/<\/code> n\u00eb kontejnerin e quajtur <code>php<\/code>.<\/p>\n<p>Problemet dhe sh\u00ebnimet p\u00ebr ksync nga eksperience jon\u00eb:<\/p>\n<ul>\n<li> N\u00eb nyjet e klasterit Kubernetes duhet t\u00eb p\u00ebrdoret <code>overlay2<\/code> si driveri i ruajtjes p\u00ebr Docker. Asnj\u00eb utilitar tjet\u00ebr nuk do t\u00eb funksionoj\u00eb.<\/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\">nj\u00eb problem p\u00ebrkat\u00ebs<\/a><\/noindex> n\u00eb projektin syncthing, por deri tani nuk ka progres (q\u00eb nga fillimi i korrikut).<\/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 specifikuar rrug\u00ebt ose modelet e skedar\u00ebve q\u00eb nuk duhet t\u00eb sinkronizohen (p\u00ebr shembull, katalog\u00ebt <code>app\/cache<\/code> dhe <code>.git<\/code>).<\/li>\n<li> N\u00eb m\u00ebnyr\u00eb t\u00eb paracaktuar, ksync do t\u00eb rip\u00ebrk\u00ebthej\u00eb kontejnerin p\u00ebr \u00e7do ndryshim skedari. Kjo \u00ebsht\u00eb e dobishme p\u00ebr Node.js, por p\u00ebr PHP \u00ebsht\u00eb krejt\u00ebsisht e panevojshme. M\u00eb mir\u00eb \u00ebsht\u00eb t\u00eb \u00e7aktivizoni opcache dhe t\u00eb p\u00ebrdorni flamurin <code>--reload=false<\/code>.<\/li>\n<li> Konfigurimin mund ta korrigjoni gjithmon\u00eb 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>debogoni proceset direkt n\u00eb klaster<\/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 yjet, 279 komitete, 23 kontribues.<\/li>\n<li> Gjuha: Go.<\/li>\n<li> Licenca: 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>(shih m\u00eb posht\u00eb)<\/i> dhe namespace + pod, n\u00eb procesin e t\u00eb cilit duhet t\u00eb nd\u00ebrhyni. Aktualisht mb\u00ebshteten:<\/p>\n<ul>\n<li> delve \u2014 p\u00ebr aplikacionet n\u00eb Go;<\/li>\n<li> GDB \u2014 p\u00ebrmes target remote + kalimin e portit;<\/li>\n<li> kalimin e portit JDWP p\u00ebr debogimin e aplikacioneve Java.<\/li>\n<\/ul>\n<p>\nNga ana e IDE, mb\u00ebshtetje ka vet\u00ebm n\u00eb VScode (me an\u00eb t\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ilevine.squash\">shtes\u00ebs<\/a><\/noindex>), megjithat\u00eb plani p\u00ebr k\u00ebt\u00eb vit (2019) p\u00ebrfshin Eclipse dhe Intellij.<\/p>\n<p>P\u00ebr t\u00eb debug-uar proceset, Squash nis n\u00eb nyjat e klasterit nj\u00eb kontenier t\u00eb privilegjuar, prandaj \u00ebsht\u00eb e nevojshme t\u00eb njiheni s\u00eb pari me funksionalitetet <noindex><a rel=\"nofollow\" href=\"https:\/\/squash.solo.io\/secure_mode\/\">e \u0440\u0435\u0436\u0438\u043cit t\u00eb siguris\u00eb<\/a><\/noindex> p\u00ebr t\u00eb shmangur probleme me sigurin\u00eb.<\/p>\n<h2>Zgjidhje komplekse<\/h2>\n<p>\nPo kalojm\u00eb n\u00eb artilerin\u00eb e r\u00ebnd\u00eb \u2014 projekte m\u00eb \"t\u00eb m\u00ebdha\", t\u00eb destinuara p\u00ebr t\u00eb p\u00ebrmbushur menj\u00ebher\u00eb shum\u00eb nevoja t\u00eb zhvilluesve.<\/p>\n<p><i><b>NB<\/b>: N\u00eb k\u00ebt\u00eb list\u00eb, padyshim q\u00eb ka nj\u00eb 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 e njohur si dapp). Sidoqoft\u00eb, ne kemi shkruar dhe treguar disa her\u00eb p\u00ebr t\u00eb, ndaj vendos\u00ebm ta l\u00ebm\u00eb jasht\u00eb k\u00ebtij shqyrtimi. P\u00ebr ata q\u00eb duan t\u00eb njihen m\u00eb nga af\u00ebr me funksionalitetet e saj, rekomandojm\u00eb t\u00eb lexojn\u00eb\/d\u00ebgjojn\u00eb prezantimin \"<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 theksohen thell\u00eb n\u00eb brend\u00ebsin\u00eb 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 e GH: 630 yje, 1912 commit-e, 13 kontribuues.<\/li>\n<li> Gjuha: Go.<\/li>\n<li> Licenca: Apache License 2.0.<\/li>\n<\/ul>\n<p>\nNj\u00eb zgjidhje nga firma e nj\u00ebjt\u00eb, q\u00eb ofron klastere t\u00eb menaxhuara me Kubernetes p\u00ebr zhvillim n\u00eb ekip. Utilitari u krijua p\u00ebr klastere komerciale, por funksionon shk\u00eblqyer edhe me \u00e7far\u00ebdo tjetr\u00eb.<\/p>\n<p>Kur ekzekutohet komand\u00ebn <code>devspace init<\/code> n\u00eb katalogun e projektit, do t'ju propozohet (n\u00eb modin interaktiv):<\/p>\n<ul>\n<li> zgjidhni nj\u00eb Kubernetes-cluster aktiv,<\/li>\n<li> p\u00ebrdorni at\u00eb ekzistues, <code>Dockerfile<\/code> (ose gjeneroni nj\u00eb t\u00eb ri) p\u00ebr t\u00eb krijuar nj\u00eb en\u00eb mbi t\u00eb,<\/li>\n<li> zgjidhni nj\u00eb depo p\u00ebr ruajtjen e imazheve t\u00eb en\u00ebve, etj.<\/li>\n<\/ul>\n<p>\nPas k\u00ebtyre veprimeve p\u00ebrgatitore, mund t\u00eb filloni zhvillimin duke e ekzekutuar komand\u00ebn <code>devspace dev<\/code>. Ajo do t\u00eb p\u00ebrgatis\u00eb en\u00ebn, do ta ngarkoj\u00eb at\u00eb n\u00eb depo, do t\u00eb vendos\u00eb nj\u00eb deployment n\u00eb cluster dhe do t\u00eb filloj\u00eb kalimin e portave dhe sinkronizimin e en\u00ebs me katalogun lokal.<\/p>\n<p>Opcionalisht, do t\u00eb ofrohet kalimi me terminal n\u00eb en\u00eb. Mos e refuzoni, pasi n\u00eb realitet en\u00eb e fillon me komand\u00ebn sleep, dhe p\u00ebr testimin real, aplikacioni duhet t\u00eb niset manualisht.<\/p>\n<p>N\u00eb fund, komanda <code>devspace deploy<\/code> do t\u00eb vendos\u00eb aplikacionin dhe infrastruktur\u00ebn e lidhur n\u00eb cluster, 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 ruhet n\u00eb dosjen <code>devspace.yaml<\/code>. P\u00ebrve\u00e7 konfigurimeve t\u00eb mjedisit p\u00ebr zhvillim, aty mund t\u00eb gjeni edhe p\u00ebrshkrimin e infrastruktur\u00ebs, i ngjash\u00ebm me manifestet standarde t\u00eb Kubernetes, vet\u00ebm shum\u00eb i thjeshtuar.<\/p>\n<p><img decoding=\"async\" alt=\"Mjetet p\u00ebr zhvilluesit e aplikacioneve q\u00eb funksionojn\u00eb 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 n\u00eb pun\u00ebn me DevSpace<\/i><\/p>\n<p>P\u00ebr m\u00eb tep\u00ebr, \u00ebsht\u00eb e leht\u00eb t\u00eb shtosh nj\u00eb komponent t\u00eb paracaktuar n\u00eb projekt (p.sh., DBMS MySQL) ose nj\u00eb Helm-chart. M\u00eb shum\u00eb informacion mund t\u00eb gjeni n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/devspace.cloud\/docs\/\">dokumentacion<\/a><\/noindex> \u2014 \u00ebsht\u00eb e thjesht\u00eb.<\/p>\n<h3>Skaffold<\/h3>\n<p><\/p>\n<ul>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/skaffold.dev\/\">Faqja<\/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 komitete, 136 kontribues.<\/li>\n<li> Gjuha: Go.<\/li>\n<li> Licenca: 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> k\u00ebtu nuk do t\u2019ju ofrohet.<\/p>\n<p>Megjithat\u00eb, n\u00ebse kjo nuk ju frik\u00ebson \u2014 ja \u00e7far\u00eb mund t\u00eb b\u00ebj\u00eb Skaffold:<\/p>\n<ul>\n<li> T\u00eb monitoroj\u00eb ndryshimet n\u00eb kodin burimor.<\/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> T\u00eb nd\u00ebrtoj\u00eb kontejner\u00ebt me kodin, n\u00ebse gjuha e programimit \u00ebsht\u00eb interpretuese, ose t\u00eb kompiloj\u00eb artefaktet dhe t\u2019i paketoj\u00eb ato n\u00eb kontejner\u00eb.<\/li>\n<li> T\u00eb verifikoj\u00eb automatikisht imazhet e krijuara me an\u00eb t\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/GoogleContainerTools\/container-structure-test\">container-structure-test<\/a><\/noindex>.<\/li>\n<li> T\u00eb etiketoj\u00eb dhe ngarkoj\u00eb imazhet n\u00eb Docker Registry.<\/li>\n<li> T\u00eb zbuloj\u00eb aplikacione n\u00eb klaster, duke p\u00ebrdorur kubectl, Helm ose kustomize.<\/li>\n<li> T\u00eb b\u00ebj\u00eb port forwarding.<\/li>\n<li> T\u00eb debagoj\u00eb aplikacione t\u00eb shkruara n\u00eb Java, Node.js, Python.<\/li>\n<\/ul>\n<p>\nWorkflow n\u00eb variacione t\u00eb ndryshme p\u00ebrshkruhet deklarativisht n\u00eb skedarin <code>skaffold.yaml<\/code>. P\u00ebr projektin gjithashtu mund t\u00eb p\u00ebrcaktoni disa profile, n\u00eb t\u00eb cilat mund t\u00eb ndryshoni pjes\u00ebrisht ose plot\u00ebsisht fazat e mbledhjes dhe implementimit. P\u00ebr shembull, p\u00ebr zhvillimin, p\u00ebrcaktoni nj\u00eb imazh baz\u00eb t\u00eb p\u00ebrshtatsh\u00ebm p\u00ebr zhvilluesin, nd\u00ebrsa p\u00ebr staging dhe production - minimal (+ p\u00ebrdorni <code>securityContext<\/code> t\u00eb konteiner\u00ebve ose r redefinoni klasterin n\u00eb t\u00eb cilin aplikacioni do t\u00eb jet\u00eb i vepruesh\u00ebm).<\/p>\n<p>Nd\u00ebrtohen konteiner\u00ebt Docker mund t\u00eb realizohen lokal ose n\u00eb distanc\u00eb: n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/cloud-build\/\">Google Cloud Build<\/a><\/noindex> ose n\u00eb klaster duke p\u00ebrdorur <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/GoogleContainerTools\/kaniko\">Kaniko<\/a><\/noindex>. Gjithashtu mb\u00ebshteten Bazel dhe Jib Maven\/Gradle. P\u00ebr etiketimin, Skaffold mb\u00ebshtet shum\u00eb strategji: sipas hash-it t\u00eb commit-it git, dat\u00ebs\/or\u00ebs, sha256-\u00ebs s\u00eb burimeve, etj.<\/p>\n<p>Ve\u00e7an\u00ebrisht \u00ebsht\u00eb e r\u00ebnd\u00ebsishme t\u00eb theksohet mund\u00ebsia e testimit t\u00eb konteiner\u00ebve. Q\u00eb e p\u00ebrmendur m\u00eb her\u00ebt, framework-u container-structure-test ofron metodat e m\u00ebposhtme t\u00eb verifikimit:<\/p>\n<ul>\n<li> Ekzekutimi i komandave n\u00eb kontekstin e konteinerit me ndjekjen e statusit t\u00eb daljes dhe kontrollin e \u201cd\u00ebshmitar\u00ebve\u201d t\u00eb komand\u00ebs.<\/li>\n<li> Kontrolli i pranis\u00eb s\u00eb skedar\u00ebve n\u00eb konteiner dhe p\u00ebrputhshm\u00ebria e atributeve me ato t\u00eb caktuara.<\/li>\n<li> Kontrolli i p\u00ebrmbajtjeve t\u00eb skedar\u00ebve sipas shprehjeve t\u00eb rregullta.<\/li>\n<li> P\u00ebrq\u00ebndrimi i metadatat t\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 skedar\u00ebve me kontejnerin nuk po b\u00ebhet n\u00eb m\u00ebnyr\u00ebn m\u00eb optimale: Skaffold thjesht krijon nj\u00eb arshiv me burimet, e kopjon at\u00eb dhe e shkarkon n\u00eb kontejner (tar duhet t\u00eb jet\u00eb i instaluar). Prandaj, n\u00ebse detyra juaj kryesore \u00ebsht\u00eb sinkronizimi i kodit, \u00ebsht\u00eb m\u00eb mir\u00eb t\u00eb shqyrtoni nj\u00eb zgjidhje t\u00eb specializuar (ksync).<\/p>\n<p><img decoding=\"async\" alt=\"Mjetet p\u00ebr zhvilluesit e aplikacioneve q\u00eb funksionojn\u00eb 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 me Skaffold<\/i><\/p>\n<p>P\u00ebrgjith\u00ebsisht, ky mjet nuk lejon q\u00eb t\u00eb abstohej nga manifestet e Kubernetes dhe nuk ka ndonj\u00eb interaktivitet, prandaj mund t\u00eb duket i v\u00ebshtir\u00eb p\u00ebr t'u m\u00ebsuar. Por, n\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb, kjo \u00ebsht\u00eb p\u00ebrpar\u00ebsia e tij \u2014 nj\u00eb liri m\u00eb e madhe veprimi.<\/p>\n<h3>Garden<\/h3>\n<p><\/p>\n<ul>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/garden.io\/\">Faqja<\/a><\/noindex>; <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/garden-io\/garden\">GitHub<\/a><\/noindex>.<\/li>\n<li> Statistika e shkurt\u00ebr e GH: 1063 yje, 1927 komitete, 17 kontribues.<\/li>\n<li> Gjuha: TypeScript <i>(planifikohet ndarja e projektit n\u00eb disa komponent\u00eb, disa prej t\u00eb cilave do jen\u00eb n\u00eb Go, si dhe b\u00ebni nj\u00eb SDK p\u00ebr krijimin e shtesave n\u00eb TypeScript\/JavaScript dhe Go)<\/i>.<\/li>\n<li> Licenca: Apache License 2.0.<\/li>\n<\/ul>\n<p>\nSi Skaffold, Garden synon n\u00eb automatizimin e proceseve t\u00eb shp\u00ebrndarjes s\u00eb kodit t\u00eb aplikacionit n\u00eb K8s-klast\u00ebr. P\u00ebr k\u00ebt\u00eb, fillimisht \u00ebsht\u00eb e nevojshme t\u00eb p\u00ebrshkruhet struktura e projektit n\u00eb nj\u00eb skedar YAML, pas \u00e7ka do t\u00eb niset komanda <code>garden dev<\/code>. Ajo do t\u00eb b\u00ebj\u00eb t\u00eb gjith\u00eb magjin\u00eb:<\/p>\n<ul>\n<li> Do t\u00eb nd\u00ebrtoj\u00eb kontejner\u00ebt me pjes\u00eb t\u00eb ndryshme t\u00eb projektit.<\/li>\n<li> Do t\u00eb kryej\u00eb testet e integrimit dhe unit-testet, n\u00ebse ato jan\u00eb p\u00ebrshkruar.<\/li>\n<li> Do t\u00eb nxjerr\u00eb t\u00eb gjitha komponent\u00ebt e projektit n\u00eb kluster.<\/li>\n<li> N\u00eb rastin e ndryshimit t\u00eb kodit burimor \u2014 do t\u00eb rinis\u00eb t\u00eb gjith\u00eb pipeline-in.<\/li>\n<\/ul>\n<p>\nTheksi kryesor gjat\u00eb p\u00ebrdorimit t\u00eb k\u00ebtij instrumenti \u00ebsht\u00eb n\u00eb ndarjen e klustrit t\u00eb larg\u00ebt nga ekipi i zhvilluesve. N\u00eb k\u00ebt\u00eb rast, n\u00ebse disa faza t\u00eb nd\u00ebrtimit dhe testimit tashm\u00eb jan\u00eb b\u00ebr\u00eb, kjo do ta p\u00ebrshpejtoj\u00eb shum\u00eb 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 kontejner, nj\u00eb kontejner Maven, nj\u00eb chart Helm, nj\u00eb manifest p\u00ebr <code>kubectl aplikoni<\/code> ose madje nj\u00eb funksion OpenFaaS. \u00c7do modul mund t\u00eb t\u00ebrhiqet nga nj\u00eb repository Git i larg\u00ebt. Moduli mund t\u00eb p\u00ebrcaktoj\u00eb (ose jo) sh\u00ebrbimet, detyrat dhe testet. Sh\u00ebrbimet dhe detyrat mund t\u00eb ken\u00eb var\u00ebsi, duke e b\u00ebr\u00eb t\u00eb mundur p\u00ebrcaktimin e rendit kronologjik t\u00eb shp\u00ebrndarjes s\u00eb sh\u00ebrbimeve t\u00eb ndryshme, renditjen 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 dhe var\u00ebsit\u00eb e tyre. Drejt n\u00eb shfletues mund t\u00eb shikoni dhe logjet e t\u00eb gjitha componenteve t\u00eb projektit, kontrolloni se \u00e7far\u00eb jep \u00e7do komponent n\u00ebp\u00ebrmjet HTTP (n\u00ebse, natyrisht, p\u00ebr t\u00eb \u00ebsht\u00eb shpallur burimi ingress).<\/p>\n<p><img decoding=\"async\" alt=\"Mjetet p\u00ebr zhvilluesit e aplikacioneve q\u00eb funksionojn\u00eb n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2019\/08\/931b48a306fcce025e4dd8aa51d01552.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Panelet p\u00ebr Garden<\/i><\/p>\n<p>Ky mjet ka gjithashtu nj\u00eb m\u00ebnyr\u00eb hot-reload, e cila thjesht sinkronizon ndryshimet e skripteve me kontejnerin n\u00eb klaster, duke e p\u00ebrshpejtuar shum\u00eb procesin e depurimit t\u00eb aplikacionit. Garden ka nj\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.garden.io\/\">dokumentacija<\/a><\/noindex> dhe nj\u00eb t\u00eb k\u00ebndsh\u00ebm <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/garden-io\/garden\/tree\/master\/examples\">set t\u00eb mir\u00eb shembujsh<\/a><\/noindex>, q\u00eb lejojn\u00eb t\u00eb filloni shpejt dhe t\u00eb filloni ta p\u00ebrdorni. P\u00ebr m\u00eb tep\u00ebr, vet\u00ebm s\u00eb fundmi kemi publikuar <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\u00ebrfundimi<\/h2>\n<p>\nSigurisht, ky list\u00eb nuk i shfryt\u00ebzon t\u00eb gjitha mjetet p\u00ebr zhvillimin dhe depurimin e aplikacioneve n\u00eb Kubernetes. Ka shum\u00eb utilitare t\u00eb tjera mjaft t\u00eb dobishme dhe praktike, t\u00eb cilat meritojn\u00eb t\u00eb p\u00ebrmenden, n\u00ebse jo p\u00ebr nj\u00eb artikull t\u00eb ve\u00e7ant\u00eb. Tregoni se me \u00e7far\u00eb p\u00ebrdorni, \u00e7far\u00eb probleme keni hasur dhe si i keni zgjidhur!<\/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 \u2014 mjeti yn\u00eb p\u00ebr CI\/CD n\u00eb Kubernetes (p\u00ebrmbledhje dhe video k\u00ebrkese)<\/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 Kubernetes: n\u00eb zhvillimin lokal dhe Telepresence<\/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>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.0.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 \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\/sq\/blog\/administrirovanie\/instrumenty-dlya-razrabotchikov-prilozhenij-zapuskaemyh-v-kubernetes\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.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 \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\/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 rrokullisen n\u00eb Kubernetes | ProHoster","description":"Qasja moderne n\u00eb operim zgjidh shum\u00eb probleme t\u00eb menj\u00ebhershme t\u00eb biznesit. Konteinerit dhe orkestrator\u00ebt leht\u00ebsojn\u00eb zgjerimin e projekteve t\u00eb \u00e7do shkalle, thjeshtojn\u00eb l\u00ebshimin e versioneve t\u00eb reja, i b\u00ebjn\u00eb ato m\u00eb t\u00eb besuesh\u00ebm, por gjithashtu krijojn\u00eb edhe probleme t\u00eb reja p\u00ebr zhvilluesit. Programuesit, n\u00eb radh\u00eb t\u00eb par\u00eb, shqet\u00ebsohen p\u00ebr kodin e tyre: arkitektur\u00ebn, cil\u00ebsin\u00eb, performanc\u00ebn, eleganc\u00ebn, \u2014 dhe jo se si do t\u00eb funksionoj\u00eb ai 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 \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\/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}]}}