Go to file
Boxiang Zhu 7ba07dbf70 feat: Add doc base frame
Add doc base frame

Change-Id: Id0a4168873232ef7feedaf1e1c1b6ed2b69a8f17
2022-07-29 14:31:57 +08:00
.vscode chore: Remove poetry 2022-05-25 22:26:42 +08:00
container Add skyline port settings 2022-06-23 14:44:23 +08:00
devstack chore: Remove poetry 2022-05-25 22:26:42 +08:00
doc feat: Add doc base frame 2022-07-29 14:31:57 +08:00
docs refactor: Remove base_roles and add more into extension_mapping 2022-07-28 18:17:10 +08:00
etc refactor: Remove base_roles and add more into extension_mapping 2022-07-28 18:17:10 +08:00
kolla fix: Update .zuul.yaml 2022-03-10 19:10:57 +08:00
playbooks/devstack chore: Remove poetry 2022-05-25 22:26:42 +08:00
releasenotes feat: Add barbican policy and service_mapping 2022-06-07 14:05:47 +08:00
skyline_apiserver refactor: Remove base_roles and add more into extension_mapping 2022-07-28 18:17:10 +08:00
tools feat: Support mypy check 2022-07-28 16:09:31 +08:00
.dockerignore feat: Add doc base frame 2022-07-29 14:31:57 +08:00
.gitignore feat: Add doc base frame 2022-07-29 14:31:57 +08:00
.gitreview fix: update skyline nginx log file address 2022-02-09 16:42:42 +08:00
.isort.cfg chore: Remove poetry 2022-05-25 22:26:42 +08:00
.zuul.yaml feat: Add doc base frame 2022-07-29 14:31:57 +08:00
bindep.txt feature: Add ZUUL JOBs 2021-08-25 15:01:17 +08:00
LICENSE feat: Add initial code of skyline-apiserver 2021-06-01 23:39:57 +08:00
Makefile fix: Fix the folder name of skyline-console 2022-05-27 20:00:57 +08:00
MANIFEST.in fix: Add MANIFEST.in and remove templates from packages 2022-07-21 13:42:09 +08:00
mypy.ini feat: Support mypy check 2022-07-28 16:09:31 +08:00
pytest.ini chore: Remove poetry 2022-05-25 22:26:42 +08:00
README-zh_CN.rst docs: Change md file to rst file 2022-07-20 12:00:10 +08:00
README.rst docs: Change md file to rst file 2022-07-20 12:00:10 +08:00
requirements.txt feat: Support system scope for policy list and check 2022-07-18 14:47:12 +08:00
setup.cfg fix: Add MANIFEST.in and remove templates from packages 2022-07-21 13:42:09 +08:00
setup.py chore: Remove poetry 2022-05-25 22:26:42 +08:00
test-requirements.txt feat: Support mypy check 2022-07-28 16:09:31 +08:00
tox.ini feat: Add doc base frame 2022-07-29 14:31:57 +08:00

==================
Skyline API Server
==================

English \| `简体中文 <./README-zh_CN.rst>`__

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.

|image0|

**Table of contents**

-  `Skyline API Server <#skyline-api-server>`__

   -  `Resources <#resources>`__
   -  `Quick Start <#quick-start>`__

      -  `Prerequisites <#prerequisites>`__
      -  `Configure <#configure>`__
      -  `Deployment with Sqlite <#deployment-with-sqlite>`__
      -  `Deployment with MariaDB <#deployment-with-mariadb>`__
      -  `Test Access <#test-access>`__

   -  `Develop Skyline-apiserver <#develop-skyline-apiserver>`__

      -  `Dependent tools <#dependent-tools>`__
      -  `Install & Run <#install--run>`__

   -  `Devstack Integration <#devstack-integration>`__
   -  `Kolla Ansible Deployment <#kolla-ansible-deployment>`__

Resources
---------

-  `Wiki <https://wiki.openstack.org/wiki/Skyline>`__
-  `Bug Tracker <https://launchpad.net/skyline-apiserver>`__

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 <https://docs.docker.com/engine/install/>`__ or
   `podman <https://podman.io/getting-started/installation>`__)
   installed

Configure
~~~~~~~~~

1. Edit the ``/etc/skyline/skyline.yaml`` file in linux server

   You can refer to the `sample file <etc/skyline.yaml.sample>`__, 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=<ip:port>`` 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=<ip:port>`` 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://<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.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 to build an
environment. <./devstack/README.rst>`__

Kolla Ansible Deployment
------------------------

`Kolla Ansible to build an environment. <./kolla/README.md>`__

|image1|

.. |image0| image:: docs/images/OpenStack_Project_Skyline_horizontal.png
.. |image1| image:: docs/images/nine-color-deer-64.png