Spring Cloud Config 配置中心使用说明(3) -- 服务器+文件存储

1. 版本控制仓库使用的目录

使用基于VCS的后端(git,svn),文件会被检出或克隆到本地文件系统。默认情况下,它们放在系统临时目录中,前缀为config-repo-。例如在linux上,是/tmp/config-repo-。一些操作系统会定期清除临时目录。这可能会导致意外的行为,例如缺少属性。为避免此问题,请通过spring.cloud.config.server.git.basedir或spring.cloud.config.server.svn.basedir来更改Config Server所使用的目录,设置为不是系统临时目录的位置。

2. 使用文件系统

配置服务器中还有一个不使用Git的“本机”配置文件,它从本地类路径或文件系统加载配置文件(“spring.cloud.config.server .native.searchLocations“可以指向任何静态URL)。要使用本机配置文件,只需使用“spring.profiles.active = native”启动Config Server。

注意:
地址记住使用file:前缀(没有前缀通常是指classpath)。与任何Spring Boot配置一样,您可以嵌入 样 式 的 环 境 占 位 符 , 但 请 记 住 , W i n d o w s 中 的 绝 对 路 径 需 要 额 外 的 “ / ” , 例 如 f i l e : / / / {}样式的环境占位符,但请记住,Windows中的绝对路径需要额外的“/”,例如file:/// Windows/file:///{user.home}/config-repo

警告:
searchLocations的默认值与本地Spring Boot应用程序相同(即[classpath:/, classpath:/config, file:./, file:./config])。这不会将application.properties从服务器暴露给所有客户端,因为在发送到客户端之前,服务器中存在的任何属性源都将被删除。

提示:
文件系统 对于快速入门和测试是非常好的。要在生产中使用它,您需要确保文件系统是可靠的,并在配置服务器的所有实例中共享。

搜索位置可以包含{application},{profile}和{label}的占位符。以这种方式,您可以隔离路径中的目录,并选择一个有用的策略(例如每个应用程序一个子目录或每个profile一个子目录)。

如果您不在搜索位置使用占位符,则该存储库还是会将HTTP资源的{label}参数附加到搜索路径的后缀上,因此属性文件将从每个搜索位置和与label具有相同名称的子目录中搜索(label位置在Spring环境中优先)。因此,没有使用lable的默认url与添加以/{label}/结尾的效果一致. 比如, file:/tmp/config结尾的搜索位置与file:/tmp/config,file:/tmp/config/{label}相同(两个位置)。这个默认行为可以通过以下设置禁止:

spring.cloud.config.server.native.addLabelLocations=false

3. 使用Vault

Spring Cloud Config服务器还支持Vault作为后端。

Vault是安全访问秘钥的工具。一个秘钥是你想要严格控制访问的任何东西,如API密钥,密码,证书等等。Vault为任何秘钥提供统一的界面,同时提供严格的访问控制和记录详细的审核日志。

有关Vault的更多信息,请参阅Vault快速入门指南

要使配置服务器使用Vault后端,必须使用vault配置文件运行配置服务器。例如在配置服务器的application.properties中,您可以添加spring.profiles.active=vault。

默认情况下,配置服务器将假定您的Vault服务器正在运行http://127.0.0.1:8200。它还将假设vault后端名称为secret,密钥为application。所有这些默认值都可以在配置服务器的application.properties中配置。以下是可配置的Vault属性表。所有属性前缀为spring.cloud.config.server.vault。

名称默认值
host127.0.0.1
port8200
schemehttp
backendsecret
defaultKeyapplication
profileSeparator,
kvVersion1
skipSslValidationfalse
timeout5
namespacenull

所有可配置的属性可以在org.springframework.cloud.config.server.environment.VaultEnvironmentRepository中找到。

提示:
Vault 0.10.0引入了一个版本化的键值后端(k/v后端版本2),它公开了与早期版本不同的API,现在它需要在装载路径和实际上下文路径之间添加一个data/,并将密钥包装在data对象中。设置spring.cloud.config.server.vault.kv-version=2将启用这一特性。

(可选)支持Vault 企业 X-Vault-Namespace header。若要将其发送到Vault,请设置namespace属性。

运行您的配置服务器,您可以向服务器发出HTTP请求,以从Vault后端检索数据。为此,您将需要一个Vault服务器的令牌。

首先将一些数据放在Vault上。例如

$ vault kv put secret/application foo=bar baz=bam
$ vault kv put secret/myapp foo=myappsbar

然后,将HTTP请求发送给您的配置服务器以检索值:

$ curl -X “GET” “http://localhost:8888/myapp/default” -H “X-Config-Token: yourtoken”

您应该会看到类似的回复:

{
   "name":"myapp",
   "profiles":[
      "default"
   ],
   "label":null,
   "version":null,
   "state":null,
   "propertySources":[
      {
         "name":"vault:myapp",
         "source":{
            "foo":"myappsbar"
         }
      },
      {
         "name":"vault:application",
         "source":{
            "baz":"bam",
            "foo":"bar"
         }
      }
   ]
}

