【问题标题】:Shared config possible using Spring cloud consul config?使用 Spring 云领事配置可以共享配置吗?
【发布时间】:2018-07-05 02:10:39
【问题描述】:

我们在 Java 8 上为简单的应用程序 helloworldclient 使用 Spring Cloud Consul Config 1.3-RELEASE,与 bootstrap.xml 一起按预期工作...

spring:
  cloud:
    consul:
      token: xxxx-xxxx-xxxx-xxxx
      discovery:
        enabled: true
        register: true
        service-name: helloworldclient-xyz123
        health-check-url: ${HEALTH_CHECK_URL}
      config:
        profile-separator: '/'
        enabled: true
        format: yaml
      host: ${CONSUL_HTTP_ADDR}
      port: 8500
  application:
    name: helloworldclient

使用配置文件dev 运行应用程序,这是从/env 加载的配置...

    "consul:config/helloworldclient/dev/": {
       "product[0].sku": "BL394D",
       "product[0].quantity": 8 
    }

一切都很好,但我们不确定为什么剩余的 consul 配置部分仍然存在,以及它们的用途:

  "consul:config/application/dev/": {},
  "consul:config/application/": {},

这很有趣,因为我们需要共享配置,以便多个应用程序可以从 consul 加载通用的、特定于环境的配置,如果可能的话;一些问题来确定这是否是一个可行的解决方案:

问题

  • 除了应用程序配置路径之外,SCC 是否还尝试从这些位置读取?
  • 默认文件夹 config/application 是否可配置,以便应用在启动时从 config/mysharedconfig 读取?
  • 是否适合将/config/application/dev 用作共享配置位置,多个应用程序可以在其中加载通用的、特定于环境的配置?

【问题讨论】:

    标签: java spring spring-cloud consul spring-cloud-consul


    【解决方案1】:

    我正在回答我自己的问题:

    基于documentation——和一些快速测试——Consul通过spring.cloud.consul.config.defaultContext支持共享属性,默认设置为application,有效地从consul:config/applicationconsul:config/application/dev等加载配置,在启动时(当然,除了应用程序的配置)。 defaultContext 是可自定义的,因此我们将其更改为 commoncfg,然后授予所有 ACL 令牌从该位置读取的权限。除非您正在使用 ACL 令牌,否则您不需要打扰它们,我只提到它是因为我们使用令牌并且此步骤是必要的。

    弹簧: 云: 领事: 配置: 默认上下文:commoncfg

    【讨论】:

      猜你喜欢
      • 2016-06-15
      • 1970-01-01
      • 2012-09-22
      • 2010-12-22
      • 2018-05-07
      • 2017-06-15
      • 1970-01-01
      • 2016-08-06
      • 2023-03-17
      相关资源
      最近更新 更多