관리자와 운영자, 그리고 일반 사용자는 클라우드 리소스를 매번 CLI로만 다루기보다 브라우저에서 한눈에 보이는 대시보드를 필요로 합니다. OpenStack Horizon은 OpenStack의 공식 웹 대시보드로서 컴퓨트, 네트워킹, 스토리지, 아이덴티티, 이미지, 오케스트레이션과 같은 주요 기능을 웹 인터페이스로 제공합니다.
OpenStack Horizon이란?
OpenStack Horizon은 OpenStack 서비스에 대한 그래픽 접근을 제공하는 공식 웹 대시보드입니다. Nova, Neutron, Cinder, Swift, Keystone, Glance, Heat, Octavia, Designate, Magnum 같은 서비스와 연동되어 사용자가 브라우저에서 자원을 확인하고 조작할 수 있게 해 줍니다.
왜 Horizon이 필요한가?
openstack server create
openstack volume create
openstack network createCLI와 API는 자동화에 강력하지만, 신규 사용자, 헬프데스크 팀, 비기술 사용자, 경영진이나 현업 담당자처럼 매일 빠르게 상태를 확인하고 작업해야 하는 사람들에게는 브라우저 기반 인터페이스가 훨씬 효율적입니다. Horizon은 이러한 요구를 중앙 포털 하나로 묶어 줍니다.
Horizon 아키텍처
핵심 기술
| 기술 | 역할 |
|---|---|
| Python | 애플리케이션 로직 |
| Django | 웹 프레임워크 |
| HTML | UI 구조 |
| CSS | 스타일링 |
| JavaScript | 인터랙션 |
| OpenStack APIs | 백엔드 통신 |
주요 구성 요소와 Keystone 통합
Horizon 대시보드는 사용자 인터페이스를 제공하고, 서비스 계층은 인증, 리소스 조회, 세션 처리, API 요청 전달을 담당합니다. Keystone은 인증, 인가, 토큰 관리를 맡으며 사용자는 Horizon 로그인 후 토큰을 발급받아 OpenStack 서비스와 상호작용합니다.
Horizon 사용자 역할
Horizon 대시보드 구조
컴퓨트·네트워크 관리
Nova 연동으로 사용자는 인스턴스 생성, 중지, 재부팅, 크기 조정, 마이그레이션, 콘솔 로그 확인을 할 수 있습니다. Neutron 연동으로는 네트워크, 서브넷, 라우터, Floating IP, 보안 그룹을 관리할 수 있으며 네트워크 생성, 서브넷 생성, 라우터 생성, 네트워크 연결 같은 작업을 순서대로 수행합니다.
스토리지·이미지 관리
Cinder 연동으로 볼륨 생성, 연결, 스냅샷 생성과 복원, 용량 확장을 할 수 있고, Swift 연동으로는 컨테이너 생성, 파일 업로드, 객체 다운로드, 메타데이터 관리가 가능합니다. Glance 연동을 통해 이미지를 업로드하거나 다운로드하고, 사용자 정의 템플릿을 만들며, 가시성을 조정할 수 있습니다. 지원 형식은 QCOW2, RAW, VMDK, VHD, ISO입니다.
보안·아이덴티티·모니터링
| 영역 | 주요 기능 |
|---|---|
| 보안 그룹 | SSH 22, HTTP 80, HTTPS 443 허용 규칙 설정 |
| 키 페어 | SSH 키 생성, 공개 키 가져오기, 접근 자격 관리 |
| 아이덴티티 | 사용자 생성, 프로젝트 생성, 역할 할당, 권한 관리 |
| 모니터링 | CPU, RAM, 스토리지, 네트워크, 하이퍼바이저 상태 확인 |
Horizon 패널
| 패널 | 기능 |
|---|---|
| Compute | VM 관리 |
| Network | Neutron 리소스 |
| Storage | 볼륨과 객체 저장소 |
| Identity | 사용자와 프로젝트 |
| Orchestration | Heat 템플릿 |
| Monitoring | 지표 조회 |
Horizon 커스터마이징과 플러그인
Horizon의 강점은 확장성과 커스터마이징입니다. 회사 로고, 브랜딩, 테마, 사용자에게 노출할 패널, 대시보드 배치, 접근 제어를 조정할 수 있고, Kubernetes 관리, 모니터링, 과금, 보고서, 백업 같은 기능을 플러그인 형태로 붙일 수 있습니다.
Horizon 플러그인 아키텍처
Horizon 배포 아키텍처
세션 관리와 보안 모범 사례
- 세션 저장소는 로컬 DB, Memcached, Redis를 사용할 수 있습니다.
- 프로덕션에서는 HTTPS를 항상 적용하고 HTTP는 노출하지 않습니다.
- 지원되는 경우 MFA를 적용해 계정 탈취 위험을 줄입니다.
- 세션 타임아웃, Secure Cookie, CSRF 보호, 감사 로그를 활성화합니다.
- 관리자 접근은 일반 사용자 화면과 분리하고 Keystone 역할 기반 접근 제어를 적용합니다.
일반적인 설정 파일
| 경로 | 내용 |
|---|---|
| /etc/openstack-dashboard/ | Horizon 설정 루트 |
| local_settings.py | Keystone 엔드포인트, 세션, SSL, 캐시, 대시보드 옵션 |
Horizon의 장점과 한계
Horizon은 쉬운 학습 곡선, 중앙 집중형 관리, 멀티 테넌트 지원, 역할 기반 접근 제어, 오픈소스라는 장점이 있습니다. 반면 대규모 자동화에는 적합하지 않고, 고급 기능은 CLI가 더 편할 수 있으며, API 기능이 먼저 나오고 GUI는 뒤따르는 경우가 있습니다. 또한 매우 큰 환경에서는 속도 저하와 추가 웹 인프라 요구가 발생할 수 있습니다.
Horizon vs OpenStack CLI
| 기능 | Horizon | CLI |
|---|---|---|
| GUI | 예 | 아니오 |
| 자동화 | 제한적 | 우수 |
| 학습 난이도 | 쉬움 | 보통 |
| 대량 작업 | 제한적 | 강함 |
| 스크립팅 | 아니오 | 예 |
| API 커버리지 | 좋음 | 완전 |
실제 사용 사례와 베스트 프랙티스
기업 프라이빗 클라우드에서는 부서별 VM 배포와 스토리지, 네트워크 구성을 분리하고, 관리형 클라우드에서는 브랜드 포털로 고객에게 리소스를 제공합니다. 교육용 랩에서는 학생이 CLI를 배우지 않아도 브라우저로 실습할 수 있고, 개발 환경에서는 빠르게 테스트 환경을 만들 수 있습니다. 운영에서는 Horizon 노드를 2대 이상 구성하고, Redis 또는 Memcached로 세션을 중앙화하며, 필요한 기능만 노출하고, Keystone 연동과 기업용 ID 연동(LDAP, Active Directory, SAML, OpenID Connect)을 함께 사용합니다.
결론
OpenStack Horizon은 OpenStack 클라우드를 운영하는 데 필요한 핵심 그래픽 인터페이스입니다. Django 기반의 확장 가능한 구조, Keystone 및 각종 OpenStack 서비스와의 긴밀한 통합, 역할 기반 권한 제어, 브랜드 커스터마이징과 엔터프라이즈 인증 연동을 통해 관리자와 일반 사용자 모두에게 실용적인 웹 포털을 제공합니다. 자동화와 복잡한 작업은 CLI와 API가 더 적합하지만, Horizon은 접근성과 가시성을 제공하는 필수 구성요소로 남아 있습니다.
