我们有一个基于旧的 Weblogic 的基础设施,里面有经典的 JEE 应用程序。使用 Atlassian Bamboo 作为 CD/CI 部署管道将应用程序部署为 WAR 文件。
有多个阶段 - DEV、TEST、PROD 等。我们有一个 HashiCorp Vault 服务器,其中存储所有阶段因变量。我们无法在运行时使用 Vault Server,因为它的可用性还不高。
我想从部署管道内的 Vault 服务器加载所有变量,并将它们注入到 WAR 文件中,然后再上传到 WebLogic。这些值必须在部署期间静态注入一次,不需要动态更新。
在应用程序内部,使用 application.yaml 中的 ${value} 表示法引用值(这通常发生在 Spring 和 Spring-Boot 应用程序中)。例如:
configuration:
azure.app.client_id: ${AZURE_APP_CLIENT_ID:1234567890}
使用从 HashiCorp Vault 加载的实际值替换所有占位符的最佳方法是什么?
您将需要在运行时访问机密并将它们作为应用程序运行时的环境变量注入。所以我假设您可以从 Bamboo 管道访问您的 Vault。
您可以在应用程序可以访问它的路径中编写一个文件
第二个选项是使用类似 -
的方法从管道中导出变量export AZURE_APP_CLIENT_ID="123123123"
基于您的环境,这意味着在您的管道中构建更特定于环境的逻辑,并且可部署的 WAR 保持独立于环境。
听起来很简单,YMMV 取决于您的 CI/CD 设置。