2017-07-27 37 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