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

如何将Nexus配置为GKE集群可用的私有镜像注册表

将Nexus配置为GKE私有镜像注册表的可行方案

完全可以实现,核心要保障网络连通、认证配置正确、证书信任配置符合要求,具体操作步骤如下:

1. 打通GKE到Nexus的网络通路

  • 如果部署Nexus的GCP主机和GKE集群在同一VPC下,直接在GCP防火墙规则中放行GKE集群节点、Pod的IP段访问Nexus的镜像仓库端口(默认Docker私有仓库端口一般为5000,以你实际配置的端口为准)、WEB服务端口(80/443)的入站规则即可,优先走内网避免公网传输风险
  • 如果两者跨VPC,可配置VPC对等连接实现内网互通;如果要走公网访问,给Nexus绑定公网IP后,放行GKE节点的公网出口IP段的访问请求即可
  • Nexus侧配置需要提前启用Docker Bearer Token Realm,否则后续镜像拉取的认证会失败

2. 配置HTTPS证书信任

GKE默认只允许拉取受信任CA签发证书的HTTPS镜像仓库的镜像,两种配置方案可选:

  • 给Nexus服务配置公网可信的SSL证书,无需额外修改GKE节点配置
  • 如果使用自签证书,需要将自签根证书批量注入所有GKE节点的系统根证书信任存储中,使用Container-Optimized OS的节点可通过DaemonSet实现批量配置

注意:非生产环境如果临时使用HTTP协议的Nexus仓库,需要根据GKE节点的容器运行时(Docker/Containerd)对应修改配置,将Nexus地址加入不安全镜像仓库列表,生产环境强烈建议使用HTTPS。

3. 配置GKE镜像拉取凭证

首先在kubectl上下文连接到目标GKE集群后,执行以下命令创建镜像拉取Secret:

kubectl create secret docker-registry nexus-regcred \
  --docker-server=<你的Nexus镜像仓库地址,例:nexus.internal:5000> \
  --docker-username=<Nexus中具有镜像拉取权限的账号> \
  --docker-password=<对应账号的密码> \
  --docker-email=<可选,填写任意有效邮箱即可>

使用凭证有两种方式:

  • 在工作负载的YAML配置中指定imagePullSecrets字段,示例如下:
    spec:
      containers:
      - name: my-app
        image: nexus.internal:5000/my-app:v1
      imagePullSecrets:
      - name: nexus-regcred
    
  • 如果需要某个命名空间下所有工作负载默认都可以使用该凭证,将该Secret绑定到对应命名空间的default ServiceAccount即可

4. 验证配置正确性

提交一个使用Nexus私有镜像的测试Deployment,查看Pod是否能正常拉取镜像启动,如果拉取失败,可通过kubectl describe pod <对应Pod名称>查看事件日志,排查是连通性、证书、还是认证配置错误。

内容的提问来源于stack exchange,提问作者Sugatur Deekshith S N

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 04:27:03