Openshift imagestream“导入失败(未经授权)”私人外部安全registry

可能是我没有得到正确的东西,但我的ImageStream返回“ 错误:导入失败(未经授权):您可能无法访问Docker镜像”my_registry:5000 / project / my_image:latest“ ”。

我已经设置了所有需要的步骤来连接到外部registry(创build秘密,并将其添加到当前项目的serviceaccount / default和serviceaccount / builder帐户)。 所有具有指定image: my_registry:5000/project/my_image:latest部署configurationimage: my_registry:5000/project/my_image:latest都工作得很好,节点可以成功地拉取映像并创build一个pod。

但是,当我正在与图像stream:

 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 

解决scheme取决于您的特定基础架构configuration,但这里有一些指针为我工作 –

  1. 假设您的私人外部registry有证书,请检查这些证书是否正确导入,如果不是这样的话,请添加registry为不安全。
  2. Docker拉,构buildconfiguration,图像stream拉 – 所有的工作在不同的方式。
  3. 还build议拉密名称应该与registry身份validation端点的主机名相同。 (如果不使用不安全的registry)。
  4. 例如。 registryFQDN名称:5000 / yourapp:latest(证书需要此function才能正常工作)。

请看看这里

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

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

Openshift Dockerregistry使用了Openshift的OAuth。 所以你必须在--docker-server指向/openshift/token端点时创build一个秘密。 例如:

 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