我可以使用OpenShift构建触发来自外部Docker存储库的ImageStream同步吗?

时间:2019-10-09 16:14:34

标签: docker kubernetes openshift continuous-delivery

我有一个OpenShift BuildConfig,它可以创建存储在远程存储库中的Docker映像。当有新映像可用时,DeploymentConfig使用OpenShift ImageStream触发部署。我设法推送到远程仓库,并从远程仓库同步ImageStream。但是,当我运行全新构建时,ImageStream不会自动与远程存储库同步。新部署将使用旧映像,直到发生这种情况为止。我发现我在BuildConfig中不能有多个spec.output.to字段,或者只是将其推送到两个位置。我已经设置了importPolicy.scheduled: true字段,但是默认情况下,它仅每15分钟导入一次,这时将触发部署触发器并部署新版本。我不想等那个时间。我不希望对此进行全局配置更改。如果有办法做到这一点,我愿意推送到本地docker repo并将其推送到外部。

如何在构建时确定ImageStream已同步,以便触发部署?

2 个答案:

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