Openshift imagestream"导入失败(未授权)"用于私人外部安全注册

时间:2017-05-31 15:08:42

标签: docker openshift openshift-origin

可能我没有得到正确的答案,但我的ImageStream回归" !错误:导入失败(未授权):您可能无法访问Docker镜像" my_registry:5000 / project / my_image:latest" "。

我已经设置了连接到外部注册表所需的所有步骤(创建了秘密并将其添加到当前项目的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

2 个答案:

答案 0 :(得分:0)

解决方案取决于您的特定基础架构配置,但这里有一些对我有用的指示 -

  1. 假设您的私人外部注册机构有证书,请检查这些证书是否已正确导入,如果不是这样,那么请将注册表添加为不安全。
  2. Docker pull,build config,imagestream pull - 所有工作都以不同的方式进行。
  3. 此外,建议pull secret name应与注册表身份验证端点的主机名相同。 (如果不使用不安全的注册表)。
  4. 对于前。注册表FQDN名称:5000 / yourapp:latest(证书需要此功能才能正常工作)。
  5. 请查看here

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

答案 1 :(得分:0)

当我尝试从另一个Openshift群集中托管的docker注册表导入图像时,我遇到了同样的问题。经过一些调试我发现了问题:无法找到匹配https://docker-dev.xxxx.com:443/openshift/token的秘密(docker-dev.xxxx.com:443/openshift/token)

Openshift Docker注册表正在使用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> \
    --docker-email=someone@example.com