【问题标题】:Spring Cloud local vs remote Config Server configurationSpring Cloud 本地与远程 Config Server 配置
【发布时间】:2019-08-11 06:38:49
【问题描述】:

我知道实现远程配置管理系统的优势,特别是 Spring Cloud 配置服务器的优势。来自Spring Microservices in Action书,第2章:

当一个微服务启动时,任何特定于环境的信息或应用配置信息数据都应该是

  • 作为环境变量传入启动服务
  • 从集中的配置管理存储库中读取

据我了解,当您使用Config First Bootstrap 方法时,应该在任何其他微服务中的唯一配置与配置服务器相关(例如,在bootstrap.yml 中指定spring.application.name 并传递@987654329 @ 和 spring.profiles.active 作为环境变量)。根本不需要application.yml

所以,看到有人问(hereherehere)如何在本地覆盖远程配置并阅读 Spring Cloud 文档中的 Overriding the Values of Remote Properties 部分后,我有点困惑:

通过引导上下文添加到您的应用程序的属性源通常是“远程的”(例如来自配置服务器),并且默认情况下它们不能在本地覆盖,除非在命令行上。如果您想允许您的应用程序使用自己的系统属性或配置文件覆盖远程属性,则远程属性源必须通过设置spring.cloud.config.allowOverride=true 授予它权限(在本地设置此设置不起作用)。 (...)

Spring Cloud 中是否存在设置部分本地配置甚至覆盖远程配置的有效案例?

【问题讨论】:

    标签: java spring spring-boot spring-cloud spring-cloud-config


    【解决方案1】:

    你可以参考这个https://github.com/spring-cloud/spring-cloud-config/issues/359,正如作者所说:应用不能自行决定它可以覆盖远程源的配置

    所以,你不能在本地设置spring.cloud.config.allowOverride=true

    您可以查看PropertySourceBootstrapProperties.java的源代码。 共有三个参数来控制配置。

    如果你想覆盖远程配置,只需在 remote git config 中设置spring.cloud.config.overrideNone=true

    【讨论】:

    • 感谢@ChaoJiang,但这根本没有回答问题,甚至没有尝试回答。这似乎是我在这个问题中提到的this other question 的答案。大部分信息都在问题本身中,其余信息在my own answer 中用于其他问题。我知道如何覆盖远程配置,这里的问题是Spring Cloud中是否存在有效案例来设置部分本地配置甚至覆盖远程配置。
    • 抱歉误解了你的问题,但我有点困惑,你是想在本地覆盖远程配置还是别的?
    • 我想知道设置部分本地配置甚至覆盖远程配置是否可以(是否是一个好习惯),或者是否应该尽可能避免这种情况(我相信)。
    猜你喜欢
    • 2019-06-30
    • 2017-06-23
    • 2016-07-06
    • 2020-06-22
    • 2020-11-21
    • 2015-10-28
    • 2020-04-22
    • 2019-02-28
    • 1970-01-01
    相关资源
    最近更新 更多