Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Openshift:使用证书从远程安全docker注册表提取图像时出错_Openshift_Kubernetes_Docker Registry_Openshift Origin - Fatal编程技术网

Openshift:使用证书从远程安全docker注册表提取图像时出错

Openshift:使用证书从远程安全docker注册表提取图像时出错,openshift,kubernetes,docker-registry,openshift-origin,Openshift,Kubernetes,Docker Registry,Openshift Origin,我使用Openshift origin的一体机。 我正在尝试使用图像流从私有、安全的注册表中提取图像。这是ImageStream定义: apiVersion: v1 kind: ImageStream meta

我使用Openshift origin的一体机。 我正在尝试使用图像流从私有、安全的注册表中提取图像。这是ImageStream定义:

apiVersion: v1                                                                          
kind: ImageStream                                                                       
metadata:                                                                               
  name: my-image-stream                                                                    
  annotations:                                                                          
    description: Keeps track of changes in the application image                        
  name: my-image                                                              
spec:                                                                                   
  dockerImageRepository: "my.registry.net/myproject/my-image"
存储库由证书保护。在我的本地机器上,我把它们放在
/etc/docker/certs.d/my.registry.net
中,我可以使用
docker login my.registry.net
登录

但是,当我运行
oc import image
时,出现以下错误:

The import completed with errors.                                                    

Name:                       my-image                                                    
Namespace:          myproject                                                           
Created:            About an hour ago                                                   
Labels:                     <none>                                                      
Description:                Keeps track of changes in the application image             
Annotations:                openshift.io/image.dockerRepositoryCheck=2017-01-27T08:09:49Z
Docker Pull Spec:   172.30.53.244:5000/myproject/my-image                               
Unique Images:              0                                                           
Tags:                       1                                                           

latest                                                                                  
  tagged from my.registry.net/myproject/my-image                                        

    ! error: Import failed (InternalError): Internal error occurred: Get https://my.registry.net/v2/: remote error: handshake failure
          About an hour ago                                                             
我将根证书附加到
/etc/pki/tls/certs/ca bundle.crt
var/lib/origin/openshift.local.config/master/ca bundle.crt
,但这并没有改变任何事情。 但是,请注意,我不需要在/etc/docker/certs.d/…中有这个根证书。。。要使用docker登录my.registry.net直接登录,请使用

我已将

尝试将您的CA(与您所说的在
my.registry.net
目录中使用的CA相同)附加到Openshift的CA包(例如
/etc/origin/master/CA bundle.crt
)中。然后重新启动服务并尝试导入图像
(确保未包含
--unsecure
标志)


作为参考,请查看Origin项目。正如您所提到的,目前没有办法提供证书和dockercfg机密,该问题的建议是将CA添加为所有主机上的受信任根CA。

由于两个原因,我无法发表评论,因此我将写一个与rezie几乎相同的答案

错误:

! error: Import failed (InternalError): Internal error occurred: Get https://my.registry.net/v2/: remote error: handshake failure
      About an hour ago                                                             
来自OpenShift,而不是docker,因此将其添加到
/etc/docker/certs.d/my.registry.net
不会阻止错误的发生

您应该在操作系统级别添加CA证书,我猜由于某些原因,这些步骤失败了,因此请按以下方式执行:

openssl s_client -connect my.registry.net:443 </dev/null |
sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' \
> /etc/pki/ca-trust/source/anchors/my.registry.net.crt &&
update-ca-trust check && update-ca-trust extract

如果它没有给你一个证书错误,而你仍然无法执行oc导入,请重新启动
原子openshift主api
服务

谢谢-不幸的是,这没有起到作用。我已经在RHEL中更新了我的问题,我们尝试的另一个选项是将证书添加到
/etc/pki/ca trust/sources/anchors
,运行
更新ca信任
,然后再次重新启动主机。我不确定这是否与VM选项一致,但可能值得一试。
openssl s_client -connect my.registry.net:443 </dev/null |
sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' \
> /etc/pki/ca-trust/source/anchors/my.registry.net.crt &&
update-ca-trust check && update-ca-trust extract
curl https://my.registry.net/v2