【问题标题】:Spring cloud config load client bootstrap.properties from AWS S3Spring cloud config 从 AWS S3 加载客户端 bootstrap.properties
【发布时间】:2018-01-28 14:31:07
【问题描述】:

目前我已经设置了一个云配置服务器,客户端应用程序从这个中心属性获取属性。当更改推送到 GIT 时,云配置服务器通过 rabbitmq 将这些配置更改推送到客户端,并且可以完美运行。

但是,我希望所有客户端应用程序都从云端加载具有以下属性的 boostrap.properties;

spring.application.name=app-name
spring.cloud.config.uri=http://user:pass@sub.domain.com:8888
spring.cloud.config.username=username
spring.cloud.config.password=password

我的问题源于我有多个租户使用同一个平台,我希望每个租户都有一个不同的配置文件,该文件存储在 S3 或任何其他公共存储库中。该文件可以通过 CI/CD 推送到不同的租户设置,并包含指向租户配置 API 等的链接。

有没有办法从分布式文件系统(如 HDFS 或 AWS S3)加载引导属性?

【问题讨论】:

  • 您始终可以将 s3 文件夹挂载到文件系统上。互联网上有很多关于这方面的信息。
  • 我实际上希望覆盖加载 boostrap.properties 文件的部分,并使用 aws sdk 从 s3 中的特定路径加载它。不知道我是否可以轻松地接线 - 这就是我目前正在寻找的。​​span>
  • 这将是一个相当深刻的事情。为什么不询问创建一些自定义代码来覆盖您在 Spring Boot 中获取属性的位置。
  • 也看看这个:baeldung.com/spring-cloud-configuration 它使用 git,但我敢打赌它可以扩展!
  • 是的,我的设置已经使用了 git,但我的意图是让一个租户从 1 个配置服务器加载属性,另一个租户从另一台服务器加载属性。我想我正在使用 -Dspring.cloud.config.uri=value...提交 jar 时覆盖属性...

标签: java spring spring-cloud


【解决方案1】:

我写了一篇关于使用 spring cloud-config 和 s3 作为后端存储配置的博客文章。

https://nageshrsalunke.me/blogs/2019/spring-cloud-config-s3-backend/

为什么选择 S3?

以下是不使用 git 并使用 S3 进行配置存储的具体原因

  • 不向生产部署环境公开 git/源代码控制。
  • 避免在生产环境中复制/克隆或维护 git 服务器。
  • 使用存储进行存储,使用版本控制进行版本控制(单一职责原则)
  • 部署管道定义何时推送配置/而不是您的源代码或代码审查系统

实施

使用S3EnvironmentRepository,它实现了spring“org.springframework.cloud.config.server.environment.EnvironmentRepository”的EnvironmentRepository

我有一个示例实现,它按计划从 s3 更改版本文件中的版本标头来获取 s3 配置 https://github.com/nagesh-salunke/spring-cloud-config-s3

【讨论】:

猜你喜欢
  • 2021-12-10
  • 2016-11-26
  • 2015-07-13
  • 2021-03-11
  • 2019-03-04
  • 1970-01-01
  • 2019-07-14
  • 2019-12-11
相关资源
最近更新 更多