我在 openshift 中有一个部署配置,它将轮询映像流中的更改并在新映像可用时启动新部署。我有一个要求,我需要从图像流中重新启动/重新部署相同的标签。我可以通过 openshift Web 控制台中项目的部署部分中的部署选项卡来实现这一点。正在检查相同的cli版本。我是openshift的新手,我找不到。我检查了 oc rollout 选项,但它基本上部署了最新标签,但我需要重新部署现有标签本身。
2 回答
事实上,你从一开始就有正确的答案。执行此操作的正确方法是 oc rollout latest dc/dcname。这相当于点击 UI 中的“部署”按钮。您无需修改部署以“欺骗”它进行重新部署。
当它显示“最新”时,它表示您的部署配置的最新版本,而不是正在部署的任何映像的最新版本。
从 oc rollout latest 的手册页:“使用触发器的最新状态为部署配置启动新的部署”
如果我正确理解了这个问题,您希望使用来自具有特定图像标签的图像流中的图像重新部署和重新启动 pod。
实现此目的的一种方法是通过将 DeploymentConfig 中的图像设置为所需的标记来更新图像的标记。如果 DeploymentConfig 定义了“ConfigChange”类型的触发器,更新将触发自动重新部署和 pod(s) 重新启动。要更新 DeploymentConfig,请编辑它 ( oc edit dc/<deployment_config>
) 或修补它。
否则,就像在 OpenShift Web 控制台中一样,要回滚到特定的部署版本,请运行:
oc rollout undo dc/<deployment-name> --to-revision=<revision-number>
显然,您需要知道修订号。输入oc rollout undo --help
以了解该命令的一些复杂性。
编辑:当基于图像流中的更改的图像时自动重新启动 pod 的“OpenShift 方式”是使用ImageChange触发器。文档中的一个示例是 [here][3]。
这在开发过程中可能很方便,但总的来说,最好的做法是对每个图像版本进行不同的标记,而不是在latest
通过标记引用图像时使用。