我把 Kubernetes 移植到了浏览器里

查看原文 HN 讨论

文章摘要

作者 Sam Rose 打造了一个名为 Webernetes 的项目——把 Kubernetes 移植进了浏览器。他没有选择将 Kubernetes 编译成 WebAssembly(那样体积会达到好几兆字节),而是用 TypeScript 重写了一个精简版实现,包括:一个能执行和探测 Pod 的部分 kubelet 实现、多个 Kubernetes 控制器(调度器 scheduler、命名空间、kube-proxy、deployment)、一个让 Pod 之间能互相通信的浏览器版容器网络接口(CNI)、一个面向浏览器环境的自定义容器运行时接口(CRI),以及一套与官方 kubernetes-client/javascript 库对齐的 API。最终成品约 140KiB(gzip 后),还自带一个浏览器版镜像仓库——用 TypeScript API 代替真实的 Docker 镜像。

这个项目的规模相当惊人:约 10 万行代码、629 个文件,在 2 个月内完成,配有 204 个集成测试和 1855 个单元测试。绝大部分代码由 LLM 生成,但 Rose 强调他审查了每一行代码,并编写了可以同时对 webernetes 和真实 k3s 集群运行、以确保行为一致的测试。他也坦言 LLM 需要精心管控——它们会走捷径、发明无用的抽象、遗漏测试用例,因此人工审查不可或缺。

Webernetes 的目标定位是制作关于 Kubernetes 的交互式教学内容,而非用于生产部署。未来计划按需扩展 ConfigMaps、Secrets 和持久卷等特性。

HN 评论精华

这条帖子被网友预言会成为”爆款”(duncangh 称其为”instant classic”),讨论既有对项目本身的赞赏,也有对 AI 辅助工程方法论的思考。