首页 > 解决方案 > OpenShift:如何基于 ImageStream 更新应用程序

问题描述

我在 OpenShift 4.2 上创建了一个项目,其 ImageStream 正在从 Quay.io 中提取图像:

oc new-project xxx-imagestream
oc import-image is:1.0 --from quay.io/xxx/myimage:latest --confirm --reference-policy local 

现在我创建一个新项目来托管基于该 ImageStream 的应用程序

oc new-project xxx-app
oc new-app --name myapp -i xxx-imagestream/is:1.0

该应用程序已构建,我可以通过公开它来使用它。(但没有创建 Build 或 BuildConfig。为什么???)

现在我用新版本更新 Quay.io 上的镜像,并将新版本导入 xxx-imagestream 项目:

oc import-image is:2.0 --from quay.io/xxx/myimage:latest --confirm --reference-policy local

问题是:如何更新我的应用程序(myapp)?换句话说,我怎样才能基于更新的 ImageStream 启动一个新的“myapp”版本?

标签: openshiftquay.ioopenshift-4

解决方案


(但没有创建 Build 或 BuildConfig。为什么???)

ABuildConfig仅在您使用“Source to Image” (S2I) 功能时创建,并且仅在您想要从源创建容器映像时才需要。在您的情况下,图像已经存在,因此无需构建任何东西。唯一oc new-app要做的就是部署您现有的映像,无需构建。

问题是:如何更新我的应用程序(myapp)?换句话说,我怎样才能基于更新的 ImageStream 启动一个新的“myapp”版本?

您正在寻找“部署触发器”,特别是“ImageChange 部署触发器”。ReplicationController每当imagestreamtag更改内容时(推送新版本的图像时),ImageChange 触发器都会产生新的。

附带说明一下,您还可以定期在 ImageStreams 中自动导入新图像版本(请参阅文档)。


推荐阅读