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 기반 확장 모듈 활용 가능
9️⃣ 결론
📌 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 |