我们从零开始重构了 Kubernetes 仪表板——以下是我们新增的功能

发布日期:2026-05-14 10:35:56   浏览量 :0
发布日期:2026-05-14 10:35:56  
0

2026西湖龙井茶官网DTC发售:茶农直供,政府溯源防伪到农户家 

我们从零开始重建了 Kubernetes 仪表板——以下是我们新增的功能

官方 Kubernetes 仪表板于 2026 年 1 月被归档。其 Angular 代码库已无法维护,工具链脆弱不堪,上游维护者也宣布停止开发。我们需要为自家的家庭实验室安全平台提供一个仪表板,因此我们从头构建了一个。

这就是我们构建的故事,包括我们为何做出这些决策,以及它与替代方案有何不同。

为何不选择 Headlamp、Lens 或 Rancher?

我们评估了显而易见的替代方案:

  • Lens —— 桌面应用程序,非集群内运行,采用商业免费增值模式。不适合硬化的集群内部署。
  • Headlamp —— 优秀的项目,但其可扩展性模型依赖于动态加载的 JavaScript 插件。我们更倾向于一个无插件运行时且代码库完全可审计、静态化的仪表板。
  • Rancher —— 完整的多集群平台,对于单个集群而言过于庞大,且需要占用独立的命名空间资源。

我们希望有一个能作为硬化 Pod 在集群内 运行的解决方案,除了 Kubernetes API 之外没有外部依赖,并且是可审计的——无插件运行时,无动态代码加载。

还有一个原始版本无法做到的事情:与 MetalLB 协同工作。它围绕 kubectl proxy 和节点端口(NodePort)设计——从未打算置于真实的集群内网关之后。要让它使用 MetalLB 的 IP 地址,需要借助 Kong 作为网关,而原始版本并不支持这一点。

因此,我们分叉了已归档的仪表板并进行了重建。

技术栈

前端: React 19 + Material UI v6 + Vite + TypeScript

后端: 四个 Go 语言模块——应用程序接口(API)、认证(Auth)、指标抓取器(Metrics Scraper)、通用模块(Common)

网关: Kong 3.6(无数据库模式)作为集群内应用程序接口网关

认证: 持有者令牌(Kubernetes 服务账户)配合跨站请求伪造(CSRF)保护

部署: 原生 Kubernetes 清单文件——不使用 Helm

保留了原始的 Go 后端契约。仅替换了用户界面层。

超越“标准仪表板”所交付的功能

通常的仪表板会向你展示工作负载列表、容器组日志和一个 Shell 终端。我们添加了十项原生功能,这些功能通常需要单独的工才能实现:

1. 策略审计(原生 Polaris 集成)

针对实时容器组规格进行 14 项安全检查——无需部署 Polaris:

  • 是否允许权限提升?
  • 是否使用主机网络 / 主机进程 ID / 主机间进程通信?
  • 是否设置了资源限制?
  • 是否定义了就绪探针和存活探针?
  • 镜像标签是否为 latest(最新)?
  • 是否配置了 seccompProfile(安全计算模式配置文件)?

每个工作负载都会获得一个 0–100 的评分。命名空间会获得一个汇总评分。可按严重程度(危险 / 警告 / 通过)进行过滤。

整个功能是一个单一的 Go 语言包,直接从 Kubernetes API 读取容器组规格。无需准入 Webhook,无需第三方运算符。

2. 资源效率(类似 Goldilocks 风格)

将实际中央处理器/内存使用情况(来自 metrics.k8s.io)与容器请求值和限制值进行比较:

  • 无限制 —— 容器未设置资源限制(危险)
  • 过热 —— 实际使用量超过请求值(存在内存溢出或中央处理器节流风险)
  • 过冷 —— 请求值远大于实际使用量(浪费容量)
  • 正常 —— 请求值和限制值合理

支持导出逗号分隔值文件以用于容量规划。启用 VictoriaMetrics 后,趋势箭头(↑ ↓ →)会显示使用量是在增长、缩减还是保持稳定。

3. 证书

免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。

关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
支持 反馈 订阅 数据
回到顶部