2017-05-31 84 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]