diff --git a/README-zh_CN.rst b/README-zh_CN.rst index 3a3c7e2..09bb886 100644 --- a/README-zh_CN.rst +++ b/README-zh_CN.rst @@ -2,6 +2,8 @@ OpenStack Skyline APIServer =========================== +`English <./README.rst>`__ \| 简体中文 + Skyline 是一个经过 UI 和 UE 优化过的 OpenStack 仪表盘,支持 OpenStack Train 及以上版本。Skyline 拥有现代化的技术栈和生态,更易于开发者维护和 使用者操作,以及更高的并发性能。 @@ -11,6 +13,8 @@ Skyline 的吉祥物是九色鹿。九色鹿源自于敦煌壁画《九色鹿本 Skyline 像九色鹿一样,轻巧、优雅,而又能力强大,为 OpenStack 社区和用户 提供更优质的 Dashboard。 +|image0| + **目录** - `Skyline API Server <#skyline-api-server>`__ @@ -35,6 +39,8 @@ Skyline 像九色鹿一样,轻巧、优雅,而又能力强大,为 OpenStac 资源 ---- +- `开发者手册 `__ +- `发布小结 `__ - `Wiki `__ - `Bug 跟踪器 `__ @@ -276,4 +282,5 @@ Kolla Ansible 部署 |image1| +.. |image0| image:: doc/source/images/logo/OpenStack_Project_Skyline_horizontal.png .. |image1| image:: doc/source/images/logo/nine-color-deer-64.png diff --git a/README.rst b/README.rst index 0a5599e..10744ef 100644 --- a/README.rst +++ b/README.rst @@ -1,35 +1,295 @@ -=========================== -OpenStack Skyline APIServer -=========================== +================== +Skyline API Server +================== -.. image:: https://governance.openstack.org/tc/badges/skyline-apiserver.svg - :target: https://governance.openstack.org/tc/reference/tags/index.html +English \| `简体中文 <./README-zh_CN.rst>`__ -.. Change things from this point on +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. -OpenStack Skyline APIServer is the back-end server of Skyline. +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. -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. +|image0| -You can learn more about Skyline APIServer at: +**Table of contents** -* `Wiki `__ -* `Developer Docs `__ -* `Blueprints `__ -* `Release notes `__ +- `Skyline API Server <#skyline-api-server>`__ -Getting Started ---------------- + - `Resources <#resources>`__ + - `Quick Start <#quick-start>`__ -If you'd like to run from the master branch, you can clone the git repo: + - `Prerequisites <#prerequisites>`__ + - `Configure <#configure>`__ + - `Deployment with Sqlite <#deployment-with-sqlite>`__ + - `Deployment with MariaDB <#deployment-with-mariadb>`__ + - `Test Access <#test-access>`__ - git clone https://opendev.org/openstack/skyline-apiserver + - `Develop Skyline-apiserver <#develop-skyline-apiserver>`__ -You can raise bugs on `Launchpad `__ + - `Dependent tools <#dependent-tools>`__ + - `Install & Run <#install--run>`__ + + - `Devstack Integration <#devstack-integration>`__ + - `Kolla Ansible Deployment <#kolla-ansible-deployment>`__ + +Resources +--------- + +- `Developer Docs `__ +- `Release notes `__ +- `Wiki `__ +- `Bug Tracker `__ + +Quick Start +----------- + +Prerequisites +~~~~~~~~~~~~~ + +- An OpenStack environment that runs at least core components and can + access OpenStack components through Keystone endpoints +- A Linux server with container engine + (`docker `__ or + `podman `__) + installed + +Configure +~~~~~~~~~ + +1. 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 + +Deployment with Sqlite +~~~~~~~~~~~~~~~~~~~~~~ + +1. Run the skyline_bootstrap container to bootstrap + + .. code:: bash + + 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 + +2. Run the skyline service after bootstrap is complete + + .. code:: bash + + docker rm -f skyline_bootstrap + + .. + + If you need to modify skyline port, add + ``-e LISTEN_ADDRESS=`` in the following command + + ``LISTEN_ADDRESS`` defaults to ``0.0.0.0:9999`` + + .. code:: bash + + 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 + +Deployment with MariaDB +~~~~~~~~~~~~~~~~~~~~~~~ + +1. Connect to database of the OpenStack environment and create the + ``skyline`` database + + .. code:: bash + + $ 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) + +2. Grant proper access to the databases + + Replace ``SKYLINE_DBPASS`` with a suitable password. + + .. code:: bash + + 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) + +3. Create skyline service credentials + + .. code:: bash + + # 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 + +4. Run the skyline_bootstrap container to bootstrap + + .. code:: bash + + 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 + +5. Run the skyline service after bootstrap is complete + + .. code:: bash + + docker rm -f skyline_bootstrap + + .. + + If you need to modify skyline port, add + ``-e LISTEN_ADDRESS=`` in the following command + + ``LISTEN_ADDRESS`` defaults to ``0.0.0.0:9999`` + + .. code:: bash + + docker run -d --name skyline --restart=always -v /etc/skyline/skyline.yaml:/etc/skyline/skyline.yaml --net=host 99cloud/skyline:latest + +Test Access +~~~~~~~~~~~ + +You can now access the dashboard: ``https://: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.8 +- node >= 10.22.0 (Optional if you only develop with apiserver) +- yarn >= 1.22.4 (Optional if you only develop with apiserver) + +Install & Run +~~~~~~~~~~~~~ + +1. Installing dependency packages + + .. code:: bash + + tox -e venv + +2. Set skyline.yaml config file + + .. code:: bash + + cp etc/skyline.yaml.sample etc/skyline.yaml + export OS_CONFIG_DIR=$(pwd)/etc + + Maybe you should change the params with your real environment as + followed: + + .. code:: yaml + + - database_url + - keystone_url + - default_region + - interface_type + - system_project_domain + - system_project + - system_user_domain + - system_user_name + - system_user_password + + .. + + If 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. + +3. Init skyline database + + .. code:: bash + + source .tox/venv/bin/activate + make db_sync + deactivate + +4. Run skyline-apiserver + + .. code:: console + + $ 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. + +5. Build Image + + .. code:: bash + + make build Devstack Integration -------------------- -Fast integration with `devstack <./devstack/README.rst>`__ to build an environment. +`Fast integration with Devstack to build an +environment. <./devstack/README.rst>`__ + +Kolla Ansible Deployment +------------------------ + +`Kolla Ansible to build an environment. <./kolla/README.md>`__ + +|image1| + +.. |image0| image:: doc/source/images/logo/OpenStack_Project_Skyline_horizontal.png +.. |image1| image:: doc/source/images/logo/nine-color-deer-64.png