配置服务器访问Vault时的认证方式默认是设置X-Config-Token 头。但是你也可以通过配置属性的方式达到同样的效果。对应的属性是spring.cloud.config.server.vault.authentication。其值必须是支持的几种认证方式。你可能也要设置与认证方式相对应的其它属性,其对应的前缀是spring.cloud.vault,而不是spring.cloud.config.server.vault。更多细节请看 Spring Cloud Vault指南

警告:
如果你使用配置属性的方式去认证,配置服务器需要添加额外的依赖,具体依赖请看 Spring Cloud Vault指南

3.1 多个属性来源

使用Vault时,您可以为应用程序提供多个属性源。例如,假设您已将数据写入Vault中的以下路径。

secret/myApp,dev
secret/myApp
secret/application,dev
secret/application

写入secret/application的属性可 用于使用配置服务器的所有应用程序。名称为myApp的应用程序将可以获得写入secret/myApp和secret/application的任何属性。当myApp启用dev配置文件时,所有上述路径的属性它都可访问,列表中第一个路径中的属性优先于其他路径。

4. 通过代理访问后端库

配置服务器可以通过http或https代理访问git 或 vault。只要设置proxy.http 和 proxy.https则启用代理。这些配置是每个仓库单独设置的,所以如果你使用了多个仓库,需要对每个仓库单独设置。如果网络需要单独的http和https代理,你可以为一个仓库同时配置http和https代理。

下表说明http和https代理属性,所有的属性都是以proxy.http 或 proxy.https为前缀:
Table 2. Proxy Configuration Properties

属性名说明
host代理主机
port代理端口
nonProxyHosts不需要代理的服务器列表。如果proxy.http.nonProxyHosts和proxy.https.nonProxyHosts同时都设置了,则会使用proxy.http的值
username代理服务器的认证用户名。如果同时设置了proxy.http.username和proxy.https.username,则会使用proxy.http的值
password代理服务器的认证密码。 如果同时设置了proxy.http.password和proxy.https.password,则会使用proxy.http的值

下面是通过https代理访问git库的例子:

spring:
  profiles:
    active: git
  cloud:
    config:
      server:
        git:
          uri: https://github.com/spring-cloud-samples/config-repo
          proxy:
            https:
              host: my-proxy.host.io
              password: myproxypassword
              port: '3128'
              username: myproxyusername
              nonProxyHosts: example.com

Spring Cloud Config 使用说明(1) – 快速开始
Spring Cloud Config 配置中心使用说明(2) – 服务器+git库
Spring Cloud Config 配置中心使用说明(3) – 服务器+文件存储
Spring Cloud Config 配置中心使用说明(4) – 服务器+数据库存储
Spring Cloud Config 配置中心使用说明(5) – 服务器健康与安全配置
Spring Cloud Config 配置中心使用说明(6) – 服务器 配置文件格式
Spring Cloud Config 配置中心使用说明(7) – 服务器 配置变更通知
Spring Cloud Config 配置中心使用说明(8) – 客户端

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Spring Cloud Config配置中心有以下功能: 1. 集中管理应用程序的配置信息 2. 支持多环境配置 3. 支持加密/解密配置信息 4. 支持客户端自动更新配置信息 5. 支持版本管理 6. 支持配置信息的动态刷新 ### 回答2: Spring Cloud Config配置中心是一个可以集中管理、动态更新分布式系统中的配置的工具。它具有以下功能: 1. 集中管理:Spring Cloud Config可以将分布式系统的配置集中存储在一个地方,使得配置信息更加可控和可维护。开发人员可以通过配置服务器统一管理各个环境(如开发、测试、生产)的配置文件,减少配置文件的传统散落问题。 2. 动态更新:在分布式系统中,如果某些配置信息发生变化,传统方式需要重新部署应用程序才能使变化生效。而使用Spring Cloud Config可以实现动态更新,即可以在不重新部署应用的情况下,及时将新的配置信息更新到应用程序中,减少了重新部署对系统的影响和停机时间。 3. 版本管理:Spring Cloud Config允许配置文件进行版本管理,每次更新配置文件都会生成一个新的版本,方便进行配置的历史版本查看和回滚操作。这样可以有效地避免因为配置错误而导致的系统故障,并提高系统的可靠性和稳定性。 4. 分布式支持:Spring Cloud Config支持将配置文件分布式地存储在多个配置服务器中,可以根据需求进行水平扩展和负载均衡,确保系统可扩展性和高可用性。 5. 安全性:Spring Cloud Config提供了对配置文件的安全保护机制,开发人员可以通过对配置文件进行加密和解密操作,确保配置文件的安全性,防止敏感信息泄露。 总的来说,Spring Cloud Config配置中心提供了集中管理、动态更新、版本管理、分布式支持和安全性等功能,帮助开发人员更加方便地管理和维护分布式系统的配置信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiegwei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值