【问题标题】:Multiple options to deploy application to OpenShift将应用程序部署到 OpenShift 的多种选择
【发布时间】:2018-07-10 13:04:34
【问题描述】:

据我了解,可以使用多种方法将应用程序添加到 OpenShift Container Platform 中的项目中。

  • 从源代码 (s2i) 构建 Docker 映像,然后将该映像部署到 OpenShift
  • 从 Dockerfile 构建 Docker 映像,然后将该映像部署到 OpenShift
  • 单独构建一个 Docker 映像(在 OpenShift 之外),然后将该映像部署到 OpenShift
  • 单独构建应用程序的二进制文件(在 OpenShift 之外),然后将二进制文件部署到 OpenShift

我知道没有一种适合所有人的尺寸,但我想要的是强调每个选项的情况的答案,例如为什么我要使用一个特定选项而不是其他选项?

更新 也许另一种提问方式是您的公司使用什么方法以及为什么?

【问题讨论】:

  • 您也可以在 OpenShift 之外运行 s2i 程序来创建一个映像,然后将其部署到 OpenShift。并不是说它一定解释了为什么一种方式会被用于另一种方式,但如果你还没有阅读过openshift.com/deploying-to-openshift,它涵盖了每种方式。

标签: docker openshift openshift-origin openshift-enterprise


【解决方案1】:

我想,你指的是不同的Build Strategy Options。而且,在您的问题中,您可能错过了Pipeline Build strategy

图片来源

假设,您已经开发了一个基本的 NodeJS 后端应用程序。您的目标是快速启动并在 OpenShift 集群中运行。当我说得很快时,我的意思是,不必学习 Docker 知识。在这种情况下,您将使用 S2I。

  1. package.json 中包含一个start 脚本以指向node index.js
  2. 将代码提交到 GitHub(或任何其他 Git 存储库)。
  3. oc new-app .
  4. 完成。

码头工人

继续基本的 NodeJS 后端示例,您可能会意识到 OpenShift 使用的 base NodeJS image 可能不适合您(出于多种原因)。也许,您想使用Docker official NodeJS image。当然,可能还有其他非 NodeJS 原因为您的应用程序构建容器,例如特殊环境变量等。在这里,您将使用Dockerfile

来自 Docker Hub 的 Docker 映像

您也可以deploy a pre-built Docker image。请注意,默认情况下,OpenShift 安全约束不允许您以root 运行容器。文章链接将此称为此约束以及此约束的解决方法。

红帽注册表

与前一种情况相同,但是,此部署需要此 article 中所述的机密(需要登录)。

因此,只要您的容器存储库可以以 OpenShift 的“祝福”方式访问,您绝对可以在外部构建映像并将其拉入以进行部署。

二进制

我能引用的最接近的“场景”可能是question。否则,也许构建方法太小众了,在执行之前最好在“受控”环境中完成。

我的偏好

就我自己而言,我会走这条路。

  1. 开发人员(包括我自己)需要专注于完成功能 - 所以,使用 S2I。
  2. 运营团队(包括我自己)需要专注于打包 - 因此,使用 1 中开发的功能并转换为 Dockerfile。或者,甚至是Jenkinsfile
  3. 管理团队(包括我自己)对将图像放到互联网上很敏感 - 因此,将 Docker 图像推送到私有存储库。
  4. 如果要为专有的东西完成上述所有操作,请使用二进制构建选项。

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    我个人对每个选项的想法如下,

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-13
      • 2018-02-18
      • 2013-04-05
      • 1970-01-01
      相关资源
      最近更新 更多