SpringCloud配置中心选Vault作为数据后端

编程

项目基础采用Eureka作为注册中心,启动和发现都依赖它。

样例托管在Github:====>> cloud-service-config-vault

config-vault配置

pom.xml

<dependency>  

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-config-server</artifactId>

</dependency>

applicatin.yml

spring:

cloud:

config:

server:

vault:

backend: secret

default-key: application #公共配置属性,所有应用共享

host: localhost

port: 8200

scheme: http

kv-version: 2

timeout: 5

skip-ssl-validation: true

注意:

  1. backend参数对应vault中具体一个secrets,且只能配置一个secrets。
  2. default-key参数对于某个secrets中的对象,所有访问配置中心的应用都能使用该对象内的配置数据,但只能配置一个默认key(亲测)。

app-demo配置

pom.xml

<dependency>  

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-config</artifactId>

</dependency>

application.yml

spring:

cloud:

config:

uri: http://localhost:8888/

profile: default

name: service-demo1

token: s.F8qMMcRze19KpKq7E #每个应用可以分别设置不同权限的token

代码中使用配置

@Configuration  

public class DataSoucesCfg {

@Value("${mysql_address}")

String driver;

@Value("${jdbc.url}")

String url;

}

注意:

  1. token参数是vault生成的token,可根据不同应用配置不同token,也可配置同一个。
  2. 对于vault作为后台情况下profile和label是没有什么用,他们只在Git下有用,都可采用默认方式。

vault中数据

注意:

  1. vault本身对secrets下的secret是支持key-value和json两种结构的,这两种在项目中都可以使用,看上面图片。推荐采用json方式,数据存储结构更加丰富。
  2. 不能在vault的key-value中用value存json字符串,这样是无法使用的。

数据关系

SpringCloudConfig支持多个配置中心同时运行,也就是说Config-Vault与Config-Git可以并行,只要将配置服务名定义相同即可。

下图介绍Config架构:

总结

从后台带WEB管理系统这点考虑,只有GitLab&Vault作为数据后台是靠谱的,它们两个都可以通过权限分配来管理配置。Vault可以通过Policies将不同权限配置按token进行非常细致的绑定访问,比如可以读不可写、不可访问等。这点Gitlab需要进行二次开发才能达到Vault的效果。

Demo样例源码:https://github.com/owen-jia/cloud-parent

作者:Owen Jia,博客:https://blog.shareworld.vip

支持原创,转载须署名,谢谢

以上是 SpringCloud配置中心选Vault作为数据后端 的全部内容, 来源链接: utcz.com/z/513834.html

回到顶部