오픈스택(OpenStack) 설치: Skyline

030·2025년 7월 21일

OpenStack

목록 보기
3/6

Skyline 이란?

OpenStack 차세대 공식 대시보드로, 기존 Horizon 보다 더 빠르고 직관적인 UI/UX를 제공한다.

Docker를 활용하여 컨테이너로 Skyline을 배포해보자.

설치 환경은 다음과 같다.

  • OS: Ubuntu 24.04
  • OpenStack Version: 2024.2 (Dalmatian)

1. Install Docker

1.1 Docker apt 저장소 설정

# apt-get update
# apt-get install ca-certificates curl
# install -m 0755 -d /etc/apt/keyrings
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
# chmod a+r /etc/apt/keyrings/docker.asc
# echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

1.2 Docker 패키지 설치

# apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

1.3 설치 확인

# docker --version

2. Create the Skyline Database

2.1 데이터베이스 접속

mysql

2.2 데이터베이스 생성

MariaDB [(none)]> CREATE DATABASE skyline DEFAULT CHARACTER SET \
  utf8 DEFAULT COLLATE utf8_general_ci;

2.3 접근 권한 부여

  • SKYLINE_DBPASS: 적절한 비번으로 변경
MariaDB [(none)]> GRANT ALL PRIVILEGES ON skyline.* TO 'skyline'@'localhost' \
  IDENTIFIED BY 'SKYLINE_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON skyline.* TO 'skyline'@'%' \
  IDENTIFIED BY 'SKYLINE_DBPASS';

3. Configure OpenStack User

3.1 관리자(admin) 접근을 위한 환경 변수 적용

. admin-openrc

3.2 skyline 사용자 생성

# openstack user create --domain default --password-prompt skyline

3.3 권한(Role) 부여

# openstack role add --project service --user skyline admin

4. Skyline Configuration

4.1 Skyline 이미지 다운로드

# docker pull 99cloud/skyline:latest

4.2 디렉토리 생성

mkdir -p /etc/skyline /var/log/skyline /var/lib/skyline /var/log/nginx

4.3 설정 파일 준비

skyline-apiserver GitHub 저장소에서 샘플 설정 파일을 복사한 후, 환경에 맞게 수정하였다.

  • CONTROLLER_IP: 관리 인터페이스 IP
  • SKYLINE_PASS: 설정한 비번으로 변경
# git clone https://opendev.org/skyline/skyline-apiserver
# cp skyline-apiserver/etc/skyline.yaml.sample /etc/skyline/skyline.yaml
# vi /etc/skyline/skyline.yaml
default:
  access_log_file: skyline-nginx-access.log
  access_token_expire: 3600
  access_token_renew: 1800
  cafile: ''
  cors_allow_origins: []
  database_url: mysql://skyline:1234@CONTROLLER_IP:3306/skyline
  debug: true
  error_log_file: skyline-nginx-error.log
  log_dir: /var/log/skyline
  log_file: skyline.log
  policy_file_path: /etc/skyline/policy
  policy_file_suffix: policy.yaml
  prometheus_basic_auth_password: ''
  prometheus_basic_auth_user: ''
  prometheus_enable_basic_auth: false
  prometheus_endpoint: http://localhost:9091
  secret_key: aCtmgbcUqYUy_HNVg5BDXCaeJgJQzHJXwqbXr0Nmb2o
  session_name: session
  ssl_enabled: true
openstack:
  base_domains:
  - heat_user_domain
  default_region: RegionOne
  enforce_new_defaults: true
  extension_mapping:
    floating-ip-port-forwarding: neutron_port_forwarding
    fwaas_v2: neutron_firewall
    qos: neutron_qos
    vpnaas: neutron_vpn
  interface_type: public
  keystone_url: http://CONTROLLER_IP:5000/v3/
  nginx_prefix: /api/openstack
  reclaim_instance_interval: 604800
  service_mapping:
    baremetal: ironic
    volumev3: cinder
    compute: nova
    container: zun
    container-infra: magnum
    database: trove
    dns: designate
    identity: keystone
    image: glance
    instance-ha: masakari
    key-manager: barbican
    load-balancer: octavia
    network: neutron
    object-store: swift
    orchestration: heat
    placement: placement
    sharev2: manilav2
  sso_enabled: false
  sso_protocols:
  - openid
  sso_region: RegionOne
  system_admin_roles:
  - admin
  - system_admin
  system_project: service
  system_project_domain: Default
  system_reader_roles:
  - system_reader
  system_user_domain: Default
  system_user_name: skyline
  system_user_password: 'SKYLINE_PASS'
setting:
  base_settings:
  - flavor_families
  - gpu_models
  - usb_models
  flavor_families:
  - architecture: x86_architecture
    categories:
    - name: general_purpose
      properties: []
    - name: compute_optimized
      properties: []
    - name: memory_optimized
      properties: []
    - name: high_clock_speed
      properties: []
  - architecture: heterogeneous_computing
    categories:
    - name: compute_optimized_type_with_gpu
      properties: []
    - name: visualization_compute_optimized_type_with_gpu
      properties: []
  gpu_models:
  - nvidia_t4
  usb_models:
  - usb_c

4.4 Dockerfile 작성

# mkdir my-skyline && cd my-skyline
# vi Dockerfile
FROM 99cloud/skyline:latest

RUN apt-get update && \
    apt-get install -y pkg-config libmysqlclient-dev build-essential && \
    rm -rf /var/lib/apt/lists/*

RUN pip install mysqlclient

4.5 이미지 빌드

# docker build -t my-skyline:latest .

5. Run Skyline Services

5.1 초기 부트스트랩 실행

# docker run -d --name skyline_bootstrap \
  -e KOLLA_BOOTSTRAP="" \
  -v /etc/skyline/skyline.yaml:/etc/skyline/skyline.yaml \
  -v /var/log:/var/log \
  --net=host 99cloud/skyline:latest

결과 확인

# docker logs skyline_bootstrap

5.2 부트스트랩 서버 정리

# docker rm -f skyline_bootstrap

5.3 Skyline 서비스 실행

# docker run -d --name skyline \
  -v /etc/skyline/skyline.yaml:/etc/skyline/skyline.yaml \
  -v /var/log:/var/log \
  --net=host my-skyline:latest

6. Access the Skyline Dashboard

웹 브라우저에서 아래 경로로 접속해보자.

http://CONTROLLER_IP:9999

Skyline 로그인 화면이 정상적으로 출력되면 설치 성공이다!

참고 자료

0개의 댓글