Webernetes: LLM을 사용하여 Kubernetes를 브라우저로 포팅하기

Webernetes: LLM을 사용하여 Kubernetes를 브라우저로 포팅하기

Webernetes는 교육용으로 브라우저 기반 Kubernetes 클러스터를 가능하게 합니다

Webernetes는 Kubernetes를 TypeScript로 부분적으로 포팅한 프로젝트로, 사용자가 웹 브라우저 내에서 완전히 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.

이미지 핸들링

작은 크기(~140KiB gzipped)를 유지하기 위해, 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 table tests의 섹션을 임의로 건너뜀.

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