这是一个轻量级、独立的 Kubernetes API Mock 服务器,专为 ODH Dashboard (Red Hat OpenShift AI) 的本地前端开发而设计。
它使前端和后端开发人员能够在本地构建、测试和调试交互式仪表板功能,完全不需要连接真实的 OpenShift 集群,也不需要安装繁重的 ODH Operator 组件。
- 完整的 Kubernetes API 模拟:原生地模拟 K8s 的 REST API,正确响应
GET、POST、PUT、PATCH和DELETE请求。 - 内存状态保持:在你的开发会话期间,所有通过前端 UI 创建或修改的资源都会保留在内存中!例如你在界面上新建了一个 Project,它就会在列表中真正显示出来,刷新也不丢失同会话状态。
- 配置数据热重载 (Hot-Reloading):只需在
data/目录中修改.json模拟数据文件并保存,系统就能瞬间捕获更新并自动将数据注入缓存,完全无需重启服务器! - WebSocket Watcher 支持:能够完美模拟 Kubernetes 的
?watch=true接口。当你创建或修改资源,前端的列表会实时自动刷新,就像与真实集群通信一样!
首先,确保你已将 ODH Dashboard 也就是前端的主代码库克隆到本地,并安装好依赖包:
git clone https://github.com/opendatahub-io/odh-dashboard.git
cd odh-dashboard
npm install打开一个新的终端标签页,克隆并进入本仓库(Mock Server),安装它仅有的少量依赖:
git clone <this-repo-url> odh-mockserver
cd odh-mockserver
npm install在 odh-mockserver 目录下运行:
node server.js服务器将会启动在 http://127.0.0.1:8888,请不要关闭这个终端窗口。
打开一个崭新的终端标签页。
Important
在执行任何 Dashboard 启动命令前,这是极其重要的一步!
你必须告诉 ODH Dashboard,让它不去找你本机的真实的 ~/.kube/config 配置文件,而是指向我们 Mock Server 提供的那个伪造凭证。
将 KUBECONFIG 环境变量设定为这个仓库里 kubeconfig.yaml 文件的绝对路径:
cd /path/to/odh-dashboard
# 注意!一定要改成你电脑上 kubeconfig.yaml 的真实【绝对路径】!
export KUBECONFIG=/${ABSOLUTE_PATH}/odh-mockserver/kubeconfig.yaml
# 启动 dashboard 的本地 Node.js 后端与 React 前端
npm run dev片刻之后,程序将自动拉起。你可以在 http://localhost:4010 尽情探索和测试已被注入各种打底展示数据的仪表板啦。
本项目初始所有的假数据全部保存在 data/ 目录中的各个 JSON 文件里。
- Mock Server 启动时,会自动递归读取
data/下所有.json结尾的文件。 - 你可以直接在 JSON 文件里编写单个 K8s 资源对象,也可以写成数组
[...]的形式。 - 热更新魔法:由于我们实现了 fs watch,你每保存一次
.json,那些修改就会立刻以推送形式通知到前端,你能在浏览器里立刻看到效果。
日常开发时由于打断点或者异常退出进程,你可能会发现下一次前端根本无法启动,并且终端不断报诸如 ECONNREFUSED 或 EADDRINUSE 之类的崩溃错误。这通常是因为先前的节点进程成了挂载在端口上的“僵尸进程”。
请使用以下命令干净利落地杀掉任何冗余进程:
1. 杀死 Dashboard 残留的进程(默认后端驻留在 4000 端口,前端占着 4010):
lsof -i :4000 -t | xargs kill -9
lsof -i :4010 -t | xargs kill -92. 杀死被后台挂起或卡死的 Mock Server:
pkill -f "node server.js"
# 或者如果你想更针对性一点:
lsof -i :8888 -t | xargs kill -9清理完毕后,只需回到各自终端,分别重新开启 node server.js 以及 npm run dev (切记:必须确保你所处的那个终端中 KUBECONFIG 已经被正确 export 了!)就可以焕发新生了。