{"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\/fr\/blog\/administrirovanie\/legkoe-upravlenie-konfiguratsiyami-mikroservisov-s-pomoshhyu-microconfig-io","title":{"rendered":"Gestion facile des configurations de microservices avec microconfig.io","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>L'un des principaux probl\u00e8mes lors du d\u00e9veloppement et de l'exploitation ult\u00e9rieure des microservices est la configuration correcte et soign\u00e9e de leurs instances. \u00c0 mon avis, un nouveau framework peut aider \u00e0 ce sujet. <noindex><a rel=\"nofollow\" href=\"http:\/\/microconfig.io\">microconfig.io<\/a><\/noindex>. Il permet de r\u00e9soudre de mani\u00e8re assez \u00e9l\u00e9gante certaines t\u00e2ches routini\u00e8res de configuration des applications. <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nSi vous avez beaucoup de microservices, et que chacun d'eux est livr\u00e9 avec son fichier(s) de configuration, il est tr\u00e8s probable qu'une erreur soit commise dans l'un d'eux, une erreur qui peut \u00eatre difficile \u00e0 d\u00e9tecter sans une certaine exp\u00e9rience et un syst\u00e8me de journalisation. La principale t\u00e2che que se fixe le framework est de minimiser les param\u00e8tres de configuration d'instance en double, r\u00e9duisant ainsi le risque d'erreurs.<\/p>\n<p>Prenons un exemple. Supposons qu'il existe une application simple avec un fichier de configuration <b>yaml<\/b>. Cela peut \u00eatre n'importe quel microservice dans n'importe quel langage. Voyons comment le framework peut \u00eatre appliqu\u00e9 \u00e0 ce service. <\/p>\n<p>Mais avant tout, pour plus de commodit\u00e9, cr\u00e9ons un projet vide dans l'IDE Idea, apr\u00e8s avoir install\u00e9 le plugin microconfig.io : <\/p>\n<p><img decoding=\"async\" alt=\"Gestion facile des configurations de microservices avec microconfig.io\" src=\"\/wp-content\/uploads\/2019\/10\/e2809b31309a80cf6909cf554081e895.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nConfigurons la configuration de lancement du plugin, on peut utiliser la configuration par d\u00e9faut, comme sur la capture d'\u00e9cran ci-dessus.<\/p>\n<p>Notre service s'appelle order, alors dans le nouveau projet, cr\u00e9ons une structure similaire :<\/p>\n<p><img decoding=\"async\" alt=\"Gestion facile des configurations de microservices avec microconfig.io\" src=\"\/wp-content\/uploads\/2019\/10\/a1edb8aa2e5dae3867cfff78276ebb8d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDans le dossier avec le nom du service, pla\u00e7ons le fichier de configuration \u2014 <b>application.yaml<\/b>. Tous les microservices s'ex\u00e9cutent dans un certain environnement, donc, en plus de cr\u00e9er la configuration du service lui-m\u00eame, il est n\u00e9cessaire de d\u00e9crire l'environnement lui-m\u00eame : pour cela, cr\u00e9ons un dossier <b>envs<\/b> et ajoutons-y un fichier avec le nom de notre environnement de travail. Ainsi, le framework cr\u00e9era des fichiers de configuration pour les services dans l'environnement <b>dev<\/b>, car dans les param\u00e8tres du plugin, ce param\u00e8tre est exactement celui qui est d\u00e9fini.<\/p>\n<p>Structure du fichier <b>dev.yaml<\/b> sera assez simple : <\/p>\n<pre><code class=\"plaintext\">mainorder:\n    components:\n         - order<\/code><\/pre>\n<p>\nLe framework fonctionne avec des configurations qui sont regroup\u00e9es. Pour notre service, choisissons un nom pour le groupe <b>mainorder<\/b>. Le framework trouve chaque groupe d'applications dans le fichier d'environnement et cr\u00e9e des configurations pour toutes celles-ci, qu'il trouve dans les dossiers respectifs. <\/p>\n<p>Dans le fichier de configuration du service <b>order<\/b> nous allons pour l'instant indiquer seulement un param\u00e8tre : <\/p>\n<pre><code class=\"plaintext\">spring.application.name: order<\/code><\/pre>\n<p>\nMaintenant, lan\u00e7ons le plugin, et il nous g\u00e9n\u00e9rera la configuration requise de notre service selon le chemin sp\u00e9cifi\u00e9 dans les propri\u00e9t\u00e9s :<\/p>\n<p><img decoding=\"async\" alt=\"Gestion facile des configurations de microservices avec microconfig.io\" src=\"\/wp-content\/uploads\/2019\/10\/9099990c05fd3c6ef0549f231dc84fb5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOn peut <noindex><a rel=\"nofollow\" href=\"https:\/\/microconfig.io\/#\/?id=running-the-config-build\">s'en passer<\/a><\/noindex> et sans installation de plugin, simplement en t\u00e9l\u00e9chargeant la distribution du framework et en l'ex\u00e9cutant \u00e0 partir de la ligne de commande.<br \/>\nCette solution est adapt\u00e9e \u00e0 une utilisation sur un serveur de compilation.<\/p>\n<p>Il est \u00e0 noter que le framework comprend parfaitement <b>property<\/b> la syntaxe, c'est-\u00e0-dire les fichiers property ordinaires qui peuvent \u00eatre utilis\u00e9s ensemble dans <b>yaml<\/b> les configurations.<\/p>\n<p>Ajoutons un autre service <b>payment<\/b> et compliquons simultan\u00e9ment l'existant.<br \/>\nDans <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>\nDans <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>\nLe principal probl\u00e8me de ces configurations est la pr\u00e9sence d'un grand nombre de copi\u00e9s-coll\u00e9s dans les param\u00e8tres des services. Voyons comment le framework peut aider \u00e0 s'en d\u00e9barrasser. Commen\u00e7ons par le plus \u00e9vident \u2014 la pr\u00e9sence de la configuration <b>eureka<\/b> dans la description de chaque microservice. Cr\u00e9ons un nouveau r\u00e9pertoire avec un fichier de param\u00e8tres et ajoutons-y une nouvelle configuration :<\/p>\n<p><img decoding=\"async\" alt=\"Gestion facile des configurations de microservices avec microconfig.io\" src=\"\/wp-content\/uploads\/2019\/10\/8b7467a3bd5b22cac5b44c0681ac17fd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEt dans chacun de nos projets, ajoutons maintenant la ligne <i>#include eureka<\/i>.<\/p>\n<p>Le framework trouvera automatiquement la configuration eureka et la copiera dans les fichiers de configuration des services, sans cr\u00e9er de configuration eureka distincte, car nous ne l'indiquerons pas dans le fichier d'environnement <b>dev.yaml<\/b>. Service <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>\nNous pouvons \u00e9galement extraire les param\u00e8tres de la base de donn\u00e9es dans une configuration distincte, en modifiant la ligne d'importation en <i>#include eureka, oracle<\/i>.<\/p>\n<p>Il convient de noter que chaque changement lors de la r\u00e9g\u00e9n\u00e9ration des fichiers de configuration est suivi par le framework et enregistr\u00e9 dans un fichier sp\u00e9cial \u00e0 c\u00f4t\u00e9 du fichier de configuration principal. L'entr\u00e9e dans son journal ressemble \u00e0 ceci : \u00ab Stock\u00e9 1 changement de propri\u00e9t\u00e9 \u00e0 <b>order\/diff-application.yaml<\/b>\u00bb. Cela permet de rapidement d\u00e9tecter les changements dans de grands fichiers de configuration.<\/p>\n<p>L'extraction des parties communes de la configuration permet de se d\u00e9barrasser de nombreux copi\u00e9s-coll\u00e9s inutiles, mais ne permet pas de cr\u00e9er de mani\u00e8re flexible des configurations pour diff\u00e9rents environnements \u2014 les points de terminaison de nos services sont uniques et hardcod\u00e9s, ce qui est probl\u00e9matique. Essayons de l'\u00e9liminer.<\/p>\n<p>Une bonne solution serait de conserver tous les points de terminaison dans une seule configuration, \u00e0 laquelle les autres pourraient faire r\u00e9f\u00e9rence. Pour cela, le framework int\u00e8gre la prise en charge des espaces r\u00e9serv\u00e9s. Voici comment le fichier de configuration <b>eureka<\/b>:<\/p>\n<pre><code class=\"plaintext\"> client:\n   serviceUrl:\n     defaultZone: http:\/\/${endpoints@eurekaip}:6782\/eureka\/<\/code><\/pre>\n<p>\nMaintenant, voyons comment fonctionne cet espace r\u00e9serv\u00e9. Le syst\u00e8me trouve le composant nomm\u00e9 <b>endpoints<\/b> et y cherche la valeur <b>eurekaip<\/b>, puis il l'int\u00e8gre dans notre configuration. Mais qu'en est-il des diff\u00e9rents environnements ? Pour cela, cr\u00e9ons un fichier de configuration dans <b>endpoints<\/b> le format suivant <b>application.dev.yaml<\/b>. Le framework, en fonction de l'extension du fichier, d\u00e9termine \u00e0 quel environnement cette configuration appartient et la charge :<\/p>\n<p><img decoding=\"async\" alt=\"Gestion facile des configurations de microservices avec microconfig.io\" src=\"\/wp-content\/uploads\/2019\/10\/c46cf097a0efb1d578a126858077a76b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLe contenu du fichier dev :<\/p>\n<pre><code class=\"plaintext\">eurekaip: 192.89.89.111\ndbip: 192.168.0.100<\/code><\/pre>\n<p>\nNous pouvons \u00e9galement cr\u00e9er une configuration similaire pour les ports de nos services :<\/p>\n<pre><code class=\"plaintext\">server.port: ${ports@order}.<\/code><\/pre>\n<p>\nTous les param\u00e8tres importants se trouvent \u00e0 un seul endroit, r\u00e9duisant ainsi le risque d'erreur d\u00fb \u00e0 des param\u00e8tres dispers\u00e9s dans plusieurs fichiers de configuration.<\/p>\n<p>Le framework fournit de nombreux placeholders d\u00e9j\u00e0 pr\u00eats, par exemple, il est possible d'obtenir le nom du r\u00e9pertoire dans lequel se trouve le fichier de configuration et de l'assigner :<\/p>\n<pre><code class=\"1c\">#include eureka, oracle\nserver.port: ${ports@order}\nspring.application.name: ${this@name}<\/code><\/pre>\n<p>\nGr\u00e2ce \u00e0 cela, il n'est plus n\u00e9cessaire de sp\u00e9cifier le nom de l'application dans la configuration, et il peut \u00e9galement \u00eatre d\u00e9plac\u00e9 dans un module commun, par exemple, dans le m\u00eame 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>\nLe fichier de configuration <b>order<\/b> sera r\u00e9duit \u00e0 une seule ligne :<\/p>\n<pre><code class=\"1c\">#include eureka, oracle\nserver.port: ${ports@order}<\/code><\/pre>\n<p>\nDans le cas o\u00f9 un param\u00e8tre de la configuration parent ne serait pas n\u00e9cessaire, nous pouvons l'indiquer dans notre configuration et c'est celui-ci qui sera appliqu\u00e9 lors de la g\u00e9n\u00e9ration. Cela signifie que si pour une raison quelconque nous avons besoin d'un nom unique pour le service order, il suffit de laisser le param\u00e8tre <b>spring.application.name<\/b>.<\/p>\n<p>Supposons qu'un service doive ajouter des param\u00e8tres de journalisation personnalis\u00e9s, qui sont stock\u00e9s dans un fichier s\u00e9par\u00e9, par exemple, <b>logback.xml<\/b>. Cr\u00e9ons un groupe de param\u00e8tres distinct pour cela :<\/p>\n<p><img decoding=\"async\" alt=\"Gestion facile des configurations de microservices avec microconfig.io\" src=\"\/wp-content\/uploads\/2019\/10\/103a58dab32ebc57ea1d8457b6bcf3d7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDans la configuration de base, nous indiquerons au framework o\u00f9 placer le fichier de param\u00e8tres de journalisation requis \u00e0 l'aide du placeholder <b>@ConfigDir<\/b>:<\/p>\n<pre><code class=\"plaintext\">microconfig.template.logback.fromFile: ${logback@configDir}\/logback.xml<\/code><\/pre>\n<p>\nDans le fichier <b>logback.xml<\/b> nous configurons les appenders standards, qui peuvent \u00e9galement contenir des placeholders que le framework modifiera lors de la g\u00e9n\u00e9ration des configs, par exemple :<\/p>\n<pre><code class=\"1c\">logs\/${this@name}.log<\/code><\/pre>\n<p>\nEn ajoutant dans la configuration des services l'import <b>logback<\/b>, nous obtenons automatiquement une journalisation configur\u00e9e pour chaque service :<\/p>\n<pre><code class=\"1c\">#include eureka, oracle, logback\nserver.port: ${ports@order}<\/code><\/pre>\n<p>\nIl est temps de se familiariser plus en d\u00e9tail avec tous les placeholders disponibles du framework :<\/p>\n<p><b>${this@env}<\/b> \u2014 renvoie le nom de l'environnement actuel.<br \/>\n<b>${&#8230;@name} <\/b> \u2014 renvoie le nom du composant.<br \/>\n<b>${&#8230;@configDir}<\/b> \u2014 renvoie le chemin complet vers le r\u00e9pertoire de configuration du composant.<br \/>\n<b>${&#8230;@resultDir}<\/b> \u2014 renvoie le chemin complet vers le r\u00e9pertoire de destination du composant (les fichiers obtenus seront plac\u00e9s dans ce r\u00e9pertoire).<br \/>\n<b>${this@configRoot}<\/b> \u2014 renvoie le chemin complet vers le r\u00e9pertoire racine du stockage des configurations.<\/p>\n<p>De plus, le syst\u00e8me permet d'obtenir des variables d'environnement, par exemple le chemin vers java :<br \/>\n<b>${env@JAVA_HOME}<\/b><br \/>\nOu, puisque le framework est \u00e9crit en <b>JAVA<\/b>, nous pouvons obtenir des variables syst\u00e8me similaires \u00e0 l'appel <b>System::getProperty<\/b> avec une construction de ce type :<br \/>\n<b>${system@os.name}<\/b><br \/>\nIl convient de mentionner le support du langage d'expression <b>Spring EL<\/b>. Dans la configuration, des expressions similaires peuvent \u00eatre appliqu\u00e9es :<\/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>\net il est possible d'utiliser des variables locales dans les fichiers de configuration \u00e0 l'aide de l'expression <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>\nAinsi, le framework constitue un outil puissant pour un r\u00e9glage fin et flexible des configurations des microservices. Le framework remplit parfaitement sa mission principale : \u00e9liminer le copier-coller dans les r\u00e9glages, consolider les param\u00e8tres et, par cons\u00e9quent, minimiser les erreurs potentielles, tout en permettant de combiner facilement les configurations et de les modifier pour diff\u00e9rents environnements.<\/p>\n<p>Si ce framework vous int\u00e9resse, je vous recommande de visiter sa page officielle et de consulter l'int\u00e9gralit\u00e9 <noindex><a rel=\"nofollow\" href=\"https:\/\/microconfig.io\">de la documentation<\/a><\/noindex>, ou d'explorer le code source <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/microconfig\/microconfig\">ici<\/a><\/noindex>.<br \/>\n<br \/>Source : <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.2 - 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\/fr\/blog\/administrirovanie\/legkoe-upravlenie-konfiguratsiyami-mikroservisov-s-pomoshhyu-microconfig-io\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\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\/fr\/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\udd47Gestion simplifi\u00e9e des configurations des microservices avec microconfig.io | ProHoster","description":"L'un des principaux probl\u00e8mes lors du d\u00e9veloppement et de l'exploitation ult\u00e9rieure des microservices est le r\u00e9glage correct et soign\u00e9 de leurs instances.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/legkoe-upravlenie-konfiguratsiyami-mikroservisov-s-pomoshhyu-microconfig-io","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","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\/fr\/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\/fr\/wp-json\/wp\/v2\/posts\/39476","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=39476"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/39476\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/39477"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=39476"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=39476"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=39476"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}