Webernetes: LLMを使用してKubernetesをブラウザに移植する

Webernetes: LLMを使用してKubernetesをブラウザに移植する

Webernetesは教育用途向けにブラウザベースのKubernetesクラスターを可能にします

Webernetesは、KubernetesをTypeScriptに部分的に移植したもので、ユーザーがWebブラウザ内で完全にKubernetesクラスターを実行できるようにします。2ヶ月間にわたって開発されたこのプロジェクトは、629個のファイルにわたる約100,000行のTypeScriptコードで構成されています。これは、本番環境向けの配布物としてではなく、インタラクティブなKubernetes教育コンテンツを作成するために特別に設計されています。

アーキテクチャの実装と制約

Webernetesは、オリジナルのGoコードベースのWebAssemblyコンパイルではありません。Go-Wasmバイナリのサイズと、Kubernetesが必要とするブラウザレベルのシステムAPIの欠如により、著者は手動(LLM支援)によるTypeScriptへの移植を採択しました。

移植されたコアコンポーネント

  • Kubelet: Podを起動し、調査するのに十分な部分的な移植。
  • Controllers: Podスケジューラ、namespace controller、kube-proxy、およびdeployment controllerの実装。
  • Networking: Pod間の通信のためのネットワークをシミュレートする、ブラウザベースのContainer Network Interface (CNI)。
  • Runtime: Container Runtime Interface (CRI)を介してkubeletと通信する、ブラウザベースのコンテナランタイム。
  • API: マニフェストを適用し、リソースを監視するための専用API。

イメージの取り扱い

フットプリントを小さく保つため(gzippedで約140KiB)、WebernetesはDocker Hubのようなレジストリからイメージをプルしません。代わりに、TypeScript APIを使用してイメージが定義されるブラウザベースのレジストリを使用します。例えば、開発者は w8s.BaseImage を拡張し、exec メソッドを実装することで、コンテナの動作を定義します。

LLM主導の開発と品質保証

Webernetesのコードのほぼすべてが、大規模言語モデル(LLM)によって作成されました。プロジェクトが「slop」(低品質で検証されていないAIコード)にならないように、著者は2段階の検証プロセスを実装しました。

手動コードレビュー

LLMが生成したコードのすべての行がレビューされました。これは、LLMが移植の際、以下のようなエラーを頻繁に犯したため必要でした:

  • Shortcuts (ショートカット): 複雑なKubernetesのキャッシュ実装(LRU、FIFOなど)を、単純なJavaScript Map オブジェクトに置き換えてしまい、誤った動作を引き起こすこと。
  • Over-helpfulness (過剰な親切さ): オリジナルのGoコードに存在しないヘルパー関数を捏造し、サイドバイサイドのレビューを複雑にすること。
  • Omissions (欠落): 移植プロセス中に、Goのテーブルテストのセクションを勝手にスキップすること。

k3sに対する統合テスト

TypeScript移植版とオリジナルのGo実装との間の動作の同一性を確保するため、著者は204個の統合テストを記述しました。これらのテストは、公式の kubernetes-client/javascript ライブラリを使用して、Webernetes(ヘッドレスブラウザ内)と実際の k3s クラスター(Node.js内)の両方に対して同じコードを実行します。これにより、ブラウザベースのランタイムとネットワークが、実際のKubernetesクラスターと同一の動作をすることを保証します。

プロジェクトのメトリクスとトークン消費量

プロジェクトの成長は、Gitメトリクスと、CodexおよびClaudeのセッションにおけるLLMトークン使用量を通じて追跡されました。

コードベースの成長

2026年4月20日から6月15日の間に、コードベースは0から合計約126,642行(コメントとデモアプリを含む)に成長し、最も顕著な成長は6月に発生しました。

トークンとコスト分析

LLMの使用は、極めて高いキャッシュ済み入力トークンの消費を特徴としていました。開発の最終週には、著者はDeploymentサポートのための複雑な依存関係を移植するために、エージェントとサブエージェントのチームを利用しました。その結果、その週だけでAPI相当のコストが$1,811.64に急増しました。

現在の制限事項とロードマップ

Webernetesは現在、以下を含むいくつかの本番用Kubernetes機能のサポートが欠如しています:

  • ConfigMaps
  • Secrets
  • Pod resources
  • Persistent volumes

将来の拡張は、特定の教育コンテンツを作成する必要性によって推進され、著者は欠落している機能を実装するためにコミュニティの貢献を歓迎しています。

Sources