我们正在尝试为其中一个应用程序(在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
从 Jenkins 成功登录到注册表:
bash-4.2$ docker login -u <USER> -p <OC_TOKEN> docker-registry-default.router.default.svc.cluster.local
Login Succeeded
将图像从 Jenkins 推送到注册表(也可以):
docker push docker-registry-default.router.default.svc.cluster.local/project/app:latest
通过Openshift UI部署镜像也可以正常工作,因为在部署镜像时,我能够为我的应用选择
Namespace
,ImageStream
和Tag
。但是,pod启动时会发生以下错误:
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相关的错误吗?
任何帮助,将不胜感激。
最佳答案
这里的问题是Openshift Application节点与Master和Infra节点位于不同的子网上。
解决方法是将“应用程序”节点移到与“主节点”和“基础设施”节点相同的子网中,然后重建群集。
这样做之后,一切都可以进行,但是如果需要在不同子网中有节点,则可以在openshift-ansible库存文件中对其进行配置。
https://docs.okd.io/latest/install/configuring_inventory_file.html
关于docker - Openshift:TLS错误从其自己的注册表中提取Docker镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51293445/