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

标签 docker kubernetes containers openshift devops

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

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

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

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

最佳答案

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

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

  • ConfigMaps
  • Secrets
  • Pod Environment Variables

  • 对于敏感信息,典型的方法是使用:
  • Secrets (which are not very secret as anyone with root accesss to the hosts or cluster-admin in the cluster rbac can read them)
  • 像 Hashicorp Vault 或 Cyber​​ark 这样的保险库解决方案
  • 您内部开发的满足您的安全需求的定制解决方案
  • 关于docker - 如何向 OpenShift/Kubernetes 部署提供环境信息(如外部服务 URL 或密码)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59751802/

    相关文章:

    docker - lein 环服务器在 docker 容器内抛出 java.io.FileNotFoundException

    kubernetes - 如何使用 prometheus kubernetes 抓取 pod 级别信息?

    Azure Durable Function HttpStart 失败 : Webhooks are not configured

    ios - subview Controller 的 View 未显示在容器中

    PostgreSQL:错误: "NOT"处或附近的语法错误

    apache-spark - Spark2.3.0-bin-without-hadoop,docker-image-tool.sh 缺少 hadoop jar

    docker - 如何使用docker-compose将环境变量设置到docker容器中

    json - Kubernetes 使用转义引号将 JSON 日志保存到文件中。为什么?

    html - 如何在容器周围的 twitter bootstrap 中制作背景图像

    docker - Docker卷还原