2017-07-27 35 views
1

我有一个图像流定义如下openshift起源。当我在openshift中创建,导入或更新图像流对象时,它会自动拾取docker repo中定义的任何标签。当我通过码头推送图像(即docker push <private-repo-host-and-port>/myimage)时,图像码流不会随泊坞窗中的新图像更新。我必须手动更新图像流或重新导入它或重新创建它。此外,我还有一个openshift构建设置输出到图像流,并且当构建成功完成时,它会将构建的输出图像推送到私有Docker回购站,但图像流不会接收此内容,导入或更新或重新创建图像流 - 它不会自动执行。我有部署配置设置来获取图像流的更新,并且在图像流更新时会触发新的部署,但我必须手动更新图像流。openshift imagestream不跟踪私人码头回购

如何获取imagestream自动更新时支持私人码头回购,它基于更新?

apiVersion: v1 
kind: ImageStream 
metadata: 
    name: isname 
    namespace: mynamespace 
    labels: 
    deployment-id: master 
    name: isname 
    namespace: mynamespace 
spec: 
    dockerImageRepository: '<private-repo-host-and-port>/myimage' 
    tags: 
    - name: latest 
     from: 
     kind: DockerImage 
     name: '<private-repo-host-and-port>/myimage:latest' 
     importPolicy: 
     scheduled: true 

让我konw如果有需要的其他CONFIGS

+0

对于图像位于外部图像注册表中的情况,这是预期的默认行为。更新图像时立即触发图像触发器仅适用于内部图像注册表中的图像。这就是当你使用'oc import-image''时触发的内容,因为它将图像拖入内部注册表中。从内存中有一个设置,使外部映像注册表以某个间隔轮询以检查更新,但无法立即快速找到它。 –

回答

1

阅读:

6:我怎样才能让系统定期汇入我的标签?当我们 正在与外部注册表一起使用时,我们希望能够定期重新导入图像以获取最新的安全更新等。 要这样做,我们将对oc标签命令使用--scheduled标志,如 这样:

OC标签docker.io/python:3.6.0蟒蛇:3.6 --scheduled

这将通知该特定的图像数据流标签 应定期检查更新的系统。目前,这个时间段是集群范围设置的 ,默认情况下设置为15分钟。

只有指向外部码头注册表的图像流标签可以定期检查更新。

要删除定期检查,请重新运行上面的命令,但省略了- 调度标志。这会将其行为重置为默认行为

+0

感谢您的回复。我注意到的是,如果我有一个内部集成的注册表,它最终会获得新的图像,但它每15分钟轮询一次。如果没有内部注册表,它不会进行轮询(或者可能它没有,但是我没有等待15分钟)。为了简单起见,我想避免内部集成注册表,因为我已经可以访问由我管理的私人回购:-)。知道如何增加轮询间隔 – Tucker

+0

我想我发现它 - 在master-config.yml中 - scheduledImageImportMinimumIntervalSeconds默认为900。我会尝试像更新 – Tucker

+0

30秒,减少scheduledImageImportMinimumIntervalSeconds似乎没有做任何事情。当我添加迭代注册表时,我知道它工作的方式。我无法推,拉或使用注册表,但至少在更新后台docker image:标记时更新图像流标记。 – Tucker