웹 터미널 구현을 살펴볼 때의 참고 자료
웹 터미널을 검토하면서 모아 둔 라이브러리와 구현 자료입니다. 터미널 화면을 그리는 기능과 서버에서 실제 명령을 실행하는 기능을 구분해 보면 각 자료의 역할을 이해하기 쉽습니다.
화면과 실행 경로 구분
터미널 에뮬레이터는 입력과 화면 출력을 다룹니다. 실제 셸을 실행하거나 컨테이너에 접속하려면 서버 쪽 연결이 추가로 필요합니다.
브라우저 입력을 전달하고 출력 스트림을 돌려받는 통신, PTY나 Kubernetes exec 같은 실행 경로, 사용자와 대상의 권한을 함께 구성해야 합니다. 화면 라이브러리를 설치했다고 서버 터미널 접속까지 제공되는 것은 아닙니다.
터미널 화면 라이브러리
- xterm.js — 브라우저에서 터미널 화면과 입력을 다루는 라이브러리입니다. VS Code 등에서 사용하는 구현이기도 합니다.
- terminal.js — 당시 함께 살펴봤던 JavaScript 터미널 라이브러리입니다.
- jQuery Terminal — 웹 페이지의 명령형 인터페이스를 만드는 데 참고할 수 있습니다. 실제 OS 셸과 연결하는 구성은 별도로 봐야 합니다.
Kubernetes 콘솔 구현
Kubebox 는 터미널과 웹에서 사용하는 Kubernetes 콘솔입니다. 컨테이너 로그와 원격 exec 등 기능을 제공하므로 화면과 서버 연결을 함께 살펴볼 수 있습니다.
당시에는 Kubernetes Dashboard의 셸 컴포넌트도 참고했습니다. 특정 master 경로의 파일은 프로젝트 구조가 바뀌면 사라질 수 있어, Dashboard 저장소 에서 필요한 시점의 버전과 코드를 확인하는 편이 좋습니다.
연결 기능에서 확인할 부분
실제 접속 기능을 만들 때는 화면이 열리는 것 외에 입력·출력 전달, 터미널 크기 변경, 연결 종료를 확인해야 합니다. 어느 사용자에게 어느 대상의 셸을 열어 줄지도 서버에서 판단해야 합니다.
여기서는 당시 조사했던 자료를 정리했습니다. 각 프로젝트의 실행 코드와 현재 유지보수 상태는 도입할 버전을 기준으로 확인해야 합니다.
Last updated on