使用env特定值构建和运行的最佳方法- Spring和K8S



在kubernetes中使用Spring Cloud kubernetes库构建一个部署在kubernetes中的基于Spring的项目。构建使用maven和GIT CI/CD。探索构建过程以打包特定于环境的文件,以及在执行期间选取特定于环境的文件的运行时。在传统的部署中,通常使用maven配置文件来构建特定于env的库和配置。现在spring有了概要文件,maven也有了它的概要文件。此外,一些设计包括构建中包含的所有环境的文件/配置,只有激活的配置文件将使用正确的配置。是否建议在包中包含所有配置?

是否有一个最好的方法,如何这两个工作在处理环境特定的文件或任何其他优化的方法来处理这个?

恐怕

在传统部署中,用于使用maven配置文件构建环境特定的库和配置

从来都不是maven配置文件的情况,如果你看一下官方指南,你会发现以下内容:

Apache Maven竭尽全力确保构建是可移植的。除此之外,这意味着允许在POM中进行构建配置,避免所有文件系统引用(在继承、依赖和其他地方),并且更多地依赖于本地存储库来存储实现这一目标所需的元数据。

然而,有时可移植性并不是完全可能的。在某些条件下,插件可能需要配置本地文件系统路径。在其他情况下,将需要稍微不同的依赖集,并且项目的工件名称可能需要稍微调整。在其他时候,你甚至可能需要在构建生命周期中包含一个完整的插件,这取决于检测到的构建环境。

为了解决这些情况,Maven支持构建配置文件。

因此,maven概要文件被设计成支持跨构建环境的代码库可移植性,但不能为特定的环境构建工件。

"Traditional"将特定于环境的设置注入j2ee-application的方法是通过JNDI设置这些设置,即j2ee-container通过JNDI提供配置,我们的应用程序通过JNDI消费该配置。在spring/k8s/etc的情况下,主要思想应该保持不变:应用程序知道如何检索配置(系统属性、环境变量、配置服务器、服务发现等),环境提供该配置。

最新更新