OpenShift:如何更新基于 ImageStream 的应用程序
OpenShift: How to update app based on ImageStream
我使用 ImageStream 在 OpenShift 4.2 上创建了一个项目,该项目从 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”?
(But no Build or BuildConfig is created. Why???)
A BuildConfig
仅在您使用“源到映像”(S2I) 功能时创建,并且仅在您要从源创建容器映像时才需要。在您的情况下,图像已经存在,因此无需构建任何东西。 oc new-app
唯一要做的就是部署您现有的映像,无需构建。
The question is: how do I update my app (myapp)? In other words, how can I launch a new build of "myapp" based on the updated ImageStream?
您正在寻找“Deployment triggers”,特别是“ImageChange 部署触发器”。每当 imagestreamtag
的内容发生变化时(推送新版本的图像时),ImageChange 触发器都会产生新的 ReplicationController
。
在 side-note 上,您还可以定期在 ImageStreams 中自动导入新图像版本(请参阅 documentation)。
如果您的图像流有
,构建会自动开始
--reference-policy source
在那种情况下,使用
更新图像流是正确的
oc -import-image [...]
要更新“本地”ImageStream,而不是
oc import-image is:2.0 --from quay.io/xxx/myimage:latest --confirm --reference-policy local
您应该更新现有的本地 ImageStream 标签
oc tag quay.io/xxx/myimage:latest is:2.0 --reference-policy local
此命令会自动触发您的应用程序的新部署。
将此添加到您的部署配置
triggers:
- type: ConfigChange
- imageChangeParams:
automatic: true
containerNames:
- <your-container-name>
from:
kind: ImageStreamTag
name: '<image_name>:latest'
namespace: <your-namespace>
type: ImageChange
我使用 ImageStream 在 OpenShift 4.2 上创建了一个项目,该项目从 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”?
(But no Build or BuildConfig is created. Why???)
A BuildConfig
仅在您使用“源到映像”(S2I) 功能时创建,并且仅在您要从源创建容器映像时才需要。在您的情况下,图像已经存在,因此无需构建任何东西。 oc new-app
唯一要做的就是部署您现有的映像,无需构建。
The question is: how do I update my app (myapp)? In other words, how can I launch a new build of "myapp" based on the updated ImageStream?
您正在寻找“Deployment triggers”,特别是“ImageChange 部署触发器”。每当 imagestreamtag
的内容发生变化时(推送新版本的图像时),ImageChange 触发器都会产生新的 ReplicationController
。
在 side-note 上,您还可以定期在 ImageStreams 中自动导入新图像版本(请参阅 documentation)。
如果您的图像流有
,构建会自动开始--reference-policy source
在那种情况下,使用
更新图像流是正确的oc -import-image [...]
要更新“本地”ImageStream,而不是
oc import-image is:2.0 --from quay.io/xxx/myimage:latest --confirm --reference-policy local
您应该更新现有的本地 ImageStream 标签
oc tag quay.io/xxx/myimage:latest is:2.0 --reference-policy local
此命令会自动触发您的应用程序的新部署。
将此添加到您的部署配置
triggers:
- type: ConfigChange
- imageChangeParams:
automatic: true
containerNames:
- <your-container-name>
from:
kind: ImageStreamTag
name: '<image_name>:latest'
namespace: <your-namespace>
type: ImageChange