【问题标题】:Openshift deploy same tag from image streamOpenshift 从图像流中部署相同的标签
【发布时间】:2018-12-26 19:41:51
【问题描述】:

我在 openshift 中有一个部署配置,它将轮询映像流中的更改并在新映像可用时启动新部署。我有一个要求,我需要从图像流中重新启动/重新部署相同的标签。我可以通过 openshift Web 控制台中项目的部署部分中的部署选项卡来实现这一点。正在检查相同的cli版本。我是openshift的新手,我找不到。我检查了 oc rollout 选项,但它基本上部署了最新标签,但我需要重新部署现有标签本身。

【问题讨论】:

标签: deployment openshift openshift-client-tools rollout


【解决方案1】:

实际上,您从一开始就有正确的答案。执行此操作的正确方法是 oc rollout latest dc/dcname。这相当于点击 UI 中的“部署”按钮。您无需修改​​部署即可“诱骗”它重新部署。

当它显示“最新”时,表示您的部署配置的最新版本,而不是正在部署的任何映像的最新版本。

来自 oc rollout latest 的手册页: “使用触发器的最新状态开始新的部署配置部署”

【讨论】:

  • 我使用了 OC 补丁和 oc rollout,两者都达到了目的。最后我选择了 oc rollout,因为我相信这是更好的方法。
【解决方案2】:

如果我正确理解了这个问题,您想使用图像流中具有特定图像标签的图像重新部署并重新启动 pod。

实现此目的的一种方法是通过将 DeploymentConfig 中的图像设置为所需的标记来更新图像标记。如果 DeploymentConfig 定义了“ConfigChange”类型的触发器,更新将触发自动重新部署和 pod(s) 重新启动。要更新 DeploymentConfig,请编辑它 (oc edit dc/<deployment_config>) 或 patch it

否则,就像在 OpenShift Web 控制台中一样,要回滚到特定部署修订版,请运行:

oc rollout undo dc/<deployment-name> --to-revision=<revision-number>

显然,您需要知道修订号。输入oc rollout undo --help 以了解该命令的一些复杂性。

编辑:当基于图像流中的更改的图像时,使 pod 自动重新启动的“OpenShift 方式”是使用ImageChange 触发器。文档中的一个示例是 [here][3]。

这在开发过程中可能很方便,但一般来说,最好的做法是对每个图像版本进行不同的标记,并在通过标记引用图像时not to use latest

【讨论】:

  • 我想要实现的是,用外行的话来说就是重启 pod
  • 如果你因为某种原因不得不这样做,你可以使用oc set image而不是编辑dc
  • @GrahamDumpleton 的好建议 - OpenShift 的 oc 可以更轻松地在 DeploymentConfig 中更改图像,而不是使用通用的 patch 命令。
  • @apisim & @GrahamDumpleton 感谢您的建议,实际上正如我在问题中已经提到的那样 - 我已经在使用 Trigger: Image Change 进行正常部署。我正在寻找的通常是 Pod 当前正在运行的同一映像的 Pod 重新启动/重新部署。我最接近的是 oc edit dc 如果我简单地增加 latestVersion 在 DC 中的值,它将重新部署相同的图像。但是 oc edit dc 是交互式的,我想自动化它。任何想法?或任何更好的方法来实现这一目标?再次感谢!!
  • @user2700022 您是否阅读了作为对原始问题的评论提供的链接。您可以使用 oc patch 命令中的示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多