我正在尝试在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
标记标记图像,以便定期刷新图像。问题是定期不够好。有没有办法立即同步的更改??
答案 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