#KVM #VM관리 #가상화 #오케스트레이션
Pavo는 KVM/libvirt 기반의 가상머신을 하나의 웹 대시보드에서 통합 관리할 수 있도록 설계된 VM 관리 플랫폼입니다. 여러 대의 KVM 호스트를 각각 접속할 필요 없이 한 화면에서 등록, 모니터링, 운영할 수 있습니다.
VM 생성/삭제와 같이 시간이 오래 걸리는 libvirt 작업은 Job 기반의 비동기 오케스트레이션으로 처리되어, 요청은 즉시 202 응답을 반환하고 실제 작업은 백그라운드에서 안전하게 진행됩니다.
KVM 호스트에 인바운드 포트를 열지 않아도, Host Agent가 Control Plane에 먼저 접속(outbound-only)해 하나의 스트림을 유지하는 구조이기 때문에 호스트가 늘어나도 방화벽 관리 부담 없이 안전하게 확장할 수 있습니다.
Web은 Vue 3 + Vite + TypeScript로 구현된 브라우저 대시보드로, 클러스터 현황을 확인하고 호스트·VM을 직접 조작할 수 있는 사용자 인터페이스를 제공합니다.
Control Plane은 REST API 서버로, 데이터베이스 관리와 작업 오케스트레이션을 담당하며 gRPC 서버를 호스팅해 각 Host Agent와의 연결을 관리합니다.
Host Agent는 각 KVM 호스트에 배포되며, libvirt API를 통해 실제 VM을 생성·제어하고, Control Plane에는 outbound로 접속해 인바운드 포트 개방 없이 통신합니다.
Hello/Heartbeat, 커맨드 전달, 결과 회신, libvirt 도메인 이벤트가 모두 하나의 스트림으로 멀티플렉싱되어, 회선 하나로 안정적인 실시간 통신을 제공합니다.
HTTPS를 적용해 인증서 기반의 암호화 통신으로 REST API를 보호합니다.
Admin/User 역할 기반 접근 제어(RBAC)로 화면과 기능별 권한을 세밀하게 관리합니다.
호스트 단위 firewalld 규칙을 웹 대시보드에서 직접 조회하고 추가·삭제할 수 있습니다.
Host Agent 전용 아웃바운드 연결만 사용해 하이퍼바이저를 인바운드 노출 없이 안전하게 유지합니다.
단일 Virtual Machines Service Node로 구성되는 방식으로, 소규모 환경에 적합합니다.
2대 이상의 Virtual Machines Service Node를 연결해 구성하는 방식으로, VM 및 스토리지 규모가 커질수록 수평적으로 확장할 수 있습니다.