我有一个OpenShift BuildConfig,它可以创建存储在远程存储库中的Docker映像。当有新映像可用时,DeploymentConfig使用OpenShift ImageStream触发部署。我设法推送到远程仓库,并从远程仓库同步ImageStream。但是,当我运行全新构建时,ImageStream不会自动与远程存储库同步。新部署将使用旧映像,直到发生这种情况为止。我发现我在BuildConfig中不能有多个spec.output.to
字段,或者只是将其推送到两个位置。我已经设置了importPolicy.scheduled: true
字段,但是默认情况下,它仅每15分钟导入一次,这时将触发部署触发器并部署新版本。我不想等那个时间。我不希望对此进行全局配置更改。如果有办法做到这一点,我愿意推送到本地docker repo并将其推送到外部。
如何在构建时确定ImageStream已同步,以便触发部署?
答案 0 :(得分:1)
尝试在/etc/origin/master/master-config.yaml
中调整Image Policy Configuration
怎么样?
这篇文章对您的情况也有帮助,请参阅Automatically Update Red Hat Container Images on OpenShift 3.11了解更多详细信息。
或者当您通过CI / CD推送图像时,可以考虑将触发后配置为执行oc import-image <imagestream name>:<tag> --confirm
以进行手动同步。
答案 1 :(得分:0)
我设法推送到远程仓库,并从远程仓库同步ImageStream
为了给出一个很好的答案,有关如何执行此操作的更多信息将有很大帮助。
解决问题的一种方法是用多个标签标记docker注册表,并在ImageStream中将这些标签之一作为计划的imageStreamTag进行侦听。这将使它(最终)得到部署。您可以在CI管道中执行此操作。
如果要在创建构建后立即部署它,则需要执行类似的操作
oc tag my.regisstry/group/name:<myBuildTag> isName:isTagName