如何将 Spring Cloud Config 与 Git 和 Vault 复合环境存储库结合使用?

2023-11-25

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

  1. 非秘密值,开发人员应该能够查看和维护(例如 JDBC URL 等)

  2. 秘密值,只能由具有特殊访问权限的指定人员查看和维护(例如密码)

所以我对支持“复合环境存储库”,目前在快照版本中可用。似乎我可以使用 Git 作为开发人员管理的属性,使用 Vault 作为秘密属性,并对其进行配置,以便在发生冲突时 Vault 始终优先于 Git 。

然而,我发现 Vault 不仅总是优先......它被用作独家的后端。根本不返回任何来自 Git 的属性。

My 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"
            }
        }
    ]
}

如果我反转也没关系order设置在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 一起使用,并且有一条注释警告您所有存储库应包含相同的标签(例如master)。我想知道这是否是问题所在,因为标签总是null对于避难所。


我相信你的依赖一定有问题。我还使用 git 和Vault 设置了一个 Spring Cloud 配置服务器,它运行得很好。 我认为强制使用 1.3.0-BUILD.SNAPSHOT 是不够的。 Spring Cloud config 1.3.0-BUILD.SNAPSHOT 依赖于 spring-vault-core。您可能会缺少这种依赖关系。这可能会导致您在评论之一中提到的 Bean 创建失败。 这是a link使用 git 和Vault 的示例项目。请随意检查一下。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 Spring Cloud Config 与 Git 和 Vault 复合环境存储库结合使用? 的相关文章

随机推荐

  • 无需 webRTC 即可访问相机或网络摄像头

    在我的网站中 它需要访问相机或网络摄像头 但基于ios的webview尚不支持webRTChttps forums developer apple com thread 88052 请cmiiw 所以 我正在尝试找到一种无需 webRTC
  • R 中的条件和

    我有一个 200 行 x 6 列的数据框 我感兴趣的是计算 A 列中的值小于特定数字的总次数 该数字可以被硬编码 我不知道从哪里开始 对于稍微复杂一点的问题 使用 which 来告诉 sum 在哪里求和 如果 DF 是数据框 Ozone S
  • 什么是 UICalloutBarButton,为什么它会使我的应用程序崩溃?

    我正在查看我的 iPhone 应用程序的一些崩溃报告 但我对以下内容感到困惑 它很可能在我的代码中的某个地方崩溃 它可能是一个事件处理程序在某个地方调用了错误的选择器 问题是我不知道这段代码在哪里 我不知道 UICalloutBarButt
  • 如何修复预期启动联盟。在命令行上将 JSON 转换为 Avro 时得到 VALUE_NUMBER_INT?

    我正在尝试使用 Avro 架构验证 JSON 文件并写入相应的 Avro 文件 首先 我定义了以下 Avro 架构 名为user avsc namespace example avro type record name user field
  • 在 CodeIgniter 中使用多个数据库

    场景 我正在构建一个 Web 应用程序 它使用 ion auth 来管理所有用户 管理员信息 使用 MySQL 数据库 并且每个用户都有自己的数据库 也有 MySQL 用于核心应用程序目的 我已在 CodeIgniter 内的 applic
  • 用 CGPathRef 屏蔽 CGContext?

    我正在使用 CGContext 进行一些绘图 我目前正在使用这样的 png 文件来屏蔽绘图 UIImage myImage UIImage imageNamed frame png CGContextRef context UIGraphi
  • 如何仅在悬停时显示 CSS 过渡?

    我在 div 上添加了一个过渡 这样当它悬停在上面时 颜色就会改变 有点像这里的例子 http jsfiddle net 78LWT HTML 代码如下 div div 这是 CSS 代码 transition background col
  • JENKINS 中是否有从节点 home 的环境变量?

    我们知道有一个名为 JENKINS HOME 的环境变量 因此我们可以在任何地方使用它作为 JENKINS HOME 但是现在当我在从节点上运行项目时 我需要使用从节点上的jenkins主目录 在定义从节点时名为 remote FS roo
  • Android Studio 3.1.4 Gradle 同步失败

    每当我在 Android Studio 中创建一个新项目时 它都会在 Gradle Sync 中失败 并且总是出现相同的错误 Connection timed out connect org gradle internal resource
  • java.lang.NumberFormatException:对于输入字符串:“20,475.00”

    我正在努力使我的系统保持运行平衡 为此 我从 AMOUNT 列中获取 jtable 中所有数字的总和 并将总和减去 txtLoanAmount 内的值 这是我的代码片段 String LoanAmount txtLoanAmount get
  • Oracle 选择今天之间的日期

    我有一个像这样的 Oracle SELECT 查询 Select From Customer Rooms CuRo Where CuRo Date Enter Between TODAY 12 00 00 PM And TODAY 11 5
  • 在子图网格中重新定位子图

    I am trying to make a plot with 7 subplots At the moment I am plotting two columns one with four plots and the other wit
  • AlarmManager 无法正常工作

    我正在尝试创建一个基于警报的应用程序 我在用着AlarmManager 问题是它根本不可靠 在某些设备中它可以工作 在其他设备中它有时可以工作 而在其他设备中它根本不起作用 当我说它不起作用时 很简单 警报不会响起 例如 在我的小米4中 如
  • 无法向我的应用添加广告。

    所以我按照 admob 和 Google Play 服务的指南进行操作 https developers google com mobile ads sdk docs admob fundamentals play我遇到了一个问题 他们在网
  • 单击 Jquery 打开和关闭子菜单

    我有一个主菜单 它将在 jquery 中显示带有单击事件的子菜单 客户端希望单击而不是悬停 所以我让它工作 但是我仍然不明白一件事 我的菜单和子菜单工作正常 所以当我单击 新闻 时 子菜单会很好地向下滑动 当我重新单击 新闻 时 它会关闭
  • Bcrypt 哈希返回类型错误(“在哈希之前必须对 Unicode 对象进行编码”)和无效的盐

    我已经查看了与此相关的所有 StackOverflow 问题 但我似乎无法弄清楚这一点 当我对密码进行哈希处理并对其自身进行检查时 它会使用当前代码返回 TypeError 必须在哈希处理之前对 Unicode 对象进行编码 from sc
  • lubridate 中按时间段聚合

    这个问题询问 R 中按时间段进行的聚合 pandas 称之为重采样 最有用的答案是使用 XTS 包按给定时间段进行分组 并应用 sum 或 Mean 等函数 其中一条评论暗示 lubridate 中有类似的东西 但没有详细说明 有人可以提供
  • 如何在 Jinja 2 中使用第 3 方应用程序模板标签?

    我正在为我的 Django 网站尝试 Jinja2 现在 由于 Jinja2 不是官方的 Django 模板引擎 并且它拒绝识别 加载我在 Jjinja2 之前使用的模板标签 现在 即使必须对模板标签创建进行更改 那么如何才能反映在第 3
  • 为什么局部变量的地址在多次执行时会发生变化,而用GDB调试时却不会变化?

    为什么当从 gdb 运行代码时 我得到声明的变量的相同地址 但在执行二进制文件时却没有得到相同的地址 include
  • 如何将 Spring Cloud Config 与 Git 和 Vault 复合环境存储库结合使用?

    我一直在修改 Spring Cloud Config 但有一个用例 其中配置属性分为两种类型 非秘密值 开发人员应该能够查看和维护 例如 JDBC URL 等 秘密值 只能由具有特殊访问权限的指定人员查看和维护 例如密码 所以我对支持 复合