java - Spring云配置从AWS S3加载客户端bootstrap.properties

标签 java spring spring-cloud

目前,我已经设置了一个云配置服务器,客户端应用程序从这个中心属性中获取属性。当更改推送到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 或任何其他公共(public)存储库上。该文件可以通过 CI/CD 推送到不同的租户设置,并且包含租户配置 API 等的链接。

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

最佳答案

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

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

为什么选择 S3?

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

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

实现

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

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

关于java - Spring云配置从AWS S3加载客户端bootstrap.properties,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48487430/

相关文章:

java - Java Servlet 中的过滤器无法正常工作?

java - 如何将绳子切成 fragment 并通过蓝牙发送每个 fragment ?

java - NullPointer 异常 2D 数组类

java - 如何拦截Spring Cloud Stream消息?

java - Spring Cloud Config 端口冲突

java - 合并 pdf :s with pdfBox creates a unnecessary large file

带有 Zuul 代理的 Spring Security Oauth2 SSO

java - messageSource 不会替换模板中的所有参数

Spring 启动: Secured RESTful API using Spring Social and Spring Security

Spring Cloud Bus,如何在/bus/refresh?destination=中指定多个目的地?