쿠버네티스를 브라우저로 포팅

원제: I ported Kubernetes to the browser

왜 중요한가

쿠버네티스 개념을 브라우저에서 직접 실행 가능하게 함으로써 개발자 교육, 프로토타이핑, 클라우드 네이티브 기술의 접근성을 크게 향상시키는 혁신적 시도다.

ngrok의 개발자 Sam Rose가 쿠버네티스를 TypeScript로 브라우저에 포팅한 'webernetes'를 공개했다. 2개월에 걸쳐 약 100,000줄의 코드를 작성했으며, 파일 크기는 gzip 압축 기준 140KB로 제한했다. 브라우저 내에서 포드 생명주기, 클러스터 DNS, 네트워킹 등 실제 쿠버네티스 기능을 시뮬레이션한다.

Sam Rose는 webernetes를 개발하면서 쿠버네티스를 WebAssembly로 컴파일하지 않았다. 단순한 Go 'hello world' 프로그램도 gzip 압축 시 540KB이므로 메가바이트 규모의 코드가 필요한 WebAssembly 컴파일은 비효율적이었기 때문이다. 대신 webernetes는 쿠버네티스의 kubelet 바이너리 일부를 포팅하고, 포드 스케줄러·네임스페이스 컨트롤러·kube-proxy·배포 컨트롤러 등 여러 컨트롤러를 이식했다. 브라우저 기반 컨테이너 네트워크 인터페이스(CNI)와 컨테이너 런타임을 구현하여 포드 간 통신을 지원한다. Docker Hub 같은 외부 레지스트리에서 이미지를 가져오지 않고, 브라우저 기반 자체 레지스트리를 사용하며 TypeScript API로 이미지를 정의한다. 552개 커밋, 629개 파일로 구성되어 있으며, 대화형 데모에서는 3개 노드의 배포에서 포드들이 HTTP 요청을 주고받는 모습을 시각화하여 보여준다.

출처

ngrok.com — 원문 읽기 →