部署新版本的应用程序时向yaml文件添加新属性的最佳方法

时间:2019-03-26 13:22:05

标签: spring-boot continuous-integration yaml devops app.yaml

我有一个带有application.yaml配置的spring boot应用程序。例如,它看起来像这样:

my-server
 host: localhost
 port: 8080
 time-out-in-seconds: 60
 user:
  name: Eddy
  login: Eagle

我在五家不同的公司中启动了此应用程序。每个公司都有各自的功能:主机端口等。对于每个公司,我创建了一个新的yaml配置,并覆盖了一些属性。例如,此配置用于 A 公司:

-a.yaml

my-server
     time-out-in-seconds: 120
     user:
      name: AUser
      login: SomeLogin

此配置靠近jar文件

Server
 -server.jar
 -a.yaml

在开发过程中,我需要向config( application.yaml )中添加一个新属性:

my-server
  host: localhost
  port: 8080
  region: foo

区域:foo -是一个新属性。并且必须在每个company.yaml中覆盖此属性。我需要将此属性添加到a.yaml(region: foo)b.yaml(region: bar)和其他属性中。

所有这些使更新变得复杂。在每次部署中,我需要记住配置中是否有任何新字段。如果有的话-我需要将此属性添加到每个company.yaml中。我可以随意错过一些财产。

有某种机制可以做到吗?以某种方式自动化?合并,版本等?

1 个答案:

答案 0 :(得分:-1)

几个问题:

  1. 是否可以保留服务器外部的配置?
  2. 您是否总是必须覆盖所有yaml文件,或者可以指定默认值,然后仅覆盖那些需要它的文件?

如果可以选择这两个选项中的任何一个,则可能要查看spring cloud configconfigrd.io。这两个选项都提供对属性的覆盖。

您可以将每个客户的服务器指向不同的配置文件。您可以拥有所有客户使用的基本配置。将配置保留在服务器之外可以简化部署,并允许您进行更改而无需重新部署服务。