Overview
오늘은 OpenStack의 대시보드(Dashboard) 서비스인 Horizon에 대해 학습하고 정리하려고 한다.
📅 관련 글
2022.05.11 - [Openstack] - Openstack이란?
2022.07.29 - [Openstack] - Openstack Nova란?
2022.08.08 - [Openstack] - Openstack Neutron이란? (network)
2022.08.08 - [Openstack] - Openstack 배치 서비스 Placement란?
2022.08.08 - [Openstack] - Openstack Glance란? (image)
2022.08.08 - [Openstack] - Openstack Keystone이란? (identity)
1️⃣ Horizon이란?
OpenStack Horizon 개요
Horizon은 OpenStack 환경을 웹 기반 GUI(Graphic User Interface)로 관리할 수 있도록 제공하는 대시보드(Dashboard) 서비스이다. 즉, 사용자와 관리자가 OpenStack 클라우드의 인프라 및 서비스를 손쉽게 제어할 수 있도록 지원하는 웹 인터페이스다.
Horizon의 주요 기능
- ✔ GUI 기반의 OpenStack 관리 기능 제공
- ✔ 클라우드 리소스(Nova, Glance, Cinder, Neutron 등) 관리
- ✔ 사용자 계정 및 권한(Role) 관리
- ✔ 인스턴스 생성 및 관리(Compute 관리)
- ✔ 스토리지 및 네트워크 설정 변경 가능
CLI 없이도 OpenStack을 쉽게 관리할 수 있도록 돕는 핵심 컴포넌트다.
2️⃣ Horizon의 주요 특징
Horizon은 웹 기반 GUI 대시보드로 동작하며, OpenStack의 여러 서비스와 API를 연동하여 다음과 같은 기능을 제공한다.
기능 | 설명 |
사용자 인터페이스 제공 | 웹 브라우저에서 OpenStack 자원을 손쉽게 관리 가능 |
멀티 테넌트(Multi-Tenancy) 지원 | 프로젝트별로 자원을 격리하여 관리 |
REST API 기반 서비스 연동 | OpenStack 서비스(Nova, Glance, Cinder, Neutron 등)와 연동 |
RBAC(Role-Based Access Control) 적용 | 사용자 역할(Role)에 따라 접근 권한을 제어 |
확장성(Extensibility) 지원 | 필요에 따라 추가 기능(Custom Panels) 개발 가능 |
Horizon은 CLI 없이도 OpenStack을 쉽게 사용할 수 있도록 돕는 필수 요소다.
3️⃣ Horizon의 아키텍처 및 동작 원리
Horizon은 Django 기반의 웹 애플리케이션으로 개발되었으며, OpenStack 서비스와 REST API를 통해 통신한다.
Horizon의 논리적 아키텍처
+---------------------+
| Web Browser (UI) |
+---------------------+
|
v
+---------------------+
| Horizon UI |
| (Django Web App) |
+---------------------+
|
v
+---------------------+
| OpenStack APIs |
| (Keystone, Nova, |
| Glance, Neutron, |
| Cinder, Swift) |
+---------------------+
Horizon은 OpenStack API를 통해 백엔드 서비스와 직접 연결되며, 웹 인터페이스를 통해 이를 쉽게 관리할 수 있도록 한다.
4️⃣ Horizon의 주요 구성 요소
Horizon은 여러 개의 Django 모듈로 구성되어 있으며, OpenStack 서비스와 연동하여 클라우드 자원을 관리할 수 있도록 한다.
구성 요소 | 설명 |
Django Web Framework | Python 기반의 웹 프레임워크 (Horizon의 기반) |
Horizon Dashboard (horizon module) | 웹 UI를 렌더링하는 메인 대시보드 모듈 |
Panels & Tabs | 특정 기능(예: Nova, Cinder, Neutron 관리)을 위한 개별 패널 |
OpenStack API Client | OpenStack 서비스(Nova, Glance, Neutron 등)와 API를 통해 통신 |
Horizon은 Django 웹 프레임워크 기반으로 설계되었으며, OpenStack API와 연결하여 대시보드를 구성한다.
5️⃣ Horizon에서 관리할 수 있는 주요 기능
Horizon을 통해 OpenStack의 주요 서비스를 직접 관리할 수 있다.
기능 | 설명 |
사용자 및 프로젝트 관리 | 사용자 계정 생성 및 프로젝트(Role) 할당 |
인스턴스(Compute) 관리 | Nova 인스턴스(VM) 생성, 삭제, 스냅샷 생성 |
스토리지 관리 | Cinder 볼륨 생성, 삭제, 스냅샷 관리 |
네트워크 관리 | Neutron 네트워크 및 서브넷, Floating IP 설정 |
이미지 관리 | Glance 이미지 업로드 및 삭제 |
보안 그룹 및 키페어 관리 | 방화벽 규칙(Security Group) 및 SSH Key 등록 |
Horizon을 활용하면 OpenStack CLI 없이도 다양한 기능을 손쉽게 사용할 수 있다.
6️⃣ Horizon의 인증 및 접근 제어
Horizon은 Keystone과 연동하여 인증(Authentication) 및 접근 제어(Authorization)를 수행한다.
Horizon 인증 과정
1️⃣ 사용자가 로그인 화면에서 ID & 비밀번호 입력
2️⃣ Horizon이 Keystone API에 인증 요청
3️⃣ Keystone이 사용자의 인증을 수행 후, 세션(Session) 또는 Token 발급
4️⃣ 사용자가 인증된 상태에서 OpenStack 서비스(Nova, Glance 등)에 접근 가능
Keystone과 연동하여 프로젝트 및 사용자 기반 접근 제어를 수행한다.
7️⃣ Horizon을 활용한 OpenStack 관리 예제
1) 인스턴스(Compute) 생성
1️⃣ Horizon에 로그인
2️⃣ 왼쪽 메뉴에서 "Compute → Instances" 선택
3️⃣ "Launch Instance" 클릭
4️⃣ 필요한 정보(이름, 이미지, 네트워크, 보안 그룹 등) 입력 후 생성
CLI 없이도 GUI에서 쉽게 인스턴스를 생성할 수 있다.
2) 네트워크(Floating IP) 할당
1️⃣ 왼쪽 메뉴에서 "Network → Floating IPs" 선택
2️⃣ "Allocate IP" 클릭하여 외부 IP 할당
3️⃣ "Associate" 버튼을 눌러 인스턴스와 연결
외부 네트워크에 접근하기 위해 Floating IP를 설정할 수 있다.
3) 볼륨(스토리지) 생성
1️⃣ 왼쪽 메뉴에서 "Volumes → Create Volume" 선택
2️⃣ 볼륨 이름 및 크기 입력 후 "Create" 클릭
3️⃣ 인스턴스에 연결하려면 "Manage Attachments"에서 연결 수행
GUI에서 볼륨을 생성하고 관리할 수 있다.
8️⃣ Horizon의 확장성(Extensibility)
Horizon은 커스텀 플러그인을 추가하여 새로운 기능을 확장할 수 있다.
Horizon 확장 기능
- ✔ Custom Dashboard 추가 가능
- ✔ 새로운 Panel(기능) 개발 가능
- ✔ Django 기반 확장 모듈 활용 가능
결론
Horizon은 OpenStack을 GUI 환경에서 손쉽게 관리할 수 있도록 제공되는 대시보드 서비스다.
- ✔ OpenStack의 웹 기반 관리 인터페이스 제공
- ✔ Nova, Glance, Neutron, Cinder 등의 서비스와 연동
- ✔ 사용자, 프로젝트, 네트워크, 스토리지 등을 GUI에서 쉽게 관리 가능
- ✔ Django 기반으로 확장성이 뛰어나며, REST API를 통해 OpenStack 서비스와 연동
Horizon을 효과적으로 활용하려면?
- ✔ OpenStack CLI와 API 활용법을 이해하고 Horizon과 비교해보기
- ✔ 사용자 인증 및 접근 제어(RBAC) 구조 익히기
- ✔ Horizon의 확장 기능(커스텀 패널, 대시보드 개발 등) 활용하기
Reference
'Openstack' 카테고리의 다른 글
OpenStack Heat란? (Orchestration) (0) | 2025.02.27 |
---|---|
Openstack Cinder/Swift란? (block storage/object storage) (0) | 2022.08.09 |
Openstack Keystone이란? (identity) (0) | 2022.08.08 |
Openstack Glance란? (image) (0) | 2022.08.08 |
Openstack 배치 서비스 Placement란? (0) | 2022.08.08 |