[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-11244":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":15,"stars7d":16,"stars30d":17,"stars90d":14,"forks30d":14,"starsTrendScore":18,"compositeScore":19,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":9,"pushedAt":9,"updatedAt":24,"readmeContent":25,"aiSummary":26,"trendingCount":14,"starSnapshotCount":14,"syncStatus":27,"lastSyncTime":28,"discoverSource":29},11244,"Armada","zcw576020095\u002FArmada","zcw576020095","告别 kubectl 切换之苦 —— 一个面板吃透 Kubernetes 多集群运维：覆盖                Deployment\u002FPod\u002FService\u002FIngress\u002FConfigMap\u002FSecret\u002FPVC 全资源 CRUD，支持在线编辑    YAML、一键扩缩容与重启、实时日志流、Pod 终端直连、节点 Cordon\u002FDrain、细粒度   RBAC 权限、全平台操作审计、Prometheus 监控集成，让 K8s                           运维从命令行时代跃迁到可视化 Web 时代",null,"HTML",353,15,22,0,12,31,117,36,86.11,false,"main",true,[],"2026-06-12 04:00:54","# Armada\n\n![Python](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPython-3.10+-3776AB?logo=python&logoColor=white)\n![Django](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDjango-6.0.4-092E20?logo=django&logoColor=white)\n![Kubernetes](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FKubernetes-Client_v35-326CE5?logo=kubernetes&logoColor=white)\n![Tailwind CSS](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTailwind_CSS-4.2-38B2AC?logo=tailwindcss&logoColor=white)\n![DaisyUI](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDaisyUI-5.5-5A0EF8?logo=daisyui&logoColor=white)\n![Prometheus](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPrometheus-Ready-E6522C?logo=prometheus&logoColor=white)\n![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-Private-red)\n![Platform](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPlatform-Linux_|_macOS_|_Windows-lightgrey)\n\n> 告别 kubectl 命令行切换之苦 —— 一个面板管理你所有的 Kubernetes 集群\n\nArmada 是一个专业的 Web 端 Kubernetes 多集群管理面板，具备现代化商务风格 UI、细粒度用户权限控制、实时资源同步和集成监控等功能。\n\n---\n\n## 功能特性\n\n### 多集群管理\n- 通过 kubeconfig 添加\u002F导入 Kubernetes 集群\n- 查看集群详情（版本、API Server、节点数量、状态）\n- 编辑集群显示名称、描述和 kubeconfig\n- 后台刷新集群信息\n\n### 仪表盘 & 监控\n- **接入 Prometheus 时**：CPU\u002F内存使用率图表、节点指标热力图、GPU 节点统计\n- **未接入 Prometheus 时**：节点容量概览、资源分配展示\n- 集群健康状态实时指示\n\n### 资源管理\n全面管理核心 K8s 资源类型：\n\n| 分类 | 资源 |\n|------|------|\n| **工作负载** | Deployments、StatefulSets、DaemonSets、Pods |\n| **网络** | Services、Ingresses |\n| **配置** | ConfigMaps、Secrets |\n| **存储** | PersistentVolumeClaims |\n| **命名空间** | Namespace 管理 |\n\n支持的操作：\n- **查看**：列表展示、YAML 查看、资源详情\n- **编辑**：在线 YAML 编辑、一键扩缩容（Deployments\u002FStatefulSets）、ConfigMap\u002FSecret 修改\n- **操作**：重启、删除、Cordon\u002FUncordon\u002FDrain（节点）\n- **日志**：Pod 实时日志流查看\n- **终端**：Pod 终端直连（exec 进入容器，免 kubectl）\n\n### 用户与权限管理\n- **基于角色的访问控制**：管理员（Admin）和普通用户（User）两种角色\n- **模块级权限控制**：按集群按模块进行细粒度权限管理（共 13 个模块）\n  - Dashboard、Cluster、Node、Deployment、StatefulSet、DaemonSet、Pod、Service、Ingress、ConfigMap、Secret、PVC、Namespace\n- **权限类型**：查看（只读）或编辑（完全控制，包括删除）\n- 基于 Session 的认证机制，自定义中间件强制权限校验\n\n### 技术亮点\n- **Kubeconfig 加密存储**（Fernet 加密）\n- **后台资源同步**：守护线程每 60 秒同步 K8s 资源\n- **本地数据库缓存**：资源加载速度比直接调用 K8s API 快 100 倍以上\n- **Prometheus 集成**：可选指标监控，优雅降级\n- **AJAX 动态加载**：轻量 HTML 骨架 + JSON API\n\n---\n\n## 功能截图\n\n> 截图集中存放在 [`docs\u002Fscreenshots\u002F`](docs\u002Fscreenshots\u002F)，命名规范见该目录的 [README](docs\u002Fscreenshots\u002FREADME.md)。\n\n### 登录与权限\n\n| 登录页 | 用户管理 | 权限管理 |\n|:---:|:---:|:---:|\n| ![登录页](docs\u002Fscreenshots\u002Flogin.png) | ![用户管理](docs\u002Fscreenshots\u002Fusers.png) | ![权限管理](docs\u002Fscreenshots\u002Fpermissions.png) |\n| 支持账户禁用提示 \u002F 密码显隐切换 \u002F CSRF 失效友好回登录 | 管理员 \u002F 普通用户两种角色 | 按集群 × 模块的细粒度权限 |\n\n### 集群与节点\n\n| 集群列表 | 新增集群 | 节点管理 |\n|:---:|:---:|:---:|\n| ![集群列表](docs\u002Fscreenshots\u002Fclusters-list.png) | ![新增集群](docs\u002Fscreenshots\u002Fcluster-add.png) | ![节点管理](docs\u002Fscreenshots\u002Fnodes.png) |\n| 多集群一键切换 | kubeconfig 加密存储 | Cordon \u002F Uncordon \u002F Drain |\n\n### 仪表盘\n\n![仪表盘](docs\u002Fscreenshots\u002Fdashboard.png)\n\n接入 Prometheus 时展示 CPU \u002F 内存 \u002F GPU 节点指标；未接入时优雅降级到节点容量概览。\n\n### 资源管理\n\n| Deployment 列表 | Deployment 详情 | 回滚到历史版本 |\n|:---:|:---:|:---:|\n| ![Deployment 列表](docs\u002Fscreenshots\u002Fdeployments.png) | ![Deployment 详情](docs\u002Fscreenshots\u002Fdeployment-detail.png) | ![Deployment 回滚](docs\u002Fscreenshots\u002Fdeployment-rollback.png) |\n| 详情 \u002F YAML \u002F 扩缩 \u002F 重启 \u002F 回滚 \u002F 删除 | 概览 + Events + 关联 Pods | 列出所有 ReplicaSet 历史，一键回滚 |\n\n| 命名空间 | 扩缩容 | 删除级联警告 |\n|:---:|:---:|:---:|\n| ![命名空间](docs\u002Fscreenshots\u002Fnamespaces.png) | ![扩缩容](docs\u002Fscreenshots\u002Fdeployment-scale.png) | ![删除 ns](docs\u002Fscreenshots\u002Fnamespace-delete.png) |\n\n| Pod 列表 | Pod 实时日志 | Pod 终端 exec |\n|:---:|:---:|:---:|\n| ![Pod 列表](docs\u002Fscreenshots\u002Fpods.png) | ![Pod 日志](docs\u002Fscreenshots\u002Fpod-logs.png) | ![Pod 终端](docs\u002Fscreenshots\u002Fpod-exec.png) |\n| 容器层卡点 reason 高亮（ImagePullBackOff 等） | 实时刷新 \u002F 上次日志 \u002F tail 行数 | 浏览器内直连容器 shell |\n\n| StatefulSets | DaemonSets | Services |\n|:---:|:---:|:---:|\n| ![StatefulSets](docs\u002Fscreenshots\u002Fstatefulsets.png) | ![DaemonSets](docs\u002Fscreenshots\u002Fdaemonsets.png) | ![Services](docs\u002Fscreenshots\u002Fservices.png) |\n\n| Ingresses | ConfigMaps | Secrets \u002F PVC |\n|:---:|:---:|:---:|\n| ![Ingresses](docs\u002Fscreenshots\u002Fingresses.png) | ![ConfigMaps](docs\u002Fscreenshots\u002Fconfigmaps.png) | ![Secrets](docs\u002Fscreenshots\u002Fsecrets.png) |\n\n### YAML 编辑与校验\n\n| YAML 编辑（默认只读） | \"+ 新建\" 通过模板创建 | server-side dry-run 校验 |\n|:---:|:---:|:---:|\n| ![YAML 编辑](docs\u002Fscreenshots\u002Fyaml-edit.png) | ![YAML 新建](docs\u002Fscreenshots\u002Fyaml-create.png) | ![YAML 校验](docs\u002Fscreenshots\u002Fyaml-validate.png) |\n| 默认只读预览，按\"编辑模式\"开关切换 | 每种资源预填模板 | 调 K8s 真实 dry-run，错误翻译成中文带 💡 解释 |\n\n---\n\n## 技术栈\n\n| 层级 | 技术 |\n|------|------|\n| 后端框架 | Django 6.0.4 |\n| 数据库 | SQLite |\n| K8s 集成 | Kubernetes Python Client v35.0.0 |\n| 监控 | Prometheus（可选） |\n| 前端 | Django Templates + Alpine.js |\n| CSS 框架 | Tailwind CSS 4.2.2 + DaisyUI 5.5.19 |\n| 图标 | FontAwesome |\n| 加密 | Fernet（cryptography） |\n| 构建工具 | @tailwindcss\u002Fcli |\n\n---\n\n## 安装部署\n\n### 环境要求\n- Python 3.10+\n- Node.js 18+（用于 Tailwind CSS 编译）\n- 可用的 Kubernetes 集群及 kubeconfig\n\n### 安装步骤\n\n1. **克隆并进入项目目录**\n   ```bash\n   cd Armada\n   ```\n\n2. **安装 Python 依赖**\n   ```bash\n   pip install django==6.0.4 kubernetes==35.0.0 pyyaml python-dateutil cryptography prometheus-client\n   ```\n\n3. **安装 Node 依赖**\n   ```bash\n   npm install\n   ```\n\n4. **编译 Tailwind CSS**\n   ```bash\n   npx @tailwindcss\u002Fcli -i .\u002Fstatic\u002Fcss\u002Finput.css -o .\u002Fstatic\u002Fcss\u002Foutput.css --watch\n   ```\n\n5. **初始化数据库**\n   ```bash\n   python manage.py migrate\n   ```\n\n6. **创建管理员账户**\n   ```bash\n   python manage.py createsuperuser\n   ```\n\n7. **启动开发服务器**\n   ```bash\n   python manage.py runserver\n   ```\n\n8. **访问面板**\n   浏览器打开 [http:\u002F\u002Flocalhost:8000](http:\u002F\u002Flocalhost:8000)\n\n---\n\n## 项目结构\n\n```\nArmada\u002F\n├── armada\u002F                    # Django 项目配置\n│   ├── settings.py           # 主配置文件\n│   └── urls.py               # 根路由配置\n├── clusters\u002F                 # 集群管理应用\n│   ├── models.py             # 集群模型\n│   ├── views.py              # 集群视图\n│   ├── k8s_client.py         # K8s 客户端连接池\n│   └── prometheus.py         # Prometheus 指标集成\n├── resources\u002F                # K8s 资源管理应用\n│   ├── models.py             # 资源缓存模型\n│   ├── views.py              # 资源 CRUD 视图\n│   ├── k8s_resources.py      # 资源管理器\n│   └── sync_service.py       # 后台同步服务\n├── dashboard\u002F                # 仪表盘应用\n│   └── views.py              # 仪表盘视图\n├── accounts\u002F                 # 用户与认证应用\n│   ├── models.py             # 用户资料、权限模型\n│   ├── views.py              # 认证与用户管理\n│   └── middleware.py         # 权限校验中间件\n├── templates\u002F                # Django HTML 模板\n├── static\u002F\n│   ├── css\u002F                  # 编译后的 Tailwind CSS\n│   ├── js\u002F                   # JavaScript 文件\n│   └── webfonts\u002F             # FontAwesome 字体\n├── manage.py                 # Django 命令行工具\n├── package.json              # Node.js 依赖\n└── design_plan.md            # UI 重设计文档\n```\n\n---\n\n## API 路由\n\n### 集群管理\n| 方法 | 路径 | 说明 |\n|------|------|------|\n| GET | `\u002Fclusters\u002F` | 集群列表 |\n| POST | `\u002Fclusters\u002Fadd\u002F` | 添加集群 |\n| GET | `\u002Fclusters\u002F\u003Cid>\u002F` | 集群详情 |\n| POST | `\u002Fclusters\u002F\u003Cid>\u002Fedit\u002F` | 编辑集群 |\n| POST | `\u002Fclusters\u002F\u003Cid>\u002Fdelete\u002F` | 删除集群 |\n| POST | `\u002Fclusters\u002F\u003Cid>\u002Frefresh\u002F` | 刷新集群信息 |\n| GET | `\u002Fclusters\u002F\u003Cid>\u002Fnodes\u002F` | 节点管理 |\n| POST | `\u002Fclusters\u002F\u003Cid>\u002Fnode\u002F\u003Cname>\u002Fcordon\u002F` | 隔离节点 |\n| POST | `\u002Fclusters\u002F\u003Cid>\u002Fnode\u002F\u003Cname>\u002Funcordon\u002F` | 取消隔离 |\n| POST | `\u002Fclusters\u002F\u003Cid>\u002Fnode\u002F\u003Cname>\u002Fdrain\u002F` | 驱逐节点 |\n\n### 资源管理\n| 方法 | 路径 | 说明 |\n|------|------|------|\n| GET | `\u002Fresources\u002F\u003Cid>\u002Fnamespaces\u002F` | 命名空间列表 |\n| POST | `\u002Fresources\u002F\u003Cid>\u002Fnamespaces\u002Fcreate\u002F` | 创建命名空间 |\n| GET | `\u002Fresources\u002F\u003Cid>\u002Fdeployments\u002F` | Deployment 列表 |\n| POST | `\u002Fresources\u002F\u003Cid>\u002Fdeployments\u002F\u003Cns>\u002F\u003Cname>\u002Fscale\u002F` | 扩缩容 |\n| POST | `\u002Fresources\u002F\u003Cid>\u002Fdeployments\u002F\u003Cns>\u002F\u003Cname>\u002Frestart\u002F` | 重启 |\n| GET | `\u002Fresources\u002F\u003Cid>\u002Fpods\u002F` | Pod 列表 |\n| GET | `\u002Fresources\u002F\u003Cid>\u002Fpods\u002F\u003Cns>\u002F\u003Cname>\u002Flogs\u002F` | 查看日志 |\n| GET | `\u002Fresources\u002F\u003Cid>\u002Fservices\u002F` | Service 列表 |\n| GET | `\u002Fresources\u002F\u003Cid>\u002Fingresses\u002F` | Ingress 列表 |\n| GET | `\u002Fresources\u002F\u003Cid>\u002Fconfigmaps\u002F` | ConfigMap 列表 |\n| GET | `\u002Fresources\u002F\u003Cid>\u002Fsecrets\u002F` | Secret 列表 |\n| GET | `\u002Fresources\u002F\u003Cid>\u002Fpvcs\u002F` | PVC 列表 |\n| GET | `\u002Fresources\u002F\u003Cid>\u002Fyaml\u002F\u003Ctype>\u002F\u003Cns>\u002F\u003Cname>\u002F` | 获取资源 YAML |\n| POST | `\u002Fresources\u002F\u003Cid>\u002Fdelete\u002F\u003Ctype>\u002F\u003Cns>\u002F\u003Cname>\u002F` | 删除资源 |\n\n### 账户管理\n| 方法 | 路径 | 说明 |\n|------|------|------|\n| GET | `\u002Faccounts\u002Flogin\u002F` | 登录页 |\n| POST | `\u002Faccounts\u002Flogin\u002F` | 登录 |\n| GET | `\u002Faccounts\u002Flogout\u002F` | 登出 |\n| GET | `\u002Faccounts\u002Fprofile\u002F` | 个人资料 |\n| GET | `\u002Faccounts\u002Fusers\u002F` | 用户列表（管理员） |\n| POST | `\u002Faccounts\u002Fusers\u002Fcreate\u002F` | 创建用户（管理员） |\n| POST | `\u002Faccounts\u002Fusers\u002F\u003Cid>\u002Fdelete\u002F` | 删除用户（管理员） |\n| GET | `\u002Faccounts\u002Fpermissions\u002F` | 权限列表（管理员） |\n| POST | `\u002Faccounts\u002Fpermissions\u002Fcreate\u002F` | 创建权限（管理员） |\n\n---\n\n## 配置说明\n\n### 集群配置\n添加集群时需要提供：\n- **显示名称**：集群的友好名称\n- **描述**：可选描述信息\n- **Prometheus URL**：可选（如 `http:\u002F\u002Fprometheus-server:9090`）\n- **Kubeconfig**：粘贴完整的 kubeconfig YAML（存储前会加密）\n\n### 权限配置\n为用户分配按集群按模块的权限：\n- 选择用户和集群\n- 选择模块（如 `deployment`、`pod`、`configmap`）\n- 设置权限类型：`view`（查看）或 `edit`（编辑）\n\n---\n\n## 许可证\n\n私有项目，保留所有权利。\n","Armada 是一个专业的 Web 端 Kubernetes 多集群管理面板，旨在通过可视化界面简化多集群运维。其核心功能包括全面覆盖 Deployment、Pod、Service、Ingress、ConfigMap、Secret 和 PVC 等资源的 CRUD 操作，支持在线编辑 YAML 文件、一键扩缩容与重启、实时日志流查看、Pod 终端直连、节点 Cordon\u002FDrain 操作等。此外，Armada 还具备细粒度的 RBAC 权限控制和全平台操作审计能力，并可集成 Prometheus 监控。该工具适用于需要高效管理和监控多个 Kubernetes 集群的企业或团队，尤其适合希望从命令行转向更直观图形化操作的用户。",2,"2026-06-11 03:31:31","CREATED_QUERY"]