You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenShift拉取Harbor镜像失败:x509未知权威证书签名错误

问题描述
  • Deployment包含两个镜像:
    • redis:alpine:拉取正常
    • 私有Harbor仓库镜像:OpenShift拉取失败
  • Harbor使用非自签名SSL证书,本地以容器身份可正常登录、拉取/推送镜像,但OpenShift拉取时报错:

Failed to pull image <myregistry.net> : rpc error: code = Unknown desc = pinging container registry myregistry.net: Get "https://.net/v2/": x509: certificate signed by unknown authority

  • 本地/etc/docker/certs.d/myregistry目录存在ca.crt,已尝试官方文档的ConfigMap添加CA方法,但未生效
解决方案

1. 确认CA证书完整性

确保使用的ca.crt是Harbor仓库的完整根CA证书链(若证书由中间CA签发,需包含根CA+中间CA的完整链),可通过以下命令生成完整链证书:

openssl s_client -connect myregistry.net:443 -showcerts </dev/null 2>/dev/null | openssl x509 -outform PEM > full-chain.crt

后续操作使用生成的full-chain.crt替换原有ca.crt。

2. 配置集群级可信CA

OpenShift 4.x仅给Builds添加CA可能无效,需将CA注入集群节点可信存储:

  • 创建包含CA证书的ConfigMap:
oc create configmap harbor-ca --from-file=ca.crt=./full-chain.crt -n openshift-config
  • 更新集群Proxy配置,绑定可信CA:
oc patch proxy/cluster --type=merge --patch='{"spec":{"trustedCA":{"name":"harbor-ca"}}}'
  • 等待节点更新完成,查看节点状态确认:
oc get nodes

所有节点状态变为Ready后,重新触发镜像拉取。

3. 为命名空间配置镜像拉取Secret(可选)

若集群级配置仍不生效,在Deployment所在命名空间创建拉取Secret:

  • 创建Secret(替换占位符内容):
oc create secret docker-registry harbor-secret \
  --docker-server=myregistry.net \
  --docker-username=<harbor-用户名> \
  --docker-password=<harbor-密码> \
  --docker-email=<你的邮箱> \
  --from-file=.dockerconfigjson=~/.docker/config.json \
  -n <你的命名空间>
  • 修改Deployment,添加镜像拉取Secret引用:
spec:
  template:
    spec:
      imagePullSecrets:
        - name: harbor-secret

4. 验证节点CA同步状态

登录任意集群节点,检查/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem是否包含Harbor的CA证书内容,若未包含则手动同步:

update-ca-trust extract
注意事项
  • 确保Harbor域名在OpenShift集群内部可正常解析,避免DNS问题导致证书验证失败
  • 若使用OpenShift 3.x,需将CA证书添加到/etc/origin/node/pki/ca-bundle.crt并重启节点服务

内容的提问来源于stack exchange,提问作者Murat Karaselcuk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 05:03:21