2017-05-31 83 views
0

可能是我沒有得到正確的東西,但我的ImageStream回覆「!錯誤:導入失敗(未經授權):您可能無法訪問Docker圖像「my_registry:5000/project/my_image:latest」「。Openshift imagestream「導入失敗(未經授權)」爲私人外部安全註冊表

我已經設置了連接到外部註冊表所需的所有步驟(創建祕密並將其添加到當前項目的serviceaccount/default和serviceaccount/builder帳戶)。所有具有指定image: my_registry:5000/project/my_image:latest的部署配置工作良好,節點可以成功地拖動圖像並創建一個窗格。

但是當我在進行圖像流與:

from: 
     kind: DockerImage 
     name: my_registry:5000/project/my_image:latest 

我得到我沒有被授權的錯誤。

那麼我做錯了什麼?是否有任何額外的帳戶我應該給拉的權利?

oc describe sa/builder 
Name:   builder 
Namespace:  nginx 
Labels:   <none> 

Image pull secrets:  builder-dockercfg-8ogvt 
         my_registry 

Mountable secrets:  builder-token-v6w8q 
         builder-dockercfg-8ogvt 
         my_registry 

Tokens:     builder-token-0j8p5 
         builder-token-v6w8q 

oc describe sa/default 
Name:   default 
Namespace:  nginx 
Labels:   <none> 

Image pull secrets:  default-dockercfg-wmm1h 
          my_registry 

Mountable secrets:  default-token-st7k9 
         default-dockercfg-wmm1h 

Tokens:     default-token-m2aoq 
         default-token-st7k9 

回答

0

的解決方案取決於您的特定基礎設施配置,但這裏有一些指針,這爲我工作 -

  1. 假設你的私人外部註冊表有證書,請檢查如果這些證書被正確導入,如果不是這種情況,那麼請將註冊表添加爲不安全的。
  2. 碼頭拉,建立配置,圖像流拉 - 所有工作以不同的方式。
  3. 此外,建議拉密名稱應與註冊表身份驗證端點的主機名相同。 (如果不使用不安全的註冊表)。
  4. 例如。註冊表FQDN名稱:5000/yourapp:latest(證書需要此功能才能正常工作)。

請看看here

oc secrets link default <pull_secret_name> --for=pull 
+0

感謝您的回覆!我確實有私人註冊與證書,並且他們正確地投入(否則我將無法使碼頭拉) - 但也許我需要導入他們以某種方式openshift,並信任主機的操作系統是不夠的? –

+0

祕密名稱與FQDN相同。我正在使用oc的祕密鏈接 - 它並沒有幫助((你能指定如何部署配置拉與圖像流拉不同? –

0

我遇到了同樣的問題,當我試圖從另一種Openshift羣集承載泊塢窗註冊表導入圖像。一些調試後,我發現了問題:無法找到一個祕密匹配https://docker-dev.xxxx.com:443/openshift/token(docker-dev.xxxx.com:443/openshift/token)

的Openshift泊塢窗註冊表使用Openshift的OAuth。所以你必須創建一個祕密,其中--docker-server指向/openshift/token端點。例如:

oc secrets new-dockercfg registry.example.com \ 
    --docker-server=https://registry.example.com:443/openshift/token \ 
    --docker-username=default/puller-sa \ 
    --docker-password=<token> \ 
    [email protected]