ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

如何将Spring Cloud Config与Git和Vault组合环境存储库一起使用?

2019-06-27 19:59:22  阅读:160  来源: 互联网

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


我一直在修改Spring Cloud Config,但有一个用例,其中配置属性分为两种类型:

>非秘密值,开发人员应该能够查看和维护(例如JDBC URL等)
>秘密值,只有具有特殊访问权限的指定人员才能查看和维护(例如密码)

所以我对“Composite Environment Repositories”的支持非常感兴趣,目前可以在快照版本中使用.似乎我可以将Git用于开发人员管理的属性,将Vault用于秘密属性,并对其进行配置,以便在发生冲突时Vault始终优先于Git.

但是,我发现Vault不仅总是优先考虑……它还被用作独家后端.根本没有返回Git的属性.

我的application.yml看起来像这样:

spring:
  profiles:
    active: git, vault
  cloud:
    config:
      server:
        vault:
          order: 1
        git:
          uri: https://github.com/spring-cloud-samples/config-repo
          basedir: target/config
          order: 2

我已经向Vault写了一个属性,如下所示:

vault write secret/foo foo=vault

我正在调用我的配置服务器:

curl -X "GET" "http://127.0.0.1:8888/foo/default" -H "X-Config-Token: a9384085-f048-7c99-ebd7-e607840bc24e"

但是,JSON响应有效内容仅包含Vault属性. Git没什么:

{
    "name": "foo",
    "profiles": [
        "default"
    ],
    "label": null,
    "version": null,
    "state": null,
    "propertySources": [
        {
            "name": "vault:foo",
            "source": {
                "foo": "vault"
            }
        }
    ]
}

如果我颠倒application.yml中的订单设置,给Git提供比Vault更高的优先级并不重要.只要Vault配置文件处于活动状态,它就会充当独占后端.

但是,如果我取消激活Vault配置文件,那么相同的curl操作会返回Git后端的结果:

{
    "name": "foo",
    "profiles": [
        "default"
    ],
    "label": "master",
    "version": "30f5f4a144dba41e23575ebe46369222b7cbc90d",
    "state": null,
    "propertySources": [
        {
            "name": "https://github.com/spring-cloud-samples/config-repo/foo.properties",
            "source": {
                "democonfigclient.message": "hello spring io",
                "foo": "from foo props"
            }
        },
        {
            "name": "https://github.com/spring-cloud-samples/config-repo/application.yml",
            "source": {
                "info.description": "Spring Cloud Samples",
                "info.url": "https://github.com/spring-cloud-samples",
                "eureka.client.serviceUrl.defaultZone": "http://localhost:8761/eureka/",
                "foo": "from-default"
            }
        }
    ]
}

有什么我可以失踪的吗? Git属性和Vault属性没有……好吧,“复合”在一起的原因有哪些?

文档中唯一的例子显示Git和Subversion一起使用,并且有一个注释警告您所有repos应包含相同的标签(例如master).我想知道这是否是问题,因为Vault的标签总是空的.

解决方法:

我相信你的依赖项肯定有问题.我还设置了一个带有git和vault的spring cloud配置服务器,它运行得很好.
我认为强制使用1.3.0-BUILD.SNAPSHOT是不够的. Spring cloud config 1.3.0-BUILD.SNAPSHOT依赖于spring-vault-core.您可能会错过此依赖项.这可能会导致您在其中一条评论中提到的bean创建失败.
这是一个带有git和vault的示例项目的a link.随意检查出来.

标签:java,spring,spring-cloud-2,spring-cloud-config
来源: https://codeday.me/bug/20190627/1308288.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有