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

5
我正在尝试在OpenShift中更新图像时触发部署。该图像托管在私有外部Docker注册表中。我已创建了一个ImageStream,将其映射到此外部图像。当我向注册表推送新的图像时,我期望ImageStream能够以某种方式捕获更改并更新自身。然而,当外部图像更新时,更改不会立即传播到ImageStream。如何使ImageStream与我们外部注册表中的图像保持同步?
我知道可以使用--scheduled=true标记对图像进行标记,以便定期刷新图像。问题是定期不够好。是否有一种方法可以立即同步更改?
2个回答

3

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

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

在我目前的项目中,我们通过Jeninks-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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接