Orchest项目开发环境搭建与工作流指南
前言
Orchest是一个基于Kubernetes的数据科学工作流编排平台,本文将为开发者详细介绍如何搭建Orchest项目的开发环境以及开发工作流程。通过本文,你将掌握从环境准备到代码修改、测试验证的完整开发流程。
开发环境准备
必备软件安装
开发Orchest项目需要以下软件环境:
-
编程语言环境
- Python 3.x:项目主要开发语言
- Go语言:用于orchest-controller组件开发
-
容器与编排工具
- Docker:构建项目镜像
- minikube:本地Kubernetes集群
- kubectl:Kubernetes集群管理工具
- helm:Kubernetes包管理工具
-
前端开发工具
- Node.js和npm:前端开发基础
- pnpm:更高效的Node.js包管理工具
-
开发辅助工具
- pre-commit:代码提交前检查
- Google Chrome:集成测试运行环境
可选推荐工具
- k9s:Kubernetes集群终端管理界面
- jq:JSON数据处理工具
- gron:使JSON数据可grep搜索
依赖项配置
安装完基础软件后,需要配置开发环境:
# 安装pre-commit钩子
pre-commit install
# 安装前端开发依赖
npm run setup --install && pnpm i
# 安装Orchest CLI工具
python3 -m pip install -e orchest-cli
# 安装文档构建依赖
python3 -m pip install -r docs/requirements.txt
开发集群配置
建议使用minikube创建本地开发集群,并将代码仓库挂载到集群中:
# 删除已有集群
minikube delete
# 创建新集群并挂载代码仓库
minikube start \
--cpus max \
--memory max \
--addons ingress metrics-server \
--mount-string="$(pwd):/orchest-dev-repo" --mount
开发模式安装Orchest
镜像构建要点
-
Docker环境配置:确保使用minikube的Docker守护进程
eval $(minikube -p minikube docker-env)
-
镜像标签管理:构建镜像时使用正确的标签非常重要,控制器会根据标签管理集群
# 设置镜像标签为最新版本
export TAG="$(orchest version --latest)"
# 构建最小化镜像集
scripts/build_container.sh -M -t $TAG -o $TAG
安装Orchest
使用开发模式安装,避免从远程拉取资源:
orchest install --dev
安装完成后,可以通过以下方式访问:
- Linux:使用
minikube ip
获取的IP - macOS:运行
sudo minikube tunnel
后访问localhost
开发工作流程
增量开发模式
对于前端(webserver)、API服务和认证服务的开发,可以使用热重载模式:
# 启动前端开发服务器
pnpm run dev
# 切换到开发模式
orchest patch --dev
这种模式下,代码修改会立即生效,无需重新构建镜像。
镜像重建流程
当修改了不支持热重载的服务时,需要重建镜像:
- 确保使用minikube的Docker环境
- 重建特定服务的镜像
scripts/build_container.sh -i 服务名 -t $TAG -o $TAG
- 删除对应的Pod使其重建
kubectl delete pods -n orchest -l "app.kubernetes.io/name=服务名"
完整重装流程
当进行大规模修改或切换分支时,建议完全重装:
# 卸载Orchest
orchest uninstall
# 切换分支
git switch 新分支
# 重建镜像
eval $(minikube -p minikube docker-env)
export TAG="$(orchest version --latest)"
scripts/build_container.sh -M -t $TAG -o $TAG
# 重新安装
orchest install --dev
代码提交与PR指南
提交前检查
确保:
- pre-commit检查通过
- 单元测试和集成测试通过
- 在非开发模式下验证过修改
创建PR注意事项
项目采用gitflow工作流:
- 主分支:master(稳定版)
- 开发分支:dev(集成最新开发)
- PR应合并到dev分支而非master
最佳实践
- Python依赖管理:使用pip-tools管理依赖,修改
requirements.in
后运行pip-compile
生成锁定版本 - 多节点开发:使用提供的脚本简化多节点环境下的开发
- 环境清理:避免频繁使用
minikube delete
,以保留Docker缓存加速重建
通过本文介绍的工作流程,开发者可以高效地进行Orchest项目的开发和测试。掌握这些方法后,你将能够快速迭代和验证你的代码修改。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考