使用外部映像在OpenShift中触发部署

使用外部映像在OpenShift中触发部署,openshift,Openshift,我试图在OpenShift中更新映像时触发部署。映像托管在私有外部docker注册表中。我创建了一个映射到此外部图像的ImageStream。当我将一个新图像推送到注册表时,我希望ImageStream以某种方式获取更改并自我更新。但是,当外部图像更新时,更改不会立即传播到ImageStream。如何使ImageStream与外部注册表中的图像保持同步 我知道我可以用标记标记图像,以便定期刷新图像。问题是周期性的不好。有没有一种方法可以立即同步更改?有一种方法可以立即更新更改并触发新生成,即运行

我试图在OpenShift中更新映像时触发部署。映像托管在私有外部docker注册表中。我创建了一个映射到此外部图像的
ImageStream
。当我将一个新图像推送到注册表时,我希望
ImageStream
以某种方式获取更改并自我更新。但是,当外部图像更新时,更改不会立即传播到
ImageStream
。如何使
ImageStream
与外部注册表中的图像保持同步


我知道我可以用标记标记图像,以便定期刷新图像。问题是周期性的不好。有没有一种方法可以立即同步更改?

有一种方法可以立即更新更改并触发新生成,即运行:

oc import-image imagestreamname

如果远程注册表上的图像已更改,这将导致更新图像流标记,如果标记已更新,则会触发依赖于标记的任何内容的重新构建。

据我所知,您必须标记图像以立即将其放入图像流:

oc project os-project
oc tag --source=docker remote-images.io/image-name:latest os-project/os-imagestream/image-name:latest
在我当前的项目中,在将新图像推送到远程注册表后,我们通过Jeninks管道进行标记

要使其正常工作,您还必须配置:

对于每个openshift项目,您必须将从远程注册表提取的机密链接到服务帐户(此命令用于从另一个openshift注册表提取):

export REMOTE_OPENSHIFT_REGISTRY_TOKEN='***'
oc project os-project
oc secrets new-dockercfg remote-images-io1 --docker-server=https://remote-images.io:443 --docker-username=unused --docker-password=$REMOTE_OPENSHIFT_REGISTRY_TOKEN --docker-email=unused
oc secrets new-dockercfg remote-images-io2 --docker-server=remote-images.io --
docker-username=unused --docker-email=unused --docker-password=$REMOTE_OPENSHIFT_REGISTRY_TOKEN
oc secrets link default remote-images-io1 --for=pull
oc secrets link default remote-images-io2 --for=pull