Add configurable policy files. Change-Id: Ib4395b58dccf94aa18a88b66c9ee3e1e33df9787
9.3 KiB
OpenStack Skyline APIServer
English | 简体中文
Skyline 是一个经过 UI 和 UE 优化过的 OpenStack 仪表盘,支持 OpenStack Train 及以上版本。Skyline 拥有现代化的技术栈和生态,更易于开发者维护和 使用者操作,以及更高的并发性能。
Skyline 的吉祥物是九色鹿。九色鹿源自于敦煌壁画《九色鹿本生》,其寓意是佛理 因果和知恩图报,这与九州云自创办以来秉持的拥抱和反馈社区理念一致。我们也希望 Skyline 像九色鹿一样,轻巧、优雅,而又能力强大,为 OpenStack 社区和用户 提供更优质的 Dashboard。
目录
资源
快速开始
先决条件
- 一个至少运行核心组件的 OpenStack 环境, 并能通过 Keystone endpoint 访问 OpenStack 组件
- 一个安装有容器引擎的 (docker 或 podman) 的 Linux 服务器
配置
在 Linux 服务器中编辑
/etc/skyline/skyline.yaml
文件可以参考 sample file, 并根据实际的环境修改以下参数
- database_url
- keystone_url
- default_region
- interface_type
- system_project_domain
- system_project
- system_user_domain
- system_user_name
- system_user_password
部署 - 数据库使用 Sqlite
如果从 dockerhub 拉取镜像失败可以从阿里镜像仓库中拉取,阿里镜像仓库中的镜像会每小时同步一下,镜像地址如下
- registry.cn-shanghai.aliyuncs.com/99cloud-sh/skyline:zed
- registry.cn-shanghai.aliyuncs.com/99cloud-sh/skyline:latest
运行 skyline_bootstrap 容器进行初始化引导
rm -rf /tmp/skyline && mkdir /tmp/skyline docker run -d --name skyline_bootstrap -e KOLLA_BOOTSTRAP="" -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_bootstrap
初始化引导完成后运行 skyline 服务
docker rm -f skyline_bootstrap
如果需要修改 skyline 端口号,则在以下命令中添加
-e LISTEN_ADDRESS=<ip:port>
LISTEN_ADDRESS
默认为0.0.0.0:9999
如果需要修改某个 service 的 policy 规则,则在以下命令中添加
-v /etc/skyline/policy:/etc/skyline/policy
将对应的 policy yaml 文件重命名为
<service_name>_policy.yaml
, 并放其在/etc/skyline/policy
文件夹下docker run -d --name skyline --restart=always -v /etc/skyline/skyline.yaml:/etc/skyline/skyline.yaml -v /tmp/skyline:/tmp --net=host 99cloud/skyline:latest
部署 - 数据库使用 MariaDB
参考:https://docs.openstack.org/skyline-apiserver/latest/install/docker-install-ubuntu.html
连接 OpenStack 环境的数据库, 并创建
skyline
数据库$ mysql -u root -p MariaDB [(none)]> CREATE DATABASE IF NOT EXISTS skyline DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; Query OK, 1 row affected (0.001 sec)
授予对数据库的适当访问权限
用合适的密码替换
SKYLINE_DBPASS
MariaDB [(none)]> GRANT ALL PRIVILEGES ON skyline.* TO 'skyline'@'localhost' IDENTIFIED BY 'SKYLINE_DBPASS'; Query OK, 0 rows affected (0.001 sec) MariaDB [(none)]> GRANT ALL PRIVILEGES ON skyline.* TO 'skyline'@'%' IDENTIFIED BY 'SKYLINE_DBPASS'; Query OK, 0 rows affected (0.001 sec)
创建 skyline 服务凭证
# Source the admin credentials $ source admin-openrc # Create the skyline user $ openstack user create --domain default --password-prompt skyline User Password: Repeat User Password: +---------------------+----------------------------------+ | Field | Value | +---------------------+----------------------------------+ | domain_id | default | | enabled | True | | id | 1qaz2wsx3edc4rfv5tgb6yhn7ujm8ikl | | name | skyline | | options | {} | | password_expires_at | 2020-08-08T08:08:08.123456 | +---------------------+----------------------------------+ # Add the admin role to the skyline user: $ openstack role add --project service --user skyline admin
运行 skyline_bootstrap 容器进行初始化引导
docker run -d --name skyline_bootstrap -e KOLLA_BOOTSTRAP="" -v /etc/skyline/skyline.yaml:/etc/skyline/skyline.yaml --net=host 99cloud/skyline:latest # Check bootstrap is normal `exit 0` docker logs skyline_bootstrap
初始化引导完成后运行 skyline 服务
docker rm -f skyline_bootstrap
如果需要修改 skyline 端口号,则在以下命令中添加
-e LISTEN_ADDRESS=<ip:port>
LISTEN_ADDRESS
默认为0.0.0.0:9999
如果需要修改某个 service 的 policy 规则,则在以下命令中添加
-v /etc/skyline/policy:/etc/skyline/policy
将对应的 policy yaml 文件重命名为
<service_name>_policy.yaml
, 并放其在/etc/skyline/policy
文件夹下docker run -d --name skyline --restart=always -v /etc/skyline/skyline.yaml:/etc/skyline/skyline.yaml --net=host 99cloud/skyline:latest
API Doc
你可以使用
https://<ip_address>:9999/api/openstack/skyline/docs
来访问 API doc
访问测试
现在你可以访问仪表盘:
https://<ip_address>:9999
开发 Skyline-apiserver
支持 Linux 和 Mac 操作系统 (推荐 Linux 操作系统) (由于 uvloop 和 cython 库)
依赖工具
python 使用了 3.7 版本的新特性 Context Variables 以及 uvloop (0.15.0+ 需要 python 3.7+),考虑大部分系统不支持 python 3.7 ,所以选择支持 python 3.8 及以上版本
- make >= 3.82
- python >= 3.8
- node >= 10.22.0 (可选,只开发 API 就用不到)
- yarn >= 1.22.4 (可选,只开发 API 就用不到)
安装和运行
安装依赖包
tox -e venv
配置
skyline.yaml
文件cp etc/skyline.yaml.sample etc/skyline.yaml export OS_CONFIG_DIR=$(pwd)/etc
可能你需要根据实际的环境修改以下参数:
- database_url - keystone_url - default_region - interface_type - system_project_domain - system_project - system_user_domain - system_user_name - system_user_password
如果你为
database_url
设置了类似sqlite:////tmp/skyline.db
,只需要执行以下操作。 如果你为database_url
设置了类似mysql://root:root@localhost:3306/skyline
,你应该先参考部署 - 数据库使用 MariaDB
一章中的1
和2
步骤。初始化 skyline 数据库
source .tox/venv/bin/activate make db_sync deactivate
运行 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.
此时你可访问在线 API 文档:
http://127.0.0.1:28000/docs
。如果用 vscode 调试的话,可以通过
.vscode/launch.json
启动调试器。构建镜像
make build