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

作者: Java旺 | 来源:发表于2020-02-26 19:50 被阅读0次

    SpringCloud配置中心

    本篇讲解Spring Cloud Config采用Vault作为数据后台的方案,以SpringCloud-Hoxton.RELEASE、SpringBoot-2.2.1.RELEASE版本为基础,Vault采用1.3.1。

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

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

    config-vault配置

    pom.xml

    <pre style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: inherit; line-height: inherit; font-family: inherit; vertical-align: baseline; word-break: break-word;">

    <dependency>  
     <groupId>org.springframework.cloud</groupId>  
     <artifactId>spring-cloud-config-server</artifactId>  
    </dependency>
    

    </pre>

    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中数据

    image

    注意:

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

    数据关系

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

    下图介绍Config架构:

    image

    总结

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

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

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

    相关文章

      网友评论

        本文标题:SpringCloud配置中心选Vault作为数据后端

        本文链接:https://www.haomeiwen.com/subject/inzichtx.html