{"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\/da\/blog\/administrirovanie\/legkoe-upravlenie-konfiguratsiyami-mikroservisov-s-pomoshhyu-microconfig-io","title":{"rendered":"Let nemmere at administrere mikroservices konfigurationer med microconfig.io","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>En af de st\u00f8rste udfordringer ved udvikling og efterf\u00f8lgende drift af mikrotjenester er en korrekt og omhyggelig ops\u00e6tning af deres instanser. Dette, mener jeg, kan hj\u00e6lpe med et nyt framework <noindex><a rel=\"nofollow\" href=\"http:\/\/microconfig.io\">microconfig.io<\/a><\/noindex>. Det giver en ganske elegant l\u00f8sning p\u00e5 nogle rutineopgaver i ops\u00e6tningen af applikationer. <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nHvis du har mange mikrotjenester, og hver af dem leveres med sin egen konfigurationsfil\/-filer, er der en stor risiko for at lave en fejl i \u00e9n af dem, som uden den rette snilde og logningssystem kan v\u00e6re meget vanskeligt at opdage. Den prim\u00e6re opgave, som frameworket har, er at minimere de duplikerende ops\u00e6tningsparametre for instanser, hvilket dermed reducerer sandsynligheden for at tilf\u00f8je en fejl.<\/p>\n<p>Lad os se p\u00e5 et eksempel. Antag, at der er en simpel applikation med en konfigurationsfil <b>yaml<\/b>. Dette kan v\u00e6re enhver mikrotjeneste skrevet i ethvert sprog. Lad os se, hvordan frameworket kan anvendes p\u00e5 denne tjeneste. <\/p>\n<p>Men f\u00f8rst, for st\u00f8rre bekvemmelighed, skaber vi et tomt projekt i Idea IDE, efter f\u00f8rst at have installeret microconfig.io-plugin. <\/p>\n<p><img decoding=\"async\" alt=\"Let nemmere at administrere mikroservices konfigurationer med microconfig.io\" src=\"\/wp-content\/uploads\/2019\/10\/e2809b31309a80cf6909cf554081e895.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVi konfigurerer plugin'ets opstartskonfiguration; du kan bruge standardkonfigurationen som p\u00e5 sk\u00e6rmbilledet ovenfor.<\/p>\n<p>Vores tjeneste hedder order, s\u00e5 i det nye projekt opretter vi en lignende struktur:<\/p>\n<p><img decoding=\"async\" alt=\"Let nemmere at administrere mikroservices konfigurationer med microconfig.io\" src=\"\/wp-content\/uploads\/2019\/10\/a1edb8aa2e5dae3867cfff78276ebb8d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI mappen med tjenestens navn placerer vi konfigurationsfilen \u2014 <b>application.yaml<\/b>. Alle mikrotjenester k\u00f8rer i et eller andet milj\u00f8, s\u00e5 udover at oprette konfigen for selve tjenesten, skal vi beskrive selve milj\u00f8et: til dette opretter vi en mappe <b>envs<\/b> og tilf\u00f8jer en fil med navnet p\u00e5 vores arbejds milj\u00f8. Dermed vil frameworket skabe konfigurationsfiler for tjenesterne i milj\u00f8et <b>dev<\/b>, da denne parameter er indstillet i plugin'ets indstillinger.<\/p>\n<p>Strukturen af filen <b>dev.yaml<\/b> vil v\u00e6re ret simpel: <\/p>\n<pre><code class=\"plaintext\">mainorder:\n    components:\n         - order<\/code><\/pre>\n<p>\nFrameworket arbejder med konfigurationer, der er samlet i grupper. For vores tjeneste v\u00e6lger vi et navn til gruppen <b>mainorder<\/b>. Frameworket finder hver s\u00e5dan gruppe af applikationer i milj\u00f8filen og genererer konfigurationer for alle af dem, som det finder i de tilsvarende mapper. <\/p>\n<p>I selve tjenestens indstillingsfil <b>order<\/b> vil vi indtil videre angive kun \u00e9t parameter: <\/p>\n<pre><code class=\"plaintext\">spring.application.name: order<\/code><\/pre>\n<p>\nNu starter vi plugin'et, og det vil generere den n\u00f8dvendige konfiguration for vores tjeneste i henhold til den angivne sti i egenskaberne:<\/p>\n<p><img decoding=\"async\" alt=\"Let nemmere at administrere mikroservices konfigurationer med microconfig.io\" src=\"\/wp-content\/uploads\/2019\/10\/9099990c05fd3c6ef0549f231dc84fb5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDu kan <noindex><a rel=\"nofollow\" href=\"https:\/\/microconfig.io\/#\/?id=running-the-config-build\">klare dig uden<\/a><\/noindex> og uden at installere en plugin, blot ved at downloade distributionspakken af rammev\u00e6rket og starte det fra kommandolinjen.<br \/>\nDenne l\u00f8sning er velegnet til brug p\u00e5 en build-server.<\/p>\n<p>Det skal bem\u00e6rkes, at rammev\u00e6rket forst\u00e5r <b>property<\/b> syntaks, alts\u00e5 almindelige property-filer, som kan bruges sammen med <b>yaml<\/b> konfigurationer.<\/p>\n<p>Lad os tilf\u00f8je endnu en tjeneste <b>payment<\/b> og samtidig komplicere den eksisterende.<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: 9999\nspring.application.name: order\ndb.url: 192.168.0.100<\/code><\/pre>\n<p>\nI <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>\nDet st\u00f8rste problem med disse konfigurationer er m\u00e6ngden af copy-paste i tjenesteindstillingerne. Lad os se, hvordan rammev\u00e6rket kan hj\u00e6lpe med at klare dette. Vi starter med den mest indlysende \u2014 eksistensen af konfigurationen <b>eureka<\/b> i beskrivelsen af hver mikrotjeneste. Vi opretter et nyt katalog med en konfigurationsfil og tilf\u00f8jer den nye konfiguration til det:<\/p>\n<p><img decoding=\"async\" alt=\"Let nemmere at administrere mikroservices konfigurationer med microconfig.io\" src=\"\/wp-content\/uploads\/2019\/10\/8b7467a3bd5b22cac5b44c0681ac17fd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOg i hver af vores projekter tilf\u00f8jer vi nu linjen <i>#include eureka<\/i>.<\/p>\n<p>Rammev\u00e6rket finder automatisk konfigurationen eureka og kopierer den til tjenesternes konfigurationsfiler, samtidig med at en separat eureka-konfiguration ikke vil blive oprettet, da vi ikke angiver den i milj\u00f8filen. <b>dev.yaml<\/b>. Tjeneste <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>\nVi kan ogs\u00e5 flytte databaseindstillinger til en separat konfiguration ved at \u00e6ndre importlinjen til <i>#include eureka, oracle<\/i>.<\/p>\n<p>Det skal bem\u00e6rkes, at rammev\u00e6rket registrerer hver \u00e6ndring ved regenerering af konfigurationsfilerne og placerer dem i en s\u00e6rlig fil ved siden af den prim\u00e6re konfigurationsfil. Posten i dens log ser s\u00e5ledes ud: \u201cLagreret 1 property-\u00e6ndringer til <b>order\/diff-application.yaml<\/b>\u201d. Dette muligg\u00f8r hurtig opsporing af \u00e6ndringer i store konfigurationsfiler.<\/p>\n<p>At udtr\u00e6kke f\u00e6lles dele af konfigurationen reducerer m\u00e6ngden af un\u00f8dvendig copy-paste, men tillader ikke fleksibel oprettelse af konfiguration til forskellige milj\u00f8er \u2014 slutpunkterne for vores tjenester er unikke og hardcodede, hvilket er en ulempe. Lad os pr\u00f8ve at fjerne dette.<\/p>\n<p>En god l\u00f8sning vil v\u00e6re at holde alle slutpunkter i en enkelt konfiguration, som de andre kan referere til. Til dette er der indbygget st\u00f8tte for pladsholdere i rammev\u00e6rket. Her er, hvordan konfigurationsfilen vil \u00e6ndre sig <b>eureka<\/b>:<\/p>\n<pre><code class=\"plaintext\"> client:\n   serviceUrl:\n     defaultZone: http:\/\/${endpoints@eurekaip}:6782\/eureka\/<\/code><\/pre>\n<p>\nLad os nu se, hvordan denne pladsholder fungerer. Systemet finder komponenten med navnet <b>endpoints<\/b> og s\u00f8ger i den efter v\u00e6rdien <b>eurekaip<\/b>, hvorefter det inds\u00e6ttes i vores konfiguration. Men hvordan h\u00e5ndterer vi forskellige milj\u00f8er? For dette skaber vi en konfigurationsfil i <b>endpoints<\/b> f\u00f8lgende format <b>application.dev.yaml<\/b>. Rammev\u00e6rket tager selvst\u00e6ndigt beslutning om, til hvilket milj\u00f8 denne konfiguration h\u00f8rer, baseret p\u00e5 filens udvidelse og indl\u00e6ser den:<\/p>\n<p><img decoding=\"async\" alt=\"Let nemmere at administrere mikroservices konfigurationer med microconfig.io\" src=\"\/wp-content\/uploads\/2019\/10\/c46cf097a0efb1d578a126858077a76b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIndholdet af dev-filen:<\/p>\n<pre><code class=\"plaintext\">eurekaip: 192.89.89.111\ndbip: 192.168.0.100<\/code><\/pre>\n<p>\nVi kan oprette en lignende konfiguration for vores tjenesters porte:<\/p>\n<pre><code class=\"plaintext\">server.port: ${ports@order}.<\/code><\/pre>\n<p>\nAlle vigtige indstillinger er samlet \u00e9t sted, hvilket reducerer risikoen for fejl p\u00e5 grund af spredte parametre i konfigurationsfilerne.<\/p>\n<p>Rammev\u00e6rket tilbyder mange f\u00e6rdige pladsholdere; for eksempel kan man f\u00e5 navnet p\u00e5 den mappe, hvor konfigurationsfilen ligger, og tildele det:<\/p>\n<pre><code class=\"1c\">#include eureka, oracle\nserver.port: ${ports@order}\nspring.application.name: ${this@name}<\/code><\/pre>\n<p>\nTakket v\u00e6re dette er det ikke n\u00f8dvendigt at angive applikationens navn i konfigurationen, og det kan ogs\u00e5 flyttes til et f\u00e6lles modul, som i.e. eureka:<\/p>\n<pre><code class=\"plaintext\">client:\n   serviceUrl:\n     defaultZone: http:\/\/${endpoints@eurekaip}:6782\/eureka\/\nspring.application.name: ${this@name}<\/code><\/pre>\n<p>\nKonfigurationsfilen <b>order<\/b> forkortes til \u00e9n linje:<\/p>\n<pre><code class=\"1c\">#include eureka, oracle\nserver.port: ${ports@order}<\/code><\/pre>\n<p>\nHvis en indstilling fra den overordnede konfiguration ikke er n\u00f8dvendig, kan vi angive den i vores konfiguration, og netop denne vil blive anvendt ved generation. Det vil sige, hvis vi af en eller anden grund har brug for et unikt navn til tjenesten order, lader vi blot parameteren v\u00e6re <b>spring.application.name<\/b>.<\/p>\n<p>Lad os antage, at der skal tilf\u00f8jes tilpassede logningsindstillinger til tjenesten, som gemmes i en separat fil, for eksempel <b>logback.xml<\/b>. Vi opretter en s\u00e6rskilt gruppe af indstillinger til den:<\/p>\n<p><img decoding=\"async\" alt=\"Let nemmere at administrere mikroservices konfigurationer med microconfig.io\" src=\"\/wp-content\/uploads\/2019\/10\/103a58dab32ebc57ea1d8457b6bcf3d7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI den grundl\u00e6ggende konfiguration angiver vi til rammev\u00e6rket, hvor vi skal placere den n\u00f8dvendige konfigurationsfil til logning ved hj\u00e6lp af pladsholderen <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> vi konfigurerer standard appendere, der ogs\u00e5 kan indeholde pladsholdere, som rammev\u00e6rket \u00e6ndrer under genereringen af konfigurerede filer, for eksempel:<\/p>\n<pre><code class=\"1c\">logs\/${this@name}.log<\/code><\/pre>\n<p>\nVed at tilf\u00f8je import af logback til konfigurationerne for tjenesterne <b>logback<\/b>, f\u00e5r vi automatisk konfigureret logning for hver tjeneste:<\/p>\n<pre><code class=\"1c\">#include eureka, oracle, logback\nserver.port: ${ports@order}<\/code><\/pre>\n<p>\nDet er tid til at f\u00e5 et n\u00e6rmere indblik i alle de tilg\u00e6ngelige pladsholdere i rammev\u00e6rket:<\/p>\n<p><b>${this@env}<\/b> \u2014 returnerer navnet p\u00e5 det aktuelle milj\u00f8.<br \/>\n<b>${&#8230;@name} <\/b> \u2014 returnerer navnet p\u00e5 komponenten.<br \/>\n<b>${&#8230;@configDir}<\/b> \u2014 returnerer den fulde sti til konfigurationskataloget for komponenten.<br \/>\n<b>${&#8230;@resultDir}<\/b> \u2014 returnerer den fulde sti til destinationskatalogen for komponenten (de modtagne filer vil blive placeret i dette katalog).<br \/>\n<b>${this@configRoot}<\/b> \u2014 returnerer den fulde sti til rodkatalogen for konfigurationslageret.<\/p>\n<p>Systemet giver ogs\u00e5 mulighed for at hente milj\u00f8variabler, for eksempel stien til java:<br \/>\n<b>${env@JAVA_HOME}<\/b><br \/>\nEller, da rammev\u00e6rket er skrevet i <b>JAVA<\/b>, kan vi hente systemvariabler svarende til kaldet <b>System::getProperty<\/b> ved hj\u00e6lp af en konstruktion af denne type:<br \/>\n<b>${system@os.name}<\/b><br \/>\nDet er v\u00e6rd at n\u00e6vne underst\u00f8ttelsen af udvidelsessprog <b>Spring EL<\/b>. I konfigurationen kan lignende udtryk anvendes:<\/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>\nog man kan bruge lokale variabler i konfigurationsfiler med hj\u00e6lp fra udtrykket. <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>\nDermed er rammev\u00e6rket en ret kraftfuld v\u00e6rkt\u00f8j til finjustering og fleksibel tilpasning af konfigurationerne for mikrotjenester. Rammev\u00e6rket udf\u00f8rer perfekt sin hovedopgave \u2014 at fjerne kopiering af indstillinger, konsolidere indstillinger og dermed minimere de mulige fejl, samtidig med at det g\u00f8r det nemt at kombinere konfigurationer og \u00e6ndre dem til forskellige milj\u00f8er.<\/p>\n<p>Hvis du er interesseret i dette rammev\u00e6rk, anbefaler jeg at bes\u00f8ge dets officielle side og l\u00e6se den fulde <noindex><a rel=\"nofollow\" href=\"https:\/\/microconfig.io\">dokumentation<\/a><\/noindex>, eller unders\u00f8ge kildekoden. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/microconfig\/microconfig\">her<\/a><\/noindex>.<br \/>\n<br \/>Kilde: <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.3 - 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\/da\/blog\/administrirovanie\/legkoe-upravlenie-konfiguratsiyami-mikroservisov-s-pomoshhyu-microconfig-io\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\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\/da\/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\udd47Lettere h\u00e5ndtering af konfigurationer for mikrotjenester med microconfig.io | ProHoster","description":"Et af de st\u00f8rste problemer ved udvikling og efterf\u00f8lgende drift af mikrotjenester er korrekt og omhyggelig ops\u00e6tning af deres instanser.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/legkoe-upravlenie-konfiguratsiyami-mikroservisov-s-pomoshhyu-microconfig-io","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/39476","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=39476"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/39476\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/39477"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=39476"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=39476"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=39476"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}