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

问题描述 投票:1回答:2

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

我知道我可以使用--scheduled=true标记标记图像以定期刷新图像。问题是周期性不够好。有没有办法立即同步更改?

openshift
2个回答
0
投票

立即更新并触发新构建的一种方法是运行:

oc import-image imagestreamname

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


0
投票

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

oc project os-project
oc tag --source=docker remote-images.io/image-name:latest os-project/os-imagestream/image-name:latest

在我当前的项目中,我们在将新图像推送到远程注册表后通过Jenkins-Pipeline进行标记。

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

对于每个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
© www.soinside.com 2019 - 2024. All rights reserved.