ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

从源码构建并运行 Headlamp:本地开发环境搭建实战指南

从源码构建并运行 Headlamp:本地开发环境搭建实战指南 从源码构建并运行 Headlamp本地开发环境搭建实战指南【免费下载链接】headlampA Kubernetes web UI that is fully-featured, user-friendly and extensible项目地址: https://gitcode.com/GitHub_Trending/he/headlamp导读Headlamp 是一款开源、可扩展的 Kubernetes Web UI本文是 Headlamp 插件开发系列教程的第 1 篇讲解如何从源码构建并在本地以开发模式运行 Headlamp。读完本文你将掌握完整的源码构建链路Go 后端 React 前端 Electron 桌面端、开发模式下的热重载工作流以及如何把本地集群如 minikube接入 Headlamp为后续开发插件或向项目贡献代码打下基础。为什么需要从源码运行 HeadlampHeadlamp 提供了清晰、现代的 Kubernetes 集群管理界面支持多集群管理、强大的插件系统定制以及桌面端与集群内部署两种形态。它的代码库由三个核心组件构成组件技术栈职责前端frontendTypeScript、React用户交互的 Web UI后端backendGoAPI 服务器代理并转发对 Kubernetes 的请求桌面应用appElectron面向 macOS、Windows、Linux 的原生应用外壳从源码构建意味着你可以修改 Headlamp 自身、在开发模式下以热重载方式调试插件并以贡献者身份参与项目开发。根目录的 package.json 是全部构建命令的编排中枢下文所有命令均基于它展开。环境准备Prerequisites必需工具工具版本要求说明Git最新版本拉取代码Node.js≥ 22.0.0建议 LTS前端与构建工具链npm≥ 11.0.0随 Node.js 一起安装Go≥ 1.25.9编译后端服务需要说明的是根 package.json 的engines字段声明node 22.6.0、npm 11.0.0前端 frontend/package.json 同样声明node 22.0.0后端 backend/go.mod 则使用go 1.26.0并指定toolchain go1.26.7。因此建议使用上述较新的稳定版本避免构建期报版本不匹配错误。可选工具需要本地集群做联调时工具用途minikube在本地启动一个单节点 Kubernetes 集群kubectlKubernetes 命令行客户端用于验证集群连通性验证安装node --version # 应为 v22.0.0 或更高 npm --version # 应为 11.0.0 或更高 go version # 应为 go1.25.9 或更高 git --version # 任意较新版本克隆仓库方式 A先 Fork 再克隆适合贡献者在代码托管平台 fork headlamp 仓库上游地址为kubernetes-sigs/headlamp仓库根 package.json 的repository字段也指向该地址克隆你自己的 forkgit clone https://github.com/YOUR_USERNAME/headlamp.git cd headlamp方式 B直接克隆git clone https://github.com/kubernetes-sigs/headlamp.git cd headlamp仓库结构总览Headlamp 是一个 monorepo三个主要组件与插件体系、文档一同组织在根目录下所有构建命令都由根目录的package.json统一编排headlamp/ ├── frontend/ # React/TypeScript Web UI │ ├── src/ # 源码、组件与测试 │ └── package.json # 前端依赖 │ ├── backend/ # Go 服务器 │ ├── cmd/ # 主程序入口headlamp.go 等 │ ├── pkg/ # 可复用包auth、k8cache、helm、kubeconfig 等 │ └── go.mod # Go 依赖 │ ├── app/ # Electron 桌面应用 │ ├── electron/ # 主进程代码 │ └── package.json # 应用依赖 │ ├── plugins/ # 插件体系 │ ├── examples/ # 供学习的示例插件 │ └── headlamp-plugin/ # 插件开发工具链 │ ├── docs/ # 文档Markdown ├── package.json # 根构建/运行脚本 └── README.md # 项目总览关键认知根 package.json 中的 npm scripts 会依次进入frontend/、backend/、app/子目录执行构建与启动。例如backend:build实际执行cd backend go build ... -o ./headlamp-server ./cmdfrontend:start实际执行cd frontend npm start因此请始终在仓库根目录运行下文命令。安装依赖从仓库根目录依次安装# 安装根依赖concurrently、tsx 等编排工具 npm install # 安装前端依赖 npm run frontend:install # 安装桌面应用依赖仅在需要运行桌面端时执行 npm run app:install注意Go 依赖会在构建阶段由go build自动拉取见 backend/go.mod无需单独执行安装命令。一键安装全部依赖npm run install:all从根 package.json 的实现看install:all依次执行npm install、frontend:install、backend:build同时完成 Go 依赖拉取与后端编译、app:install和tools:installi18n 与发布工具链是最省心的初始化方式。构建代码一次构建全部npm run build根 package.json 中该命令按顺序执行backend:build和frontend:build。单独构建# 仅构建后端Go 编译产出 backend/headlamp-server 二进制 npm run backend:build # 仅构建前端TypeScript 编译输出到 frontend/build/ npm run frontend:build注意构建只产出产物不会启动服务。请继续阅读下一节启动 Headlamp。以开发模式运行方式 1前后端一起启动推荐npm start根 package.json 中start通过concurrently同时拉起后端与前端并按颜色区分日志 蓝色后端日志 绿色前端日志访问入口前端界面http://localhost:3000后端 APIhttp://localhost:4466打开 http://localhost:3000 即可看到 Headlamp 欢迎页。端口分工在源码中有明确依据前端 frontend/vite.config.ts 将 dev server 端口固定为 3000并把/api、/clusters、/plugins、/config、/oidc、/wsMultiplexer含 WebSocket等路径统一代理到http://localhost:${HEADLAMP_PORT || 4466}指向的后端后端默认监听端口 4466其-dev标志Allow connections from other origins见 backend/pkg/config/config.go允许来自前端的跨源请求。方式 2前后端分两个终端单独运行终端 1 —— 后端npm run backend:build # 先构建必需 npm run backend:start终端 2 —— 前端npm run frontend:start提示单独运行适合只想重启某一个组件如仅改后端或仅改前端的场景。根 package.json 中的backend:start实际会以-dev模式启动backend/headlamp-server并预置HEADLAMP_BACKEND_TOKENheadlamp、开启 Helm 与动态集群dynamic-clusters端点、允许代理https://artifacthub.io/*前端 frontend/package.json 的start脚本同样注入REACT_APP_HEADLAMP_BACKEND_TOKENheadlamp与后端 token 配对使用。运行桌面应用桌面应用把前端与后端封装成原生程序。方式 1完整应用模式构建前端并运行完整 Electron 应用npm run app:start从根 package.json 看app:start会先执行app/scripts/setup-plugins.ts准备插件目录再调用app下的start脚本即node scripts/start.js。方式 2仅应用外壳开发模式如果你已经通过npm start跑起了后端与前端可以只启动 Electron 外壳npm run app:start:client它对应 app/package.json 的dev-only-app脚本以ELECTRON_DEV1、ELECTRON_START_URLhttp://localhost:3000、EXTERNAL_SERVERtrue启动 Electron直接连接正在运行的 dev server——适合快速迭代应用专属代码。方式 3三者一起启动npm run start:with-app根 package.json 通过concurrently同时启动后端、前端与 Electron 外壳日志按backend,frontend,app分别着色蓝、绿、黄。连接 Kubernetes 集群Headlamp 会自动从 kubeconfig 文件探测 Kubernetes 集群。默认读取 macOS/Linux 下的~/.kube/config或 Windows 下的%USERPROFILE%\.kube\config。若配置了多个集群Headlamp 会全部列出并允许切换。已有可用集群如果kubectl get nodes已经能正常访问集群可以直接跳过本节——Headlamp 会自动识别。用 minikube 快速搭建本地集群# 启动本地集群 minikube start # 验证集群运行状态 kubectl get nodes然后刷新 Headlamp 页面即可看到集群被自动发现。集群探测逻辑由后端 kubeconfig 相关模块实现可参考 backend/pkg/kubeconfig 下的 contextStore、watcher 等实现文件。故障排查端口被占用# 查找并结束占用 3000 端口前端的进程 lsof -i :3000 # macOS/Linux netstat -ano | findstr :3000 # Windows # 查找并结束占用 4466 端口后端的进程 lsof -i :4466 # macOS/Linux后端无法启动确认二进制是否存在ls backend/headlamp-server # macOS/Linux dir backend\headlamp-server.exe # Windows如果缺失重新构建npm run backend:buildNode/Go 版本不匹配node --version # 需 ≥22.0.0 npm --version # 需 ≥11.0.0 go version # 需 ≥1.25.9找不到 kubeconfigHeadlamp 默认读取~/.kube/config确认文件存在cat ~/.kube/config # macOS/Linux type %USERPROFILE%\.kube\config # Windows彻底清理并重建遇到疑难问题时清理后从头构建npm run clean npm run install:all npm run build根 package.json 的clean会删除frontend/build、frontend/node_modules、app/node_modules、app/dist、backend/headlamp-server(.exe)及根node_modules恢复干净的初始状态。快速参考任务命令安装全部依赖npm run install:all构建全部npm run build开发模式后端 前端npm start运行桌面应用npm run app:start运行桌面应用开发模式连接已运行服务npm run app:start:client连同桌面应用一起运行全部npm run start:with-app仅构建后端npm run backend:build仅构建前端npm run frontend:build运行测试npm test代码检查npm run lint清理构建产物npm run clean下一步现在 Headlamp 已经以开发模式在本机运行可以继续深入教程 2创建你的第一个插件—— 在 Headlamp 中创建第一个插件架构总览—— 理解 Headlamp 的整体架构前端开发—— 深入前端开发后端开发—— 了解后端服务器贡献指南—— 如何提交你的改动遇到问题时也可以查阅仓库内的 FAQ 与安装文档如 Linux 安装、macOS 安装、Windows 安装或在 Kubernetes Slack 的 #headlamp 频道与 GitHub Issues 中寻求帮助。【免费下载链接】headlampA Kubernetes web UI that is fully-featured, user-friendly and extensible项目地址: https://gitcode.com/GitHub_Trending/he/headlamp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表