我们正在尝试为其中一个应用程序(在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部署映像也可以正常工作,因为在部署映像时,我能够为我的应用选择Namespace
,ImageStream
和Tag
。
但是,吊舱启动时会发生以下错误:
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相关的错误?
任何帮助将不胜感激。
答案 0 :(得分:0)
这里的问题是Openshift Application节点与Master和Infra节点位于不同的子网中。
解决方法是将“应用程序”节点移到与“主节点”和“基础设施”节点相同的子网中,然后重建群集。
完成所有操作后,尽管可以在Demo库存文件中进行配置,但是如果需要在不同子网中拥有节点,则可以使用
。