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

如何配置vcluster以使用内部Docker Registry证书?

如何配置vcluster以使用内部Docker Registry证书?

我来帮你梳理几种靠谱的配置方法,都是实际部署中验证过的,你可以根据自己的环境选择:

方法一:直接挂载宿主机上的证书目录

如果你的宿主机节点已经配置好了registry证书(就是你提到的/etc/docker/certs.d/docker-registry.docker-registry:5000/ca.crt),可以直接通过hostPath把这个目录挂载到vcluster的syncer容器里,同时配置containerd使用这些证书。

修改vcluster的values.yaml配置文件,添加以下内容:

syncer:
  extraVolumes:
  - name: registry-certs
    hostPath:
      path: /etc/docker/certs.d/docker-registry.docker-registry:5000
      type: Directory
  extraVolumeMounts:
  - name: registry-certs
    mountPath: /etc/docker/certs.d/docker-registry.docker-registry:5000
    readOnly: true

containerd:
  extraConfig: |
    [plugins."io.containerd.grpc.v1.cri".registry.configs."docker-registry.docker-registry:5000".tls]
      ca_file = "/etc/docker/certs.d/docker-registry.docker-registry:5000/ca.crt"

之后用helm升级或安装vcluster即可。这种方法的好处是不用额外维护证书副本,直接复用宿主机的配置。

方法二:通过ConfigMap管理证书

如果不想依赖宿主机的证书文件(比如宿主机节点可能有变动),可以把证书打包成ConfigMap,再挂载到vcluster组件中:

  1. 首先在vcluster所在的命名空间创建ConfigMap:
kubectl create configmap registry-ca --from-file=ca.crt=/etc/docker/certs.d/docker-registry.docker-registry:5000/ca.crt -n <你的vcluster命名空间>
  1. 修改values.yaml配置,挂载ConfigMap并配置containerd:
syncer:
  extraVolumes:
  - name: registry-certs
    configMap:
      name: registry-ca
  extraVolumeMounts:
  - name: registry-certs
    mountPath: /etc/ssl/certs/docker-registry-ca.crt
    subPath: ca.crt
    readOnly: true

containerd:
  extraConfig: |
    [plugins."io.containerd.grpc.v1.cri".registry.configs."docker-registry.docker-registry:5000".tls]
      ca_file = "/etc/ssl/certs/docker-registry-ca.crt"
  1. 用helm部署或更新vcluster:
helm upgrade --install my-vcluster vcluster/vcluster -n <你的vcluster命名空间> -f values.yaml

方法三:直接在helm安装命令中传递参数

如果不想写values.yaml,可以直接把配置参数嵌在helm命令里,一步到位:

helm install my-vcluster vcluster/vcluster \
  --namespace <你的vcluster命名空间> \
  --create-namespace \
  --set syncer.extraVolumes[0].name=registry-certs \
  --set syncer.extraVolumes[0].configMap.name=registry-ca \
  --set syncer.extraVolumeMounts[0].name=registry-certs \
  --set syncer.extraVolumeMounts[0].mountPath=/etc/ssl/certs/docker-registry-ca.crt \
  --set syncer.extraVolumeMounts[0].subPath=ca.crt \
  --set containerd.extraConfig='[plugins."io.containerd.grpc.v1.cri".registry.configs."docker-registry.docker-registry:5000".tls]\n  ca_file = "/etc/ssl/certs/docker-registry-ca.crt"'

注意事项

  • 如果你vcluster使用的是Docker而非默认的containerd,需要把证书挂载到/etc/docker/certs.d/目录下,配置逻辑类似。
  • 确保vcluster的pod有足够权限访问hostPath(方法一),或者ConfigMap存在于正确的命名空间(方法二、三)。

备注:内容来源于stack exchange,提问作者Fabrice Jammes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 11:38:20