Openshift:TLS错误从其自己的注册表中提取Docker映像

时间:2018-07-11 20:04:51

标签: docker jenkins openshift openshift-origin

我们正在尝试为其中一个应用程序(在Openshift中运行)建立构建管道,并且存在一些TLS问题。

我们正在使用Jenkins为此应用程序构建docker映像,然后将映像推送到Openshift Registry。到目前为止,这是我们所做的:

将Openshift主证书复制到Jenkins:

mkdir -p /etc/docker/certs.d/docker-registry-default.router.default.svc.cluster.local
cd /etc/docker/certs.d/docker-registry-default.router.default.svc.cluster.local
scp root@<OPENSHIFT_MASTER_IP>:/etc/origin/master/ca.crt ca.crt

从詹金斯成功登录到注册表:

bash-4.2$ docker login -u <USER> -p <OC_TOKEN> docker-registry-default.router.default.svc.cluster.local
Login Succeeded

将图像从詹金斯推送到注册表(也可以):

docker push docker-registry-default.router.default.svc.cluster.local/project/app:latest

通过Openshift UI部署映像也可以正常工作,因为在部署映像时,我能够为我的应用选择NamespaceImageStreamTag

但是,吊舱启动时会发生以下错误:

Failed to pull image "docker-registry.default.svc:5000/project/app@sha256:8fd9759XXXXXXXXXXXXXXXf7fXXXXXXXXXXXXXXXXXXXXX": rpc error: code = Unknown desc = Get https://docker-registry.default.svc:5000/v2/: net/http: TLS handshake timeout

有什么主意,为什么我在Openshift可以看到映像但无法在部署时提取映像的情况下看到与TLS相关的错误?

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

这里的问题是Openshift Application节点与Master和Infra节点位于不同的子网中。

解决方法是将“应用程序”节点移到与“主节点”和“基础设施”节点相同的子网中,然后重建群集。

完成所有操作后,尽管可以在Demo库存文件中进行配置,但是如果需要在不同子网中拥有节点,则可以使用

openshift-ansible