如何向 OpenShift/Kubernetes 部署提供环境信息(如外部服务 URL 或密码)?

How can I present environmental information (like external service URLs or passwords) to an OpenShift / Kubernetes deployment?

我有一个前端 (React) 应用程序。我想构建它并部署到 3 个环境——开发、测试和生产。作为每个前端应用程序,它需要调用一些 APIs。 API 地址因环境而异。所以它们应该存储为环境变量。

我利用 S2I Openshift 构建策略来创建映像。应该构建图像并密封更改,然后在部署到每个特定环境之前应该注入变量。

所以我认为正确的解决方案是进行链式、两阶段构建。第一个 S2I 编译源并将其放入 Nginx/Apache/other 容器,第二个获取第一个的结果,添加环境变量并生成最终图像,这些图像将被部署到开发、测试和生产。

这是正确的方法还是存在更简单的解决方案?

我不会将您的环境信息烘焙到您的运行时容器映像中。容器化的主要好处之一是在您的所有环境中使用相同 运行时映像。为每个环境生成不同的映像会增加您的生产部署表现与您在较低环境中测试的表现不同的可能性。

对于非敏感信息,参数化运行时图像的典型方法是使用以下一种或多种:

对于敏感信息,典型的方法是使用: