{"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\/sv\/blog\/administrirovanie\/legkoe-upravlenie-konfiguratsiyami-mikroservisov-s-pomoshhyu-microconfig-io","title":{"rendered":"L\u00e4tt hantering av mikroservicekonfigurationer med hj\u00e4lp av microconfig.io","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ett av de st\u00f6rsta problemen vid utveckling och efterf\u00f6ljande drift av mikroservicer \u00e4r korrekt och noggrant inst\u00e4llning av deras instanser. Jag tror att en ny ramverk kan hj\u00e4lpa till med detta. <noindex><a rel=\"nofollow\" href=\"http:\/\/microconfig.io\">microconfig.io<\/a><\/noindex>. Den m\u00f6jligg\u00f6r en ganska elegant l\u00f6sning p\u00e5 vissa rutinuppgifter vid inst\u00e4llning av applikationer. <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nOm du har m\u00e5nga mikroservicer och varje av dem levereras med sin egen konfigurationsfil\/er, \u00e4r risken stor att fel kan intr\u00e4ffa i en av dessa, vilket kan vara sv\u00e5rt att uppt\u00e4cka utan l\u00e4mplig skicklighet och loggningssystem. Den huvudsakliga uppgiften som ramverket st\u00e4ller sig \u00e4r att minimera dubbletter av inst\u00e4llningsparametrar f\u00f6r instanser, vilket minskar risken f\u00f6r att inf\u00f6ra fel.<\/p>\n<p>L\u00e5t oss ta ett exempel. Anta att det finns en enkel applikation med en konfigurationsfil <b>yaml<\/b>. Detta kan vara vilken mikroservice som helst p\u00e5 vilket spr\u00e5k som helst. L\u00e5t oss se hur ramverket kan till\u00e4mpas p\u00e5 denna tj\u00e4nst. <\/p>\n<p>Men f\u00f6rst, f\u00f6r st\u00f6rre bekv\u00e4mlighet, skapa ett tomt projekt i Idea IDE, efter att ha installerat microconfig.io-plugin: <\/p>\n<p><img decoding=\"async\" alt=\"L\u00e4tt hantering av mikroservicekonfigurationer med hj\u00e4lp av microconfig.io\" src=\"\/wp-content\/uploads\/2019\/10\/e2809b31309a80cf6909cf554081e895.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVi konfigurerar uppstartskonfigurationen f\u00f6r plugin, vi kan anv\u00e4nda standardkonfigurationen som p\u00e5 sk\u00e4rmbilden ovan.<\/p>\n<p>V\u00e5r tj\u00e4nst heter order, s\u00e5 i det nya projektet skapar vi en liknande struktur:<\/p>\n<p><img decoding=\"async\" alt=\"L\u00e4tt hantering av mikroservicekonfigurationer med hj\u00e4lp av microconfig.io\" src=\"\/wp-content\/uploads\/2019\/10\/a1edb8aa2e5dae3867cfff78276ebb8d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI mappen med tj\u00e4nstens namn placerar vi konfigurationsfilen \u2014 <b>application.yaml<\/b>. Alla mikroservicer k\u00f6rs i n\u00e5gon milj\u00f6, s\u00e5 f\u00f6rutom att skapa konfigurationsfilen f\u00f6r sj\u00e4lva tj\u00e4nsten, m\u00e5ste vi beskriva sj\u00e4lva milj\u00f6n: f\u00f6r detta skapar vi en mapp <b>envs<\/b> och l\u00e4gger till en fil med namnet p\u00e5 v\u00e5r arbetsmilj\u00f6. P\u00e5 s\u00e5 s\u00e4tt kommer ramverket att skapa konfigurationsfiler f\u00f6r tj\u00e4nster i milj\u00f6n <b>dev<\/b>, eftersom detta parameter har st\u00e4llts in i plugin-inst\u00e4llningarna.<\/p>\n<p>Strukturen p\u00e5 filen <b>dev.yaml<\/b> kommer att vara ganska enkel: <\/p>\n<pre><code class=\"plaintext\">mainorder:\n    components:\n         - order<\/code><\/pre>\n<p>\nRamverket arbetar med konfigurationer som grupperas. F\u00f6r v\u00e5r tj\u00e4nst v\u00e4ljer vi ett namn f\u00f6r gruppen <b>mainorder<\/b>. Ramverket hittar varje s\u00e5dan grupp av applikationer i milj\u00f6filen och skapar konfigurationer f\u00f6r alla av dem som finns i motsvarande mappar. <\/p>\n<p>I sj\u00e4lva tj\u00e4nstens inst\u00e4llningsfil <b>order<\/b> anger vi f\u00f6r tillf\u00e4llet bara en parameter: <\/p>\n<pre><code class=\"plaintext\">spring.application.name: order<\/code><\/pre>\n<p>\nL\u00e5t oss nu starta plugin och den kommer att generera den n\u00f6dv\u00e4ndiga konfigurationen av v\u00e5r tj\u00e4nst enligt den angivna s\u00f6kv\u00e4gen i egenskaperna:<\/p>\n<p><img decoding=\"async\" alt=\"L\u00e4tt hantering av mikroservicekonfigurationer med hj\u00e4lp av microconfig.io\" src=\"\/wp-content\/uploads\/2019\/10\/9099990c05fd3c6ef0549f231dc84fb5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet g\u00e5r <noindex><a rel=\"nofollow\" href=\"https:\/\/microconfig.io\/#\/?id=running-the-config-build\">\u00e4ven utan att installera plugin, bara genom att ladda ner distributionspaketet f\u00f6r ramverket och k\u00f6ra det fr\u00e5n kommandoraden.<\/a><\/noindex> Denna l\u00f6sning passar f\u00f6r anv\u00e4ndning p\u00e5 byggserver.<br \/>\nDet \u00e4r v\u00e4rt att notera att ramverket utm\u00e4rkt f\u00f6rst\u00e5r<\/p>\n<p>property <b>syntaxen, det vill s\u00e4ga vanliga property-filer som kan anv\u00e4ndas tillsammans med<\/b> konfigurationerna. <b>yaml<\/b> Vi l\u00e4gger till ytterligare en tj\u00e4nst<\/p>\n<p>payment <b>och g\u00f6r det samtidigt mer komplicerat.<\/b> 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<br \/>\nI <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: 9998\nspring.application.name: payments\ndb.url: 192.168.0.100<\/code><\/pre>\n<p>\nI <b>och g\u00f6r det samtidigt mer komplicerat.<\/b>:<\/p>\n<pre><code class=\"plaintext\">Det st\u00f6rsta problemet med dessa konfigurationer \u00e4r f\u00f6rekomsten av en stor m\u00e4ngd kopia-och-klistra i konfigurationerna f\u00f6r tj\u00e4nsterna. L\u00e5t oss se hur ramverket kan hj\u00e4lpa oss att bli kvitt detta. Vi b\u00f6rjar med den mest uppenbara \u2014 f\u00f6rekomsten av konfigurationen<\/code><\/pre>\n<p>\neureka <b>i beskrivningen av varje mikrotj\u00e4nst. Vi skapar en ny katalog med en inst\u00e4llningsfil och l\u00e4gger till den nya konfigurationen i denna:<\/b> Och vi l\u00e4gger nu till raden<\/p>\n<p><img decoding=\"async\" alt=\"L\u00e4tt hantering av mikroservicekonfigurationer med hj\u00e4lp av microconfig.io\" src=\"\/wp-content\/uploads\/2019\/10\/8b7467a3bd5b22cac5b44c0681ac17fd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nRamverket kommer automatiskt att hitta eureka-konfigurationen och kopiera den till varje tj\u00e4nsts konfigurationsfiler, medan en separat eureka-konfiguration inte kommer att skapas eftersom vi inte anger den i milj\u00f6filen <i>#include eureka<\/i>.<\/p>\n<p>. Tj\u00e4nsten <b>dev.yaml<\/b>Vi kan ocks\u00e5 flytta databasinst\u00e4llningarna till en separat konfiguration genom att \u00e4ndra import-raden till <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>\nDet \u00e4r v\u00e4rt att notera att varje \u00e4ndring vid regenerering av konfigurationsfiler \u00f6vervakas av ramverket och placeras i en speciell fil bredvid huvudkonfigurationsfilen. Posten i dess logg ser ut s\u00e5 h\u00e4r: \"Stored 1 property changes to <i>#include eureka, oracle<\/i>.<\/p>\n<p>order\/diff-application.yaml <b>\". Detta m\u00f6jligg\u00f6r en snabb uppt\u00e4ckte av \u00e4ndringar i stora konfigurationsfiler.<\/b>Att flytta gemensamma delar av konfigurationen g\u00f6r att vi kan bli av med mycket on\u00f6dig kopia-och-klistra, men m\u00f6jligg\u00f6r inte flexibel skapelse av konfiguration f\u00f6r olika milj\u00f6er \u2014 v\u00e5ra tj\u00e4nsters endpoint \u00e4r unika och h\u00e5rdkodade, vilket \u00e4r d\u00e5ligt. L\u00e5t oss f\u00f6rs\u00f6ka \u00e5tg\u00e4rda detta.<\/p>\n<p>En bra l\u00f6sning skulle vara att h\u00e5lla alla endpoints i en gemensam konfiguration som de andra kan h\u00e4nvisa till. F\u00f6r detta har ramverket st\u00f6d f\u00f6r platsh\u00e5llare. S\u00e5 h\u00e4r kommer konfigurationsfilen att \u00e4ndras<\/p>\n<p>... <b>i beskrivningen av varje mikrotj\u00e4nst. Vi skapar en ny katalog med en inst\u00e4llningsfil och l\u00e4gger till den nya konfigurationen i denna:<\/b>:<\/p>\n<pre><code class=\"plaintext\"> klient:\n   serviceUrl:\n     defaultZone: http:\/\/${endpoints@eurekaip}:6782\/eureka\/<\/code><\/pre>\n<p>\nL\u00e5t oss nu se hur denna platsfyllare fungerar. Systemet hittar komponenten med namnet <b>endpoints<\/b> och letar efter v\u00e4rdet <b>eurekaip<\/b>, varefter det s\u00e4tts in i v\u00e5r konfiguration. Men hur g\u00f6r vi med olika milj\u00f6er? F\u00f6r detta ska vi skapa en inst\u00e4llningsfil av <b>endpoints<\/b> f\u00f6ljande typ <b>application.dev.yaml<\/b>. Ramverket avg\u00f6r sj\u00e4lvmant vilken milj\u00f6 denna konfiguration tillh\u00f6r baserat p\u00e5 filnamnets f\u00f6rl\u00e4ngning och laddar in den:<\/p>\n<p><img decoding=\"async\" alt=\"L\u00e4tt hantering av mikroservicekonfigurationer med hj\u00e4lp av microconfig.io\" src=\"\/wp-content\/uploads\/2019\/10\/c46cf097a0efb1d578a126858077a76b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nInneh\u00e5llet i dev-filen:<\/p>\n<pre><code class=\"plaintext\">eurekaip: 192.89.89.111\ndbip: 192.168.0.100<\/code><\/pre>\n<p>\nEn liknande konfiguration kan vi skapa f\u00f6r portar av v\u00e5ra tj\u00e4nster:<\/p>\n<pre><code class=\"plaintext\">server.port: ${ports@order}.<\/code><\/pre>\n<p>\nAlla viktiga inst\u00e4llningar finns p\u00e5 ett st\u00e4lle, vilket minskar risken f\u00f6r fel p\u00e5 grund av spridda parametrar i konfigurationsfiler.<\/p>\n<p>Ramverket tillhandah\u00e5ller m\u00e5nga redan f\u00e4rdiga platsh\u00e5llare, till exempel kan man f\u00e5 namnet p\u00e5 katalogen d\u00e4r konfigurationsfilen finns och tilldela det:<\/p>\n<pre><code class=\"1c\">#include eureka, oracle\nserver.port: ${ports@order}\nspring.application.name: ${this@name}<\/code><\/pre>\n<p>\nTack vare detta beh\u00f6ver vi inte ange applikationens namn i konfigurationen, utan kan ocks\u00e5 flytta det till en gemensam modul, till exempel till samma eureka:<\/p>\n<pre><code class=\"plaintext\">klient:\n   serviceUrl:\n     defaultZone: http:\/\/${endpoints@eurekaip}:6782\/eureka\/\n spring.application.name: ${this@name}<\/code><\/pre>\n<p>\nKonfigurationsfilen <b>order<\/b> kortas ner till en rad:<\/p>\n<pre><code class=\"1c\">#include eureka, oracle\nserver.port: ${ports@order}<\/code><\/pre>\n<p>\nOm n\u00e5gon inst\u00e4llning fr\u00e5n f\u00f6r\u00e4ldrakonfigurationen inte beh\u00f6vs kan vi ange den i v\u00e5r konfiguration och just den kommer att till\u00e4mpas vid genereringen. S\u00e5 om vi av n\u00e5gon anledning beh\u00f6ver ett unikt namn f\u00f6r tj\u00e4nsten order, l\u00e4mnar vi bara parametern <b>spring.application.name<\/b>.<\/p>\n<p>Anta att vi beh\u00f6ver l\u00e4gga till anpassade loggningsinst\u00e4llningar som lagras i en separat fil, till exempel, <b>logback.xml<\/b>. Vi ska skapa en separat grupp av inst\u00e4llningar f\u00f6r den:<\/p>\n<p><img decoding=\"async\" alt=\"L\u00e4tt hantering av mikroservicekonfigurationer med hj\u00e4lp av microconfig.io\" src=\"\/wp-content\/uploads\/2019\/10\/103a58dab32ebc57ea1d8457b6bcf3d7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI den grundl\u00e4ggande konfigurationen anger vi f\u00f6r ramverket var det ska placera den \u00f6nskade loggningsinst\u00e4llningsfilen med en platsh\u00e5llare <b>@ConfigDir<\/b>:<\/p>\n<pre><code class=\"plaintext\">microconfig.template.logback.fromFile: ${logback@configDir}\/logback.xml<\/code><\/pre>\n<p>\nI filen <b>logback.xml<\/b> konfigurerar vi de standardappen-drar som ocks\u00e5 kan inneh\u00e5lla platsh\u00e5llare, vilka ramverket kommer att \u00e4ndra vid generering av konfigurationerna, till exempel:<\/p>\n<pre><code class=\"1c\">logs\/${this@name}.log<\/code><\/pre>\n<p>\nGenom att l\u00e4gga till import av inst\u00e4llningar f\u00f6r tj\u00e4nster <b>logback<\/b>, f\u00e5r vi automatiskt konfigurerad loggning f\u00f6r varje tj\u00e4nst:<\/p>\n<pre><code class=\"1c\">#include eureka, oracle, logback\nserver.port: ${ports@order}<\/code><\/pre>\n<p>\nDet \u00e4r dags att bli mer bekant med alla tillg\u00e4ngliga platsh\u00e5llare i ramverket:<\/p>\n<p><b>${this@env}<\/b> \u2014 returnerar namnet p\u00e5 den aktuella milj\u00f6n.<br \/>\n<b>${&#8230;@name} <\/b> \u2014 returnerar namnet p\u00e5 komponenten.<br \/>\n<b>${&#8230;@configDir}<\/b> \u2014 returnerar den fullst\u00e4ndiga s\u00f6kv\u00e4gen till konfigurationskatalogen f\u00f6r komponenten.<br \/>\n<b>${&#8230;@resultDir}<\/b> \u2014 returnerar den fullst\u00e4ndiga s\u00f6kv\u00e4gen till destinationkatalogen f\u00f6r komponenten (de erh\u00e5llna filerna kommer att placeras i denna katalog).<br \/>\n<b>${this@configRoot}<\/b> \u2014 returnerar den fullst\u00e4ndiga s\u00f6kv\u00e4gen till rotkatalogen f\u00f6r konfigurationslagret.<\/p>\n<p>Systemet till\u00e5ter \u00e4ven att h\u00e4mta milj\u00f6variabler, till exempel s\u00f6kv\u00e4gen till java:<br \/>\n<b>${env@JAVA_HOME}<\/b><br \/>\nEller, eftersom ramverket \u00e4r skrivet i <b>JAVA<\/b>, kan vi h\u00e4mta systemvariabler p\u00e5 liknande s\u00e4tt som att anropa <b>System::getProperty<\/b> med en konstruktion av detta slag:<br \/>\n<b>${system@os.name}<\/b><br \/>\nDet \u00e4r v\u00e4rt att n\u00e4mna st\u00f6det f\u00f6r utvidgningsspr\u00e5ket <b>Spring EL<\/b>. I konfigurationen kan liknande uttryck anv\u00e4ndas:<\/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>\noch lokala variabler kan anv\u00e4ndas i konfigurationsfiler med uttrycket <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>\nP\u00e5 s\u00e5 s\u00e4tt utg\u00f6r ramverket ett ganska kraftfullt verktyg f\u00f6r fin och flexibel justering av konfigurationerna f\u00f6r mikrotj\u00e4nster. Ramverket utf\u00f6r sin huvuduppgift utm\u00e4rkt \u2014 att eliminera kopiering i inst\u00e4llningarna, konsolidera inst\u00e4llningar och d\u00e4rmed minimera m\u00f6jliga fel, samtidigt som det m\u00f6jligg\u00f6r enkel kombination av konfigurationer och f\u00f6r\u00e4ndringar f\u00f6r olika milj\u00f6er.<\/p>\n<p>Om du \u00e4r intresserad av detta ramverk rekommenderar jag att du bes\u00f6ker dess officiella sida och bekantar dig med hela <noindex><a rel=\"nofollow\" href=\"https:\/\/microconfig.io\">dokumentationen<\/a><\/noindex>, eller gr\u00e4va lite i k\u00e4llkoden <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/microconfig\/microconfig\">). Ett typiskt exempel p\u00e5 anv\u00e4ndning:<\/a><\/noindex>.<br \/>\n<br \/>K\u00e4lla: <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.4 - 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\/sv\/blog\/administrirovanie\/legkoe-upravlenie-konfiguratsiyami-mikroservisov-s-pomoshhyu-microconfig-io\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\/sv\/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\udd47L\u00e4tt hantering av konfigurationer f\u00f6r mikrotj\u00e4nster med hj\u00e4lp av microconfig.io | ProHoster","description":"Ett av de huvudsakliga problemen vid utveckling och efterf\u00f6ljande drift av mikrotj\u00e4nster \u00e4r korrekt och noggrant inst\u00e4llning av deras instanser.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/legkoe-upravlenie-konfiguratsiyami-mikroservisov-s-pomoshhyu-microconfig-io","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","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\/sv\/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\/sv\/wp-json\/wp\/v2\/posts\/39476","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=39476"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/39476\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/39477"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=39476"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=39476"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=39476"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}