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