# baize **Repository Path**: king_nd/baize ## Basic Information - **Project Name**: baize - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-28 - **Last Updated**: 2026-07-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Baize(白泽) ![Baize Kubernetes Production Ops Console](haibao.png) > **面向生产 Kubernetes 的安全运维驾驶舱。** > Baize 将多集群资源管理、生产排障、受控变更、审计追踪与只读 AI 诊断收敛到一个内部平台,让运维操作更安全、更清晰、更可追溯。 --- ## 一句话介绍 **Baize(白泽)** 是为内部运维团队打造的 Kubernetes 生产运维平台。 它不是一个追求“大而全”的通用 Dashboard,也不是把 `kubectl` 简单搬到浏览器里;Baize 的核心目标是建立一条适合生产环境的可信操作链路: ```text 用户登录 → 后端认证 → RBAC 授权 → 风险确认 → Kubernetes API → 审计记录 → 可追踪结果 ``` 在这条链路上,所有 Kubernetes 写操作都必须经过后端统一鉴权、必要确认与审计;AI 能力在 MVP 阶段保持只读,只用于诊断、解释和建议,不替用户自动执行生产变更。 --- ## 产品定位 Baize 服务于公司内部平台管理员、运维工程师和只读观察者,重点解决生产 Kubernetes 管理中的几个高频问题: - 多个集群之间频繁切换,缺少统一视图 - 排障时需要在 `kubectl`、日志、事件、资源 YAML、监控之间来回跳转 - 生产写操作缺少统一的权限边界、二次确认和审计链路 - 新人排障成本高,缺少基于上下文的解释和建议 - AI 可以辅助分析,但不能越权、不能泄露敏感数据、不能自动修改生产环境 Baize 的设计优先级始终是: 1. **生产安全优先于功能数量** 2. **运维高频工作流优先于炫酷界面** 3. **权限、审计、确认机制优先于快捷操作** 4. **AI 只读辅助,不替人执行高风险动作** --- ## 核心能力 ### 多集群统一管理 - 多 Kubernetes 集群接入与切换 - 集群连通性检测 - 集群环境、版本、节点状态概览 - 面向运维场景的统一资源入口 ### Kubernetes 资源驾驶舱 - Workloads:Pod、Deployment、StatefulSet、DaemonSet、Job、CronJob - Traffic:Service、Ingress、NetworkPolicy、Gateway、HTTPRoute - Config:Namespace、ConfigMap、Secret(默认脱敏) - Storage:PVC、PV、StorageClass - Extension:CRD 只读查看 - 支持资源列表、详情、YAML、事件、日志、关联资源等常用排障视图 ### 生产排障工具箱 - Pod 日志查看 - 多容器 Pod 容器选择 - Event 聚合与关键事件定位 - Workload 状态、Pod 分布、容器状态联动展示 - Pod Terminal(需权限与审计) - Kubectl Terminal / Node Terminal(高风险能力,默认关闭) ### 受控变更 - YAML 查看、编辑与 Server-Side Apply - Deployment / StatefulSet 重启与扩缩容 - 资源模板创建 - 资源删除确认 - 高风险操作需要前端确认,后端再次校验 - 所有 Kubernetes 写操作经过 RBAC 与审计 ### 认证、RBAC 与审计 - 本地账号登录 - HTTP-only Cookie 会话 - `admin` / `ops` / `viewer` 角色模型 - Capability API 驱动前端按钮显隐 - 后端统一鉴权,前端能力声明不作为可信边界 - 登录、集群管理、资源写操作、权限变更、终端、AI 工具调用等关键行为审计 ### 只读 AI 诊断助手 - 上下文感知的资源诊断 - Pod 异常分析 - Deployment rollout 问题总结 - 日志片段解释 - Event 归因与排障建议 - 生成建议命令,但必须由人工确认执行 - AI 工具调用复用当前用户权限 - 禁止 AI 自动删除、重启、扩缩容、Apply YAML、进入终端或读取 Secret 明文 --- ## 架构概览 Baize 当前采用 **Go 单体后端 + React 前端 + SQLite 持久化** 的部署形态,降低内部平台上线和维护复杂度。 ```text Browser / Operator | | HTTPS / Cookie Session / CSRF | WebSocket(Pod/Terminal) / SSE(AI Stream) v +----------------------------------------------------------------+ | Baize | |----------------------------------------------------------------| | React Static Assets | | - React / TypeScript / Vite | | - TanStack Query / React Router / Tailwind | | - YAML Editor / xterm.js / AI Chat | |----------------------------------------------------------------| | Go API | | - Gin Router / Request ID / Recovery / Security Headers | | - Auth / Session / CSRF / Rate Limit | | - RBAC Authorizer / Capability API | | - Audit Service | | - Cluster Manager | | - Kubernetes Resource Service | | - Logs / Events / Terminal / Metrics | | - AI Assistant + Read-only Tools | | - Settings / Secret Encryption | +----------------------------------------------------------------+ | | | GORM | client-go / dynamic client v v SQLite + PVC Kubernetes Clusters future MySQL/PostgreSQL path Prometheus / LLM Provider(可选) ``` 这一架构的关键收益: - 部署简单:一个服务即可提供 API 与前端静态资源 - 安全边界清晰:所有资源读写都经过 Baize 后端 - 认证、RBAC、审计、确认机制集中实现 - 更适合内网环境和小团队长期维护 - 可通过 Docker、Helm、静态 YAML 多种方式交付 --- ## 技术栈 | 模块 | 技术 | | --- | --- | | 后端 | Go、Gin、GORM、client-go、dynamic client | | 前端 | React、TypeScript、Vite、Tailwind CSS、TanStack Query | | 终端 | WebSocket、xterm.js | | AI | OpenAI-compatible API、SSE 流式响应、只读工具调用 | | 数据库 | SQLite(默认),预留 MySQL / PostgreSQL 演进路径 | | 部署 | Docker、Helm Chart、Kubernetes YAML | --- ## 项目结构 ```text cmd/ Go 服务入口 pkg/ 后端核心模块:认证、RBAC、资源、AI、审计、设置、集群管理 ui/ React + TypeScript + Vite 前端 charts/ Helm Chart deploy/ 静态 Kubernetes YAML scripts/ 本地重启、烟测、备份、恢复脚本 docs/ 产品、架构、API、安全、部署与配置文档 static/ 静态资源说明 e2e/ 端到端测试说明 ``` --- ## 快速启动 ### 本地开发 推荐使用项目脚本启动,避免误切数据库文件: ```bash ./scripts/restart-dev.sh ``` 默认地址: - 前端:`http://localhost:5173` - 后端:`http://127.0.0.1:18080` - 数据库:`./baize.db` 也可以手动启动: ```bash # Backend go run ./cmd/baize # Frontend cd ui pnpm install pnpm dev ``` --- ## Docker 部署 构建镜像: ```bash docker build -t baize:latest . ``` 运行试用环境: ```bash docker run -d --name baize \ -p 18080:18080 \ -v baize-data:/var/lib/baize \ baize:latest ``` 生产运行建议显式配置稳定密钥: ```bash docker run -d --name baize \ -p 18080:18080 \ -v baize-data:/var/lib/baize \ -e BAIZE_ENV=production \ -e BAIZE_SESSION_SECRET="" \ -e BAIZE_ENCRYPTION_KEY="" \ -e BAIZE_COOKIE_SECURE=true \ baize:latest ``` 健康检查: ```bash curl http://127.0.0.1:18080/healthz curl http://127.0.0.1:18080/readyz ``` --- ## Helm 部署 最小安装示例: ```bash helm install baize ./charts/baize \ --namespace baize-system \ --create-namespace \ --set secrets.sessionSecret="$SESSION_SECRET" \ --set secrets.encryptionKey="$ENCRYPTION_KEY" ``` 访问: ```bash kubectl -n baize-system port-forward svc/baize 18080:80 ``` 浏览器打开: ```text http://localhost:18080 ``` 更多 Ingress、Gateway、备份、恢复和生产加固步骤见:[`docs/15-production-deploy-guide.md`](docs/15-production-deploy-guide.md)。 --- ## 生产密钥 Baize 生产环境必须使用稳定的随机密钥: | 环境变量 | 作用 | 注意事项 | | --- | --- | --- | | `BAIZE_SESSION_SECRET` | 签名登录 Cookie | 更换后所有用户需要重新登录 | | `BAIZE_ENCRYPTION_KEY` | 加密 kubeconfig 与 AI API Key | **必须长期保存,丢失后历史密文无法恢复** | 生成示例: ```bash openssl rand -base64 48 openssl rand -base64 32 ``` > 不要把 kubeconfig、token、password、Secret data、AI API Key 写入日志、提交到仓库或放入前端持久化存储。 --- ## 上线前检查 ```bash go test ./... go vet ./... cd ui && pnpm type-check && pnpm build ``` 资源模板创建/删除链路测试: ```bash go test ./pkg/resources -run TestResourceTemplatesCanCreateAndDelete -count=1 ``` 冒烟测试: ```bash export BAIZE_SMOKE_BASE_URL=http://127.0.0.1:18080 export BAIZE_SMOKE_ADMIN_USER=admin export BAIZE_SMOKE_ADMIN_PASSWORD= ./scripts/smoke.sh ``` --- ## 安全边界 Baize 的核心安全约束: - 前端不直连 Kubernetes API Server - 后端是唯一可信权限边界 - 所有 Kubernetes 写操作必须经过认证、RBAC、确认和审计 - AI MVP 只读,必须复用当前用户权限 - Secret 默认脱敏,不允许 AI 读取 Secret 明文 - Kubectl Terminal / Node Terminal 默认关闭 - 审计记录只保存安全字段,不保存原始请求体、YAML、日志正文、Secret data、kubeconfig、token 或 API Key --- ## 文档入口 - [AI 项目上下文](docs/00-ai-context.md) - [产品范围](docs/02-product-scope.md) - [总体架构](docs/04-architecture.md) - [认证、RBAC 与审计](docs/09-auth-rbac-audit.md) - [AI 助手设计](docs/10-ai-assistant.md) - [生产部署指南](docs/15-production-deploy-guide.md) - [配置参考](docs/16-config-reference.md) - [Helm Chart](charts/baize/README.md) --- ## 名称寓意 白泽是中国古代神兽,通晓万物之情,晓天下之理。 Baize 借这个名字表达平台的目标:在复杂的 Kubernetes 生产环境中,帮助运维团队看清状态、理解风险、做出可追踪的安全决策。 --- ## License Internal use only unless your organization explicitly changes the distribution policy.