Cube Studio 项目内网离线部署完全指南
前言
在企业级AI开发环境中,出于安全和合规考虑,很多生产环境都是完全隔离的内网环境。本文将详细介绍如何在完全无外网连接的内网环境中部署Cube Studio项目,以及在内网中存在部分联网机器时的混合部署方案。
一、准备工作
1.1 基础环境要求
在开始部署前,请确保内网机器已安装以下组件:
- Docker:容器运行时环境
- Docker Compose:容器编排工具
- iptables:网络流量控制工具
1.2 离线资源准备
在外网机器上执行以下步骤准备离线资源包:
mkdir offline
cd offline
# 下载基础工具
wget https://cube-studio.oss-cn-hangzhou.aliyuncs.com/install/kubectl
wget https://githubfast.com/goharbor/harbor/releases/download/v2.11.1/harbor-offline-installer-v2.11.1.tgz
# 下载预训练模型
wget https://cube-studio.oss-cn-hangzhou.aliyuncs.com/inference/resnet50.onnx
wget https://cube-studio.oss-cn-hangzhou.aliyuncs.com/inference/resnet50-torchscript.pt
wget https://cube-studio.oss-cn-hangzhou.aliyuncs.com/inference/resnet50.mar
wget https://cube-studio.oss-cn-hangzhou.aliyuncs.com/inference/tf-mnist.tar.gz
wget https://cube-studio.oss-cn-hangzhou.aliyuncs.com/inference/decisionTree_model.pkl
# 下载训练数据集
wget https://cube-studio.oss-cn-hangzhou.aliyuncs.com/pipeline/coco.zip
wget https://docker-76009.sz.gfp.tencent-cloud.com/github/cube-studio/aihub/deeplearning/cv-tinynas-object-detection-damoyolo/dataset/coco2014.zip
将准备好的offline目录完整拷贝到内网机器上。
二、内网环境基础配置
2.1 安装kubectl工具
在内网机器上安装kubectl:
cd offline
chmod +x kubectl && cp kubectl /usr/bin/ && cp kubectl /usr/local/bin/
2.2 部署内网镜像仓库
- 安装Harbor作为内网私有镜像仓库
- 创建cube-studio和rancher两个项目,分别用于存储相关镜像
- 在所有机器上配置Docker信任该私有仓库(非HTTPS需要额外配置)
2.3 数据目录准备
将离线资源转移到工作目录:
cp -r offline /data/k8s/kubeflow/pipeline/workspace/admin/
三、镜像迁移方案
3.1 Rancher镜像迁移
有两种方式将Rancher镜像迁移到内网:
方式一:直接推送至内网仓库
- 修改all_image.py中的仓库地址
- 在外网机器执行pull_rancher_images.sh推送镜像
方式二:离线文件传输
- 在外网机器执行rancher_image_save.sh打包镜像
- 将打包文件传输到内网
- 在内网执行rancher_image_load.sh导入镜像
3.2 Cube Studio基础镜像迁移
同样有两种迁移方式:
方式一:直接推送
- 修改all_image.py中的仓库地址
- 在外网执行push_harbor.sh推送镜像
方式二:离线文件传输
- 在外网执行image_save.sh打包镜像
- 传输到内网后执行image_load.sh导入
四、构建内网专用Cube Studio镜像
4.1 修改镜像配置
在install/kubernetes目录下执行Python脚本替换镜像地址:
cube_repo='<内网镜像仓库ip>:<内网镜像仓库端口>/cube-studio/'
import os
def fix_file(file_path):
# 实现文件内容替换
...
fix_file('cube/overlays/config/config.py')
fix_file('../../myapp/init')
fix_file('../../myapp/init-en')
4.2 构建前后端镜像
cube_repo='<内网镜像仓库ip>:<内网镜像仓库端口>/cube-studio/'
# 构建前端镜像
docker build --network=host -t ${cube_repo}kubeflow-dashboard-frontend:offline -f install/docker/dockerFrontend/Dockerfile .
docker push ${cube_repo}kubeflow-dashboard-frontend:offline
# 构建后端镜像
docker build --network=host -t ${cube_repo}kubeflow-dashboard:offline --build-arg TARGETARCH=amd64 -f install/docker/Dockerfile .
docker push ${cube_repo}kubeflow-dashboard:offline
五、内网部署Cube Studio
5.1 修改部署脚本
- 修改init_node.sh中的pull_images.sh为pull_harbor.sh
- 注释掉start.sh中的kubectl下载部分
- 修改cube/overlays/kustomization.yml中的镜像地址
5.2 执行部署
按照标准部署流程进行部署,但使用内网镜像仓库中的镜像。
六、内网环境特殊配置
6.1 Web界面配置
- 修改hubsecret为内网仓库的认证信息
- 更新配置文件中的仓库地址和IP信息
- 修改内置pipeline中的数据获取命令为本地拷贝
6.2 推理服务调整
将推理服务启动命令中的在线下载改为从本地目录拷贝:
# 原命令
wget https://xxxx/xx/.zip
# 修改为
cp /mnt/admin/offline/xx.zip ./
七、混合网络环境部署方案
对于内网中存在部分可联网机器的情况,可采用中转方案。
7.1 设置中转服务器
在可联网机器上部署Nginx中转:
docker run --name proxy-repo -d --restart=always --network=host \
-v $PWD/nginx-https/apt-yum-pip-source.conf:/etc/nginx/nginx.conf nginx
7.2 配置内网机器Host
在内网机器上配置Host指向中转服务器:
<中转服务器IP> mirrors.aliyun.com
<中转服务器IP> registry-1.docker.io
...
7.3 Kubernetes DNS配置
修改CoreDNS配置,添加域名解析:
hosts {
<中转服务器IP> mirrors.aliyun.com
<中转服务器IP> registry-1.docker.io
...
fallthrough
}
7.4 容器内软件源配置
配置容器内的软件源使用中转:
pip源配置:
pip3 config set global.index-url https://mirrors.aliyun.com/pypi/simple
apt源配置(Ubuntu 20.04示例):
deb https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
...
总结
本文详细介绍了Cube Studio项目在内网环境中的完整部署方案,包括完全离线环境和混合网络环境两种场景。通过合理的镜像迁移、配置调整和中转设置,可以在严格的内网环境中成功部署Cube Studio,为企业的AI开发提供安全可靠的平台支持。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



