{"id":39476,"date":"2019-10-31T22:33:41","date_gmt":"2019-10-31T19:33:41","guid":{"rendered":"https:\/\/prohoster.info\/blog\/legkoe-upravlenie-konfiguratsiyami-mikroservisov-s-pomoshhyu-microconfig-io\/"},"modified":"2019-10-31T22:33:41","modified_gmt":"2019-10-31T19:33:41","slug":"legkoe-upravlenie-konfiguratsiyami-mikroservisov-s-pomoshhyu-microconfig-io","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/legkoe-upravlenie-konfiguratsiyami-mikroservisov-s-pomoshhyu-microconfig-io","title":{"rendered":"Menaxhim i leht\u00eb i konfigurimeve t\u00eb mikrosherbimeve me microconfig.io","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Nj\u00eb nga problemet kryesore gjat\u00eb zhvillimit dhe p\u00ebrve\u00e7 operimit t\u00eb mikrosh\u00ebrbimeve \u00ebsht\u00eb konfigurimi i sakt\u00eb dhe i kujdessh\u00ebm i instancave t\u00eb tyre. K\u00ebtu, sipas mendimit tim, mund t\u00eb ndihmoj\u00eb nj\u00eb framework t\u00eb ri <noindex><a rel=\"nofollow\" href=\"http:\/\/microconfig.io\">microconfig.io<\/a><\/noindex>. Ai lejon t\u00eb zgjidhni n\u00eb m\u00ebnyr\u00eb elegante disa detyra rutin\u00eb t\u00eb konfigurimit t\u00eb aplikacioneve. <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nN\u00ebse keni shum\u00eb mikrosh\u00ebrbime dhe secili prej tyre vjen me skedarin\/ska e tij t\u00eb konfigurimit, at\u00ebher\u00eb ka nj\u00eb probabilitet t\u00eb madh p\u00ebr t\u00eb b\u00ebr\u00eb nj\u00eb gabim n\u00eb nj\u00eb prej tyre, t\u00eb cilin pa p\u00ebrvoj\u00eb dhe sistem regjistrimi mund t\u00eb jet\u00eb shum\u00eb e v\u00ebshtir\u00eb ta kapni. Detyra kryesore q\u00eb ka p\u00ebr q\u00ebllim framework-u \u00ebsht\u00eb t\u00eb minimizoj\u00eb parametrat e p\u00ebrs\u00ebritur t\u00eb konfigurimit t\u00eb instanc\u00ebs, duke reduktuar k\u00ebshtu probabilitetin e shtimit t\u00eb nj\u00eb gabimi.<\/p>\n<p>Le t\u00eb shqyrtojm\u00eb nj\u00eb shembull. Supozoni se ka nj\u00eb aplikacion t\u00eb thjesht\u00eb me nj\u00eb skedar konfigurimi <b>yaml<\/b>. Ky mund t\u00eb jet\u00eb \u00e7do mikrosh\u00ebrbim n\u00eb \u00e7do gjuh\u00eb. Le t\u00eb shohim se si mund t\u00eb aplikohet framework-u n\u00eb k\u00ebt\u00eb sh\u00ebrbim. <\/p>\n<p>Por m\u00eb par\u00eb, p\u00ebr m\u00eb shum\u00eb leht\u00ebsi, le t\u00eb krijojm\u00eb nj\u00eb projekt bosh n\u00eb Idea IDE, duke instaluar paraprakisht plugin-in microconfig.io: <\/p>\n<p><img decoding=\"async\" alt=\"Menaxhim i leht\u00eb i konfigurimeve t\u00eb mikrosherbimeve me microconfig.io\" src=\"\/wp-content\/uploads\/2019\/10\/e2809b31309a80cf6909cf554081e895.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKonfiguroni konfigurimin e nisjes s\u00eb pluginit, mund t\u00eb p\u00ebrdorni konfigurimin e parazgjedhur, si\u00e7 \u00ebsht\u00eb n\u00eb pamjen e sip\u00ebrme.<\/p>\n<p>Sh\u00ebrbimi yn\u00eb quhet order, k\u00ebshtu q\u00eb n\u00eb projektin e ri le t\u00eb krijojm\u00eb nj\u00eb struktur\u00eb t\u00eb till\u00eb:<\/p>\n<p><img decoding=\"async\" alt=\"Menaxhim i leht\u00eb i konfigurimeve t\u00eb mikrosherbimeve me microconfig.io\" src=\"\/wp-content\/uploads\/2019\/10\/a1edb8aa2e5dae3867cfff78276ebb8d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00eb dosjen me emrin e sh\u00ebrbimit vendosim skedarin e konfigurimit \u2014 <b>application.yaml<\/b>. T\u00eb gjith\u00eb mikrosh\u00ebrbimet ekzekutohen n\u00eb nj\u00eb ambient, k\u00ebshtu q\u00eb, p\u00ebrve\u00e7 krijimit t\u00eb konfigut t\u00eb sh\u00ebrbimit vet\u00eb, duhet t\u00eb p\u00ebrshkruajm\u00eb edhe ambientin: p\u00ebr k\u00ebt\u00eb, le t\u00eb krijojm\u00eb nj\u00eb dosje <b>envs<\/b> dhe t\u00eb shtojm\u00eb n\u00eb t\u00eb nj\u00eb skedar me emrin e ambientit ton\u00eb t\u00eb pun\u00ebs. N\u00eb k\u00ebt\u00eb m\u00ebnyr\u00eb, framework-u do t\u00eb krijoj\u00eb skedar\u00ebt e konfigurimit p\u00ebr sh\u00ebrbimet n\u00eb ambientin <b>dev<\/b>, pasi n\u00eb cil\u00ebsimet e pluginit \u00ebsht\u00eb p\u00ebrcaktuar ky parametr.<\/p>\n<p>Struktura e skedarit <b>dev.yaml<\/b> do t\u00eb jet\u00eb mjaft e thjesht\u00eb: <\/p>\n<pre><code class=\"plaintext\">mainorder:\n    components:\n         - order<\/code><\/pre>\n<p>\nFramework-u punon me konfigurimet, t\u00eb cilat jan\u00eb t\u00eb grupuara n\u00eb grupe. P\u00ebr sh\u00ebrbimin ton\u00eb le t\u00eb zgjjedhim nj\u00eb em\u00ebr p\u00ebr grupin <b>mainorder<\/b>. Framework-u gjen \u00e7do grup t\u00eb till\u00eb aplikacionesh n\u00eb skedarin e ambientit dhe krijon konfigurime p\u00ebr t\u00eb gjith\u00eb ato q\u00eb gjen n\u00eb dosjet p\u00ebrkat\u00ebse. <\/p>\n<p>N\u00eb vet\u00eb skedarin e konfigurimit t\u00eb sh\u00ebrbimit <b>order<\/b> le t\u00eb p\u00ebrcaktojm\u00eb p\u00ebr momentin vet\u00ebm nj\u00eb parametr: <\/p>\n<pre><code class=\"plaintext\">spring.application.name: order<\/code><\/pre>\n<p>\nTani le t\u00eb ekzekutojm\u00eb plug-in-in, dhe ai do t\u00eb na gjeneroj\u00eb konfigurimin e nevojsh\u00ebm t\u00eb sh\u00ebrbimit ton\u00eb sipas rrug\u00ebs t\u00eb caktuar n\u00eb pronat:<\/p>\n<p><img decoding=\"async\" alt=\"Menaxhim i leht\u00eb i konfigurimeve t\u00eb mikrosherbimeve me microconfig.io\" src=\"\/wp-content\/uploads\/2019\/10\/9099990c05fd3c6ef0549f231dc84fb5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMund t\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/microconfig.io\/#\/?id=running-the-config-build\">b\u00ebhet<\/a><\/noindex> dhe pa instaluar ndonj\u00eb plugin, thjesht duke shkarkuar distribucionin e korniz\u00ebs dhe duke e nisur at\u00eb nga linja e komand\u00ebs.<br \/>\nKy zgjidhje \u00ebsht\u00eb e p\u00ebrshtatshme p\u00ebr p\u00ebrdorim n\u00eb serverin e nd\u00ebrtimit.<\/p>\n<p>Duhet theksuar se korniza e kupton shk\u00eblqyesh\u00ebm <b>property<\/b> sintaks\u00ebn, dometh\u00ebn\u00eb skedar\u00ebt e zakonsh\u00ebm t\u00eb property, t\u00eb cil\u00ebt mund t\u00eb p\u00ebrdoren s\u00eb bashku me <b>yaml<\/b> konfigurimet.<\/p>\n<p>Shtojm\u00eb nj\u00eb sh\u00ebrbim tjet\u00ebr <b>payment<\/b> dhe e inkurajojm\u00eb nj\u00ebkoh\u00ebsisht at\u00eb ekzistues.<br \/>\nN\u00eb <b>order<\/b>:<\/p>\n<pre><code class=\"plaintext\">eureka:\n instance.preferIpAddress: true\n client:\n   serviceUrl:\n     defaultZone: http:\/\/192.89.89.111:6782\/eureka\/\nserver.port: 9999\nspring.application.name: order\ndb.url: 192.168.0.100<\/code><\/pre>\n<p>\nN\u00eb <b>payment<\/b>:<\/p>\n<pre><code class=\"plaintext\">eureka:\n instance.preferIpAddress: true\n client:\n   serviceUrl:\n     defaultZone: http:\/\/192.89.89.111:6782\/eureka\/\nserver.port: 9998\nspring.application.name: payments\ndb.url: 192.168.0.100<\/code><\/pre>\n<p>\nProblemi kryesor i k\u00ebtyre konfigurimeve \u00ebsht\u00eb prania e nj\u00eb numri t\u00eb madh kopipaste n\u00eb konfigurimet e sh\u00ebrbimeve. Le t\u00eb shohim se si korniza na ndihmon t\u00eb shp\u00ebtojm\u00eb prej saj. T\u00eb fillojm\u00eb me at\u00eb m\u00eb t\u00eb dukshme \u2014 prania e konfigurimit <b>eureka<\/b> n\u00eb p\u00ebrshkrimin e \u00e7do mikrosh\u00ebrbimi. T\u00eb krijojm\u00eb nj\u00eb katalog t\u00eb ri me nj\u00eb skedar konfigurimi dhe t\u00eb shtojm\u00eb n\u00eb t\u00eb nj\u00eb konfigurim t\u00eb ri:<\/p>\n<p><img decoding=\"async\" alt=\"Menaxhim i leht\u00eb i konfigurimeve t\u00eb mikrosherbimeve me microconfig.io\" src=\"\/wp-content\/uploads\/2019\/10\/8b7467a3bd5b22cac5b44c0681ac17fd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDhe n\u00eb \u00e7do nj\u00eb nga projektet tona tani do t\u00eb shtojm\u00eb rreshtin <i>#include eureka<\/i>.<\/p>\n<p>Korniza automatikisht do t\u00eb gjej\u00eb konfigurimin e eureka dhe do ta kopjoj\u00eb at\u00eb n\u00eb skedar\u00ebt konfigurues t\u00eb sh\u00ebrbimeve, duke mos krijuar k\u00ebshtu nj\u00eb konfigurim t\u00eb ve\u00e7ant\u00eb eureka, pasi nuk do ta p\u00ebrcaktojm\u00eb at\u00eb n\u00eb skedarin e mjedisit <b>dev.yaml<\/b>. Sh\u00ebrbimi <b>order<\/b>:<\/p>\n<pre><code class=\"1c\">#include eureka\nserver.port: 9999\nspring.application.name: order\ndb.url: 192.168.0.100<\/code><\/pre>\n<p>\nGjithashtu mund t\u00eb nxjerrim konfigurimet e baz\u00ebs s\u00eb t\u00eb dh\u00ebnave n\u00eb nj\u00eb konfigurim t\u00eb ve\u00e7ant\u00eb, duke e ndryshuar rreshtin e importit n\u00eb <i>#include eureka, oracle<\/i>.<\/p>\n<p>Duhet theksuar se \u00e7do ndryshim gjat\u00eb rip\u00ebrpunimit t\u00eb skedar\u00ebve konfigurues korniza e ndjek dhe e vendos n\u00eb nj\u00eb sked\u00eb t\u00eb ve\u00e7ant\u00eb pran\u00eb skedarit kryesor t\u00eb konfigurimit. Sh\u00ebnimi n\u00eb logun e tij duket k\u00ebshtu: \u201cRuajt\u00ebn 1 ndryshim t\u00eb pron\u00ebs n\u00eb <b>order\/diff-application.yaml<\/b>\u201d. Kjo lejon zbulimin e shpejt\u00eb t\u00eb ndryshimeve n\u00eb skedar\u00ebt e m\u00ebdhenj t\u00eb konfigurimit.<\/p>\n<p>Nxjerrja e pjes\u00ebve t\u00eb zakonshme t\u00eb konfigurimit lejon shp\u00ebtimin nga shum\u00eb kopipaste t\u00eb panevojshme, por nuk lejon krijimin fleksib\u00ebl t\u00eb konfigurimeve p\u00ebr mjedise t\u00eb ndryshme \u2014 endpointet e sh\u00ebrbimeve tona jan\u00eb unike dhe t\u00eb ngurt\u00eb, kjo \u00ebsht\u00eb e keqe. Le t\u00eb provojm\u00eb ta heqim k\u00ebt\u00eb.<\/p>\n<p>Nj\u00eb zgjidhje e mir\u00eb do t\u00eb ishte t\u00eb mbaheshin t\u00eb gjitha endpointet n\u00eb nj\u00eb konfigurim t\u00eb vet\u00ebm, n\u00eb t\u00eb cilin mund t\u00eb referohen t\u00eb tjer\u00ebt. P\u00ebr k\u00ebt\u00eb, korniza ka integruar mb\u00ebshtetje p\u00ebr placeholders. K\u00ebtu si do t\u00eb ndryshoj\u00eb skedari i konfigurimit <b>eureka<\/b>:<\/p>\n<pre><code class=\"plaintext\"> client:\n   serviceUrl:\n     defaultZone: http:\/\/${endpoints@eurekaip}:6782\/eureka\/<\/code><\/pre>\n<p>\nTani le t\u00eb shikojm\u00eb se si funksionon ky placeholder. Sistemi gjen komponentin me emrin <b>endpoints<\/b> dhe k\u00ebrkon aty vler\u00ebn <b>eurekaip<\/b>, pasi ai fut n\u00eb konfigurimin ton\u00eb. Por si duhet t\u00eb veprojm\u00eb me mjediset e ndryshme? P\u00ebr k\u00ebt\u00eb do t\u00eb krijojm\u00eb nj\u00eb skedar konfigurimi n\u00eb <b>endpoints<\/b> formatin e m\u00ebposht\u00ebm <b>application.dev.yaml<\/b>. \u00c7adra vet\u00eb, sipas zgjerimit t\u00eb skedarit, merr vendim se p\u00ebr cilin mjedis \u00ebsht\u00eb kjo konfigurim dhe e ngarkon at\u00eb:<\/p>\n<p><img decoding=\"async\" alt=\"Menaxhim i leht\u00eb i konfigurimeve t\u00eb mikrosherbimeve me microconfig.io\" src=\"\/wp-content\/uploads\/2019\/10\/c46cf097a0efb1d578a126858077a76b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nP\u00ebrmbajtja e skedarit dev:<\/p>\n<pre><code class=\"plaintext\">eurekaip: 192.89.89.111\ndbip: 192.168.0.100<\/code><\/pre>\n<p>\nNe mund t\u00eb krijojm\u00eb nj\u00eb konfigurim t\u00eb till\u00eb edhe p\u00ebr portat e sh\u00ebrbimeve tona:<\/p>\n<pre><code class=\"plaintext\">server.port: ${ports@order}.<\/code><\/pre>\n<p>\nT\u00eb gjitha cil\u00ebsimet e r\u00ebnd\u00ebsishme jan\u00eb n\u00eb nj\u00eb vend, duke e zvog\u00ebluar k\u00ebshtu mund\u00ebsin\u00eb e gabimeve p\u00ebr shkak t\u00eb parametrave t\u00eb shp\u00ebrndar\u00eb n\u00eb skedar\u00ebt e konfigurimit.<\/p>\n<p>\u00c7adra ofron shum\u00eb plaseholder t\u00eb gatshme, p\u00ebr shembull, mund t\u00eb merrni emrin e direktoris\u00eb ku ndodhet skedari i konfigurimit dhe ta caktoni:<\/p>\n<pre><code class=\"1c\">#include eureka, oracle\nserver.port: ${ports@order}\nspring.application.name: ${this@name}<\/code><\/pre>\n<p>\nK\u00ebshtu, nuk \u00ebsht\u00eb e nevojshme t\u00eb caktoni emrin e aplikacionit n\u00eb konfigurim dhe gjithashtu mund ta nxirrni at\u00eb n\u00eb nj\u00eb modul t\u00eb p\u00ebrbashk\u00ebt, p\u00ebr shembull, n\u00eb t\u00eb nj\u00ebjtin eureka:<\/p>\n<pre><code class=\"plaintext\">client:\n   serviceUrl:\n     defaultZone: http:\/\/${endpoints@eurekaip}:6782\/eureka\/\n spring.application.name: ${this@name}<\/code><\/pre>\n<p>\nSkedari i konfigurimit <b>order<\/b> do t\u00eb shkurtuar n\u00eb nj\u00eb rresht:<\/p>\n<pre><code class=\"1c\">#include eureka, oracle\nserver.port: ${ports@order}<\/code><\/pre>\n<p>\nN\u00eb rastin kur ndonj\u00eb cil\u00ebsim nga konfigurimi i prindit nuk na nevojitet, mund ta caktojm\u00eb at\u00eb n\u00eb konfigurimin ton\u00eb dhe ajo do t\u00eb zbatohet gjat\u00eb gjenerimit. Pra, n\u00ebse p\u00ebr ndonj\u00eb arsye na nevojitet nj\u00eb em\u00ebr unik p\u00ebr sh\u00ebrbimin order, thjesht do ta l\u00ebm\u00eb parametrin <b>spring.application.name<\/b>.<\/p>\n<p>Le t\u00eb themi, n\u00eb sh\u00ebrbim \u00ebsht\u00eb e nevojshme t\u00eb shtoni cil\u00ebsime t\u00eb personalizuara t\u00eb regjistrimit, t\u00eb cilat ruajtohen n\u00eb nj\u00eb skedar t\u00eb ve\u00e7ant\u00eb, p\u00ebr shembull, <b>logback.xml<\/b>. T\u00eb krijojm\u00eb nj\u00eb grup t\u00eb ve\u00e7ant\u00eb konfigurimesh p\u00ebr t\u00eb:<\/p>\n<p><img decoding=\"async\" alt=\"Menaxhim i leht\u00eb i konfigurimeve t\u00eb mikrosherbimeve me microconfig.io\" src=\"\/wp-content\/uploads\/2019\/10\/103a58dab32ebc57ea1d8457b6bcf3d7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00eb konfigurimin baz\u00eb do t\u00eb caktojm\u00eb \u00e7adr\u00ebs se ku t\u00eb vendos\u00eb skedarin ton\u00eb t\u00eb nevojsh\u00ebm t\u00eb konfigurimit t\u00eb regjistrimit me ndihm\u00ebn e plaseholderit <b>@ConfigDir<\/b>:<\/p>\n<pre><code class=\"plaintext\">microconfig.template.logback.fromFile: ${logback@configDir}\/logback.xml<\/code><\/pre>\n<p>\nN\u00eb skedar <b>logback.xml<\/b> konfigurojm\u00eb appenders standarde, t\u00eb cilat gjithashtu mund t\u00eb p\u00ebrmbajn\u00eb plaseholder, t\u00eb cilat \u00e7adra do t'i ndryshoj\u00eb gjat\u00eb gjenerimit t\u00eb konfigurlimeve, p\u00ebr shembull:<\/p>\n<pre><code class=\"1c\">logs\/${this@name}.log<\/code><\/pre>\n<p>\nDuke shtuar n\u00eb konfigurimet e sh\u00ebrbimeve importin <b>logback<\/b>, automatikisht marrim regjistrim t\u00eb konfiguruar p\u00ebr \u00e7do sh\u00ebrbim:<\/p>\n<pre><code class=\"1c\">#include eureka, oracle, logback\nserver.port: ${ports@order}<\/code><\/pre>\n<p>\nKa ardhur koha p\u00ebr t'u njohur m\u00eb n\u00eb detaje me t\u00eb gjitha plaseholderat e disponuesh\u00ebm t\u00eb \u00e7adr\u00ebs:<\/p>\n<p><b>${this@env}<\/b> \u2014 kthehet emri i mjedisit aktual.<br \/>\n<b>${\u2026@name} <\/b> \u2014 kthehet emri i komponentit.<br \/>\n<b>${\u2026@configDir}<\/b> \u2014 kthen rrug\u00ebn e plot\u00eb n\u00eb katalogun e komponentit config.<br \/>\n<b>${\u2026@resultDir}<\/b> kthen jep rrug\u00ebn e plot\u00eb p\u00ebr katalogun e destinacionit t\u00eb komponentit (katalogu ku do t\u00eb vendosen skedar\u00ebt e pranuar).<br \/>\n<b>${this@configRoot}<\/b> kthen rrug\u00ebn e plot\u00eb p\u00ebr katalogun e rr\u00ebnj\u00ebs s\u00eb depozit\u00ebs s\u00eb konfigurimeve.<\/p>\n<p>Gjithashtu, sistemi lejon marrjen e variablave t\u00eb mjedisit, p\u00ebr shembull rruga n\u00eb java:<br \/>\n<b>${env@JAVA_HOME}<\/b><br \/>\nOse, pasi struktura \u00ebsht\u00eb shkruar n\u00eb <b>JAVA<\/b>, mund t\u00eb marrim variablat sistemor\u00eb t\u00eb ngjashme me thirrjen <b>System::getProperty<\/b> n\u00ebp\u00ebrmjet nj\u00eb nd\u00ebrtese t\u00eb till\u00eb:<br \/>\n<b>${system@os.name}<\/b><br \/>\nDuhet p\u00ebrmendur mb\u00ebshtetja p\u00ebr gjuh\u00ebn e zgjerimeve <b>Spring EL<\/b>. N\u00eb konfigurim p\u00ebrdoren shprehje t\u00eb ngjashme:<\/p>\n<pre><code class=\"1c\">connection.timeoutInMs: #{5 * 60 * 1000}\ndatasource.maximum-pool-size: #{${this@datasource.minimum-pool-size} + 10} <\/code><\/pre>\n<p>\ndhe mund t\u00eb p\u00ebrdoren variabla lokale n\u00eb skedar\u00ebt e konfigurimit p\u00ebrmes shprehjes <b>#var<\/b>:<\/p>\n<pre><code class=\"1c\">#var feedRoot: ${system@user.home}\/feed\nfolder:\n root: ${this@feedRoot}\n success: ${this@feedRoot}\/archive\n error: ${this@feedRoot}\/error<\/code><\/pre>\n<p>\nK\u00ebshtu, struktura paraqet nj\u00eb instrument t\u00eb fuqish\u00ebm p\u00ebr konfigurimin e holl\u00ebsish\u00ebm dhe fleksib\u00ebl t\u00eb mikrosh\u00ebrbimeve. Struktura e realizon mjaft mir\u00eb detyr\u00ebn e saj kryesore \u2014 eliminimin e kopjeve n\u00eb konfigurime, bashkimin e konfigurimeve dhe si pasoj\u00eb minimizimin e mund\u00ebsive p\u00ebr gabime, nd\u00ebrkoh\u00eb q\u00eb lejon leht\u00ebsisht kombinimin e konfigurimeve dhe ndryshimin p\u00ebr mjedise t\u00eb ndryshme.<\/p>\n<p>N\u00ebse jeni t\u00eb interesuar p\u00ebr k\u00ebt\u00eb struktur\u00eb, rekomandoj t\u00eb vizitoni faqen e saj zyrtare dhe t\u00eb njiheni me t\u00eb gjith\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/microconfig.io\">dokumentacionin<\/a><\/noindex>, ose t\u00eb hulumtoni n\u00eb kodin burimor <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/microconfig\/microconfig\">k\u00ebtu<\/a><\/noindex>.<br \/>\n<br \/>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/473078\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0433\u0440\u0430\u043c\u043e\u0442\u043d\u0430\u044f \u0438 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0438\u0445 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u0432. \u0412 \u044d\u0442\u043e\u043c, \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043c\u043e\u0447\u044c \u043d\u043e\u0432\u044b\u0439 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a microconfig.io. \u041e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0443\u0442\u0438\u043d\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043c\u043d\u043e\u0433\u043e \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043d\u0438\u0445 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u0444\u0430\u0439\u043b\u043e\u043c\/\u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a, \u0442\u043e \u0432\u0435\u043b\u0438\u043a\u0430 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":39477,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-39476","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.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0433\u0440\u0430\u043c\u043e\u0442\u043d\u0430\u044f \u0438 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0438\u0445 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\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\/legkoe-upravlenie-konfiguratsiyami-mikroservisov-s-pomoshhyu-microconfig-io\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.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\u041b\u0435\u0433\u043a\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u043c\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e microconfig.io | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0433\u0440\u0430\u043c\u043e\u0442\u043d\u0430\u044f \u0438 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0438\u0445 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u0432.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/legkoe-upravlenie-konfiguratsiyami-mikroservisov-s-pomoshhyu-microconfig-io\" \/>\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:33:41+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:33:41+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\udd47Menaxhimi i leht\u00eb i konfigurimeve t\u00eb mikrosherbimeve me microconfig.io | ProHoster","description":"Nj\u00eb nga problemet kryesore gjat\u00eb zhvillimit dhe operimit t\u00eb m\u00ebpassh\u00ebm t\u00eb mikrosherbimeve \u00ebsht\u00eb konfigurimi i sakt\u00eb dhe i kujdessh\u00ebm i instancave t\u00eb tyre.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/legkoe-upravlenie-konfiguratsiyami-mikroservisov-s-pomoshhyu-microconfig-io","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\u041b\u0435\u0433\u043a\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u043c\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e microconfig.io | ProHoster","og:description":"\u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0433\u0440\u0430\u043c\u043e\u0442\u043d\u0430\u044f \u0438 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0438\u0445 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u0432.","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/legkoe-upravlenie-konfiguratsiyami-mikroservisov-s-pomoshhyu-microconfig-io","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:33:41+00:00","article:modified_time":"2019-10-31T19:33:41+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"39476","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-24 02:05:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 13:48:28","updated":"2026-01-24 02:05:19","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\/39476","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=39476"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/39476\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/39477"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=39476"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=39476"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=39476"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}