OpenStack Skyline APIServer
Project description
English | 简体中文
Skyline is an OpenStack dashboard optimized by UI and UE, support OpenStack Train+. It has a modern technology stack and ecology, is easier for developers to maintain and operate by users, and has higher concurrency performance.
Skyline’s mascot is the nine-color deer. The nine-color deer comes from Dunhuang mural “the nine-color king deer”, whose moral is Buddhist cause-effect and gratefulness, which is consistent with 99cloud’s philosophy of embracing and feedback community since its inception. We also hope Skyline can keep light, elegant and powerful as the nine-color deer, to provide a better dashboard for the openstack community and users.
Table of contents
Resources
Quick Start
Prerequisites
Configure
Edit the /etc/skyline/skyline.yaml file in linux server
You can refer to the sample file, and modify the following parameters according to the actual environment
database_url
keystone_url
default_region
interface_type
system_project_domain
system_project
system_user_domain
system_user_name
system_user_password
If you need to dock prometheus, you need to modify the following parameters
prometheus_basic_auth_password
prometheus_basic_auth_user
prometheus_enable_basic_auth
prometheus_endpoint
Deployment with Sqlite
Run the skyline_bootstrap container to bootstrap
rm -rf /tmp/skyline && mkdir /tmp/skyline && mkdir /var/log/skyline docker run -d --name skyline_bootstrap -e KOLLA_BOOTSTRAP="" -v /var/log/skyline:/var/log/skyline -v /etc/skyline/skyline.yaml:/etc/skyline/skyline.yaml -v /tmp/skyline:/tmp --net=host 99cloud/skyline:latest # Check bootstrap is normal `exit 0` docker logs skyline_bootstrapRun the skyline service after bootstrap is complete
docker rm -f skyline_bootstrapIf you need to modify skyline port, add -e LISTEN_ADDRESS=<ip:port> in the following command
LISTEN_ADDRESS defaults to 0.0.0.0:9999
If you need to modify the policy rules of a service, add -v /etc/skyline/policy:/etc/skyline/policy in the following command
Rename the service policy yaml file to <service_name>_policy.yaml, and place it in /etc/skyline/policy folder
docker run -d --name skyline --restart=always -v /var/log/skyline:/var/log/skyline -v /etc/skyline/skyline.yaml:/etc/skyline/skyline.yaml -v /tmp/skyline:/tmp --net=host 99cloud/skyline:latest
Deployment with MariaDB
https://docs.openstack.org/skyline-apiserver/latest/install/docker-install-ubuntu.html
API Doc
You can visit the API doc https://<ip_address>:9999/api/openstack/skyline/docs
Test Access
You can now access the dashboard: https://<ip_address>:9999
Develop Skyline-apiserver
Support Linux & Mac OS (Recommend Linux OS) (Because uvloop & cython)
Dependent tools
Use the new feature Context Variables of python37 & uvloop(0.15.0+ requires python37). Considering that most systems do not support python37, we choose to support python38 at least.
make >= 3.82
python >= 3.9
node >= 10.22.0 (Optional if you only develop with apiserver)
yarn >= 1.22.4 (Optional if you only develop with apiserver)
Install & Run
Installing dependency packages
tox -e venv . .tox/venv/bin/activate pip install -r requirements.txt -r test-requirements.txt -chttps://releases.openstack.org/constraints/upper/master pip install -e .Set skyline.yaml config file
cp etc/skyline.yaml.sample etc/skyline.yaml export OS_CONFIG_DIR=$(pwd)/etcMaybe you should change the params with your real environment as followed:
- database_url - keystone_url - default_region - interface_type - system_project_domain - system_project - system_user_domain - system_user_name - system_user_passwordIf you set such as sqlite:////tmp/skyline.db for database_url , just do as followed. If you set such as mysql://root:root@localhost:3306/skyline for database_url , you should refer to steps 1 and 2 of the chapter Deployment with MariaDB at first.
Init skyline database
source .tox/venv/bin/activate make db_sync deactivateRun skyline-apiserver
$ source .tox/venv/bin/activate $ uvicorn --reload --reload-dir skyline_apiserver --port 28000 --log-level debug skyline_apiserver.main:app INFO: Uvicorn running on http://127.0.0.1:28000 (Press CTRL+C to quit) INFO: Started reloader process [154033] using statreload INFO: Started server process [154037] INFO: Waiting for application startup. INFO: Application startup complete.You can now access the online API documentation: http://127.0.0.1:28000/docs.
Or, you can launch debugger with .vscode/lauch.json with vscode.
Build Image
make build
DevStack Integration
Kolla Ansible Deployment
Kolla Ansible to build an environment.
FAQ
Policy
- Q: Why common user could login, but could list the nova servers?
Symptom: ----------------------------------- 1. Login Horizon with common user A, list servers OK. 2. Login Skyline with same common user A, could list the nova servers, F12 show no http requests sent from network, however webpage show 401, do not allow to list servers Root Cause Analysis: ----------------------------------- 1. Horizon don't know whether a user could do an action at a resource or not. It simply pass request to recording service, & service (Nova) do the check by its policy file. So it works. 2. Skyline check the action by itself, with /policy API. If you do not configure it, the default value follows community, like: https://docs.openstack.org/nova/2023.2/configuration/sample-policy.html How to fix: ----------------------------------- 1. By default, list servers need "project_reader_api": "role:reader and project_id:%(project_id)s" 2. You should config your customized role, for example: member, _member_, projectAdmin, etc, create implied reader role. "openstack implied role create --implied-role member projectAdmin", or "openstack implied role create --implied-role reader _member_" # openstack implied role list +----------------------------------+-----------------+----------------------------------+-------------------+ | Prior Role ID | Prior Role Name | Implied Role ID | Implied Role Name | +----------------------------------+-----------------+----------------------------------+-------------------+ | fe21c5a0d17149c2a7b02bf39154d110 | admin | 4376fc38ba6a44e794671af0a9c60ef5 | member | | 4376fc38ba6a44e794671af0a9c60ef5 | member | e081e01b7a4345bc85f8d3210b95362d | reader | | bee8fa36149e434ebb69b61d12113031 | projectAdmin | 4376fc38ba6a44e794671af0a9c60ef5 | member | | 77cec9fc7e764bd4bf60581869c048de | _member_ | e081e01b7a4345bc85f8d3210b95362d | reader | +----------------------------------+-----------------+----------------------------------+-------------------+
OpenStack-Ansible Deployment
OpenStack-Ansible does support Skyline deployments starting with 2024.1 (Caracal) release. In order to install Skyline you need to specify following in /etc/openstack_deploy/openstack_user_config.yml:
skyline_dashboard_hosts:
infra1:
ip: 172.20.236.111
infra2:
ip: 172.20.236.112
infra3:
ip: 172.20.236.113
This defines on which hosts skyline-apiserver and skyline-console will be installed. A corresponding LXC containers will be spawned on these hosts, in case you are using LXC for your deployment.
Once inventory is defined, you can run openstack-ansible openstack.osa.skyline to proceed with installation.
OpenStack-Ansible does support building skyline-console with yarn. This scenario makes sense, when you want to install an untagged version of skyline-console from a commit SHA. For that you need to override a variable skyline_console_git_install_branch with a required commit SHA. Role will detect that a custom version is being used and proceed with yarn build. You can also specify skyline_console_yarn_build: true explicitly to enable this behavior regardlessly.
For All-In-One (AIO) deployments it is sufficient to add skyline to the list of scenarios to get Skyline installed as a dashboard.
You can also have both Skyline and Horizon deployed. In that case, Horizon will be served on /horizon URI, while Skyline remain on /.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file skyline_apiserver-7.0.0.tar.gz.
File metadata
- Download URL: skyline_apiserver-7.0.0.tar.gz
- Upload date:
- Size: 9.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9f13f612907e5a3cb24312dcb4704b804c9df912de1623dd3f3f4861d9ac7af5
|
|
| MD5 |
dff805f611d5c10b960e01be171d1505
|
|
| BLAKE2b-256 |
e816098a407de1af8b9bb5ad8615576569f07dd0af7aa53b5774cdd7f8f37471
|
File details
Details for the file skyline_apiserver-7.0.0-py3-none-any.whl.
File metadata
- Download URL: skyline_apiserver-7.0.0-py3-none-any.whl
- Upload date:
- Size: 167.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
667d750efbcfb58f1bcc05e890d46f35c9a263b057f1992d4f0efb41afa9519e
|
|
| MD5 |
7011e5bfd6f16c2b1dedeaab3d36ca37
|
|
| BLAKE2b-256 |
6cfec8b8e792c24a7fd0affc7bb629f657abbcf052f3960c94d2e644d4f823ca
|