OpenShift:如何基于ImageStream更新应用程序

OpenShift:如何基于ImageStream更新应用程序,openshift,quay.io,Openshift,Quay.io,我使用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

我使用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
该应用程序是构建的,我可以通过公开它来使用它。(但是没有创建构建或构建配置。为什么?)

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

oc import-image is:2.0 --from quay.io/xxx/myimage:latest --confirm --reference-policy local
问题是:如何更新我的应用程序(myapp)?换句话说,如何基于更新的ImageStream启动新的“myapp”构建

(但是没有创建构建或构建配置。为什么?)

BuildConfig
仅在您使用“源到映像”(S2I)功能时创建,并且仅在您希望从源创建容器映像时才需要。在您的情况下,映像已经存在,因此不需要构建任何内容。
oc-new-app
唯一要做的就是部署现有映像,无需构建

问题是:如何更新我的应用程序(myapp)?换句话说,如何基于更新的ImageStream启动新的“myapp”构建

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


另一方面,您还可以定期自动导入ImageStreams中的新图像版本(请参阅)。

如果您的图像流

--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 

此命令将自动触发应用程序的新部署。

将其添加到deploymentConfig中

triggers:
- type: ConfigChange
- imageChangeParams:
    automatic: true
    containerNames:
      - <your-container-name>
    from:
      kind: ImageStreamTag
      name: '<image_name>:latest'
      namespace: <your-namespace>
  type: ImageChange
触发器:
-类型:ConfigChange
-imageChangeParams:
自动:正确
集装箱名称:
- 
发件人:
种类:ImageStreamTag
名称:':最新'
名称空间:
类型:ImageChange

非常感谢你,西蒙。我知道触发器是用来“自动化”部署的。如果我现在要部署和更新映像,该怎么办?“oc卷展栏”?@Guildenstern70是的,您可以使用
oc卷展栏
重新运行部署。请注意,这将只是展开
部署的当前定义,这意味着如果指定了“旧”图像标记,它仍将展开旧图像标记。因此,您可能需要更新部署使用的标记,然后使用
oc卷展栏
。当然,如果您使用
latest
或类似的标签,这将按预期工作。谢谢。据我所知,通过这种配置,我可以在映像更改时自动部署。但我想决定何时部署。