OpenStack 차세대 공식 대시보드로, 기존 Horizon 보다 더 빠르고 직관적인 UI/UX를 제공한다.
Docker를 활용하여 컨테이너로 Skyline을 배포해보자.
설치 환경은 다음과 같다.
# 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
# apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# docker --version

mysql
MariaDB [(none)]> CREATE DATABASE skyline DEFAULT CHARACTER SET \
utf8 DEFAULT COLLATE utf8_general_ci;
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';

. admin-openrc
# openstack user create --domain default --password-prompt skyline
# openstack role add --project service --user skyline admin

# docker pull 99cloud/skyline:latest
mkdir -p /etc/skyline /var/log/skyline /var/lib/skyline /var/log/nginx
skyline-apiserver GitHub 저장소에서 샘플 설정 파일을 복사한 후, 환경에 맞게 수정하였다.
CONTROLLER_IP: 관리 인터페이스 IPSKYLINE_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
# 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
# docker build -t my-skyline:latest .

# 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

# docker rm -f skyline_bootstrap
# docker run -d --name skyline \
-v /etc/skyline/skyline.yaml:/etc/skyline/skyline.yaml \
-v /var/log:/var/log \
--net=host my-skyline:latest
웹 브라우저에서 아래 경로로 접속해보자.
Skyline 로그인 화면이 정상적으로 출력되면 설치 성공이다!


