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

时间:2018-01-03 22:11:10

标签: openshift

我正在尝试在OpenShift中更新映像时触发部署。该映像托管在私有外部docker注册表中。我创建了一个映射到此外部图像的ImageStream。当我将新图像推送到注册表时,我希望ImageStream以某种方式获取更改并自行更新。但是,更新外部图像时,更改不会立即传播到ImageStream。如何使$taskname = ''myscheduletask' $action = New-ScheduledTaskAction -Execute 'Powershell.exe' -Argument '-NoProfile -WindowStyle Hidden -command "& {stop-service -name "myservicename" -Force}"' $trigger = New-ScheduledTaskTrigger -Once -At (Get-Date).AddSeconds($delayinSeconds) Register-ScheduledTask -Action $action -Trigger $trigger -TaskName $taskname -Description $taskdescription -Force 与我们的外部注册表中的图像保持同步?

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

2 个答案:

答案 0 :(得分:0)

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

oc import-image imagestreamname

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

答案 1 :(得分: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