{"id":20111353,"url":"https://github.com/openstack/skyline-apiserver","last_synced_at":"2025-08-20T18:31:50.464Z","repository":{"id":44379488,"uuid":"459823737","full_name":"openstack/skyline-apiserver","owner":"openstack","description":"A modern dashboard for OpenStack - API server. Mirror of code maintained at opendev.org.","archived":false,"fork":false,"pushed_at":"2024-09-13T09:42:57.000Z","size":8540,"stargazers_count":32,"open_issues_count":0,"forks_count":25,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-09-13T10:36:23.709Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://opendev.org/openstack/skyline-apiserver","language":"Python","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openstack.png","metadata":{"files":{"readme":"README-zh_CN.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-02-16T02:27:51.000Z","updated_at":"2024-08-26T08:58:24.000Z","dependencies_parsed_at":"2023-02-10T20:16:09.438Z","dependency_job_id":"40bbccd9-f245-4c19-ae38-0016809d8d26","html_url":"https://github.com/openstack/skyline-apiserver","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openstack%2Fskyline-apiserver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openstack%2Fskyline-apiserver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openstack%2Fskyline-apiserver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openstack%2Fskyline-apiserver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openstack","download_url":"https://codeload.github.com/openstack/skyline-apiserver/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230445926,"owners_count":18227060,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-13T18:15:45.487Z","updated_at":"2025-08-20T18:31:50.429Z","avatar_url":"https://github.com/openstack.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"===========================\nOpenStack Skyline APIServer\n===========================\n\n`English \u003c./README.rst\u003e`__ \\| 简体中文\n\nSkyline 是一个经过 UI 和 UE 优化过的 OpenStack 仪表盘，支持 OpenStack\nTrain 及以上版本。Skyline 拥有现代化的技术栈和生态，更易于开发者维护和\n使用者操作，以及更高的并发性能。\n\nSkyline 的吉祥物是九色鹿。九色鹿源自于敦煌壁画《九色鹿本生》，其寓意是佛理\n因果和知恩图报，这与九州云自创办以来秉持的拥抱和反馈社区理念一致。我们也希望\nSkyline 像九色鹿一样，轻巧、优雅，而又能力强大，为 OpenStack 社区和用户\n提供更优质的 Dashboard。\n\n|image0|\n\n**目录**\n\n-  `Skyline API Server \u003c#skyline-api-server\u003e`__\n\n   -  `资源 \u003c#资源\u003e`__\n   -  `快速开始 \u003c#快速开始\u003e`__\n\n      -  `先决条件 \u003c#先决条件\u003e`__\n      -  `配置 \u003c#配置\u003e`__\n      -  `部署 - 数据库使用 Sqlite \u003c#部署---数据库使用-sqlite\u003e`__\n      -  `部署 - 数据库使用 MariaDB \u003c#部署---数据库使用-mariadb\u003e`__\n      -  `访问测试 \u003c#访问测试\u003e`__\n\n   -  `开发 Skyline-apiserver \u003c#开发-skyline-apiserver\u003e`__\n\n      -  `依赖工具 \u003c#依赖工具\u003e`__\n      -  `安装和运行 \u003c#安装和运行\u003e`__\n\n   -  `Devstack 集成 \u003c#devstack-集成\u003e`__\n   -  `Kolla Ansible 部署 \u003c#kolla-ansible-部署\u003e`__\n\n资源\n----\n\n-  `开发者手册 \u003chttps://docs.openstack.org/skyline-apiserver/latest/\u003e`__\n-  `发布小结 \u003chttps://docs.openstack.org/releasenotes/skyline-apiserver/\u003e`__\n-  `Wiki \u003chttps://wiki.openstack.org/wiki/Skyline\u003e`__\n-  `Bug 跟踪器 \u003chttps://launchpad.net/skyline-apiserver\u003e`__\n\n快速开始\n--------\n\n先决条件\n~~~~~~~~\n\n-  一个至少运行核心组件的 OpenStack 环境, 并能通过 Keystone endpoint\n   访问 OpenStack 组件\n-  一个安装有容器引擎的\n   (`docker \u003chttps://docs.docker.com/engine/install/\u003e`__ 或\n   `podman \u003chttps://podman.io/getting-started/installation\u003e`__) 的 Linux\n   服务器\n\n配置\n~~~~\n\n1. 在 Linux 服务器中编辑 ``/etc/skyline/skyline.yaml`` 文件\n\n   可以参考 `sample file \u003cetc/skyline.yaml.sample\u003e`__,\n   并根据实际的环境修改以下参数\n\n   -  database_url\n   -  keystone_url\n   -  default_region\n   -  interface_type\n   -  system_project_domain\n   -  system_project\n   -  system_user_domain\n   -  system_user_name\n   -  system_user_password\n\n2. 如果需要对接 prometheus 则需要修改以下配置\n\n   -  prometheus_basic_auth_password\n   -  prometheus_basic_auth_user\n   -  prometheus_enable_basic_auth\n   -  prometheus_endpoint\n\n部署 - 数据库使用 Sqlite\n~~~~~~~~~~~~~~~~~~~~~~~~\n\n如果从 dockerhub 拉取镜像失败可以从阿里镜像仓库中拉取，阿里镜像仓库中的镜像会每小时同步一下，镜像地址如下\n\n- registry.cn-shanghai.aliyuncs.com/99cloud-sh/skyline:zed\n- registry.cn-shanghai.aliyuncs.com/99cloud-sh/skyline:latest\n\n1. 运行 skyline_bootstrap 容器进行初始化引导\n\n   .. code:: bash\n\n      rm -rf /tmp/skyline \u0026\u0026 mkdir /tmp/skyline\n\n      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\n\n      # Check bootstrap is normal `exit 0`\n      docker logs skyline_bootstrap\n\n2. 初始化引导完成后运行 skyline 服务\n\n   .. code:: bash\n\n      docker rm -f skyline_bootstrap\n\n   如果需要修改 skyline 端口号，则在以下命令中添加 ``-e LISTEN_ADDRESS=\u003cip:port\u003e``\n\n   ``LISTEN_ADDRESS`` 默认为 ``0.0.0.0:9999``\n\n   如果需要修改某个 service 的 policy 规则，则在以下命令中添加 ``-v /etc/skyline/policy:/etc/skyline/policy``\n\n   将对应的 policy yaml 文件重命名为 ``\u003cservice_name\u003e_policy.yaml``, 并放其在 ``/etc/skyline/policy`` 文件夹下\n\n   .. code:: bash\n\n      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\n\n部署 - 数据库使用 MariaDB\n~~~~~~~~~~~~~~~~~~~~~~~~~\n\n参考：https://docs.openstack.org/skyline-apiserver/latest/install/docker-install-ubuntu.html\n\n1. 连接 OpenStack 环境的数据库, 并创建 ``skyline`` 数据库\n\n   .. code:: bash\n\n      $ mysql -u root -p\n      MariaDB [(none)]\u003e CREATE DATABASE IF NOT EXISTS skyline DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;\n      Query OK, 1 row affected (0.001 sec)\n\n2. 授予对数据库的适当访问权限\n\n   用合适的密码替换 ``SKYLINE_DBPASS``\n\n   .. code:: bash\n\n      MariaDB [(none)]\u003e GRANT ALL PRIVILEGES ON skyline.* TO 'skyline'@'localhost' IDENTIFIED BY 'SKYLINE_DBPASS';\n      Query OK, 0 rows affected (0.001 sec)\n\n      MariaDB [(none)]\u003e GRANT ALL PRIVILEGES ON skyline.* TO 'skyline'@'%'  IDENTIFIED BY 'SKYLINE_DBPASS';\n      Query OK, 0 rows affected (0.001 sec)\n\n3. 创建 skyline 服务凭证\n\n   .. code:: bash\n\n      # Source the admin credentials\n      $ source admin-openrc\n\n      # Create the skyline user\n      $ openstack user create --domain default --password-prompt skyline\n      User Password:\n      Repeat User Password:\n      +---------------------+----------------------------------+\n      | Field               | Value                            |\n      +---------------------+----------------------------------+\n      | domain_id           | default                          |\n      | enabled             | True                             |\n      | id                  | 1qaz2wsx3edc4rfv5tgb6yhn7ujm8ikl |\n      | name                | skyline                          |\n      | options             | {}                               |\n      | password_expires_at | 2020-08-08T08:08:08.123456       |\n      +---------------------+----------------------------------+\n\n      # Add the admin role to the skyline user:\n      $ openstack role add --project service --user skyline admin\n\n4. 运行 skyline_bootstrap 容器进行初始化引导\n\n   .. code:: bash\n\n      docker run -d --name skyline_bootstrap -e KOLLA_BOOTSTRAP=\"\" -v /etc/skyline/skyline.yaml:/etc/skyline/skyline.yaml --net=host 99cloud/skyline:latest\n\n      # Check bootstrap is normal `exit 0`\n      docker logs skyline_bootstrap\n\n5. 初始化引导完成后运行 skyline 服务\n\n   .. code:: bash\n\n      docker rm -f skyline_bootstrap\n\n   如果需要修改 skyline 端口号，则在以下命令中添加 ``-e LISTEN_ADDRESS=\u003cip:port\u003e``\n\n   ``LISTEN_ADDRESS`` 默认为 ``0.0.0.0:9999``\n\n   如果需要修改某个 service 的 policy 规则，则在以下命令中添加 ``-v /etc/skyline/policy:/etc/skyline/policy``\n\n   将对应的 policy yaml 文件重命名为 ``\u003cservice_name\u003e_policy.yaml``, 并放其在 ``/etc/skyline/policy`` 文件夹下\n\n   .. code:: bash\n\n      docker run -d --name skyline --restart=always -v /etc/skyline/skyline.yaml:/etc/skyline/skyline.yaml --net=host 99cloud/skyline:latest\n\nAPI Doc\n~~~~~~~~~\n\n你可以使用 ``https://\u003cip_address\u003e:9999/api/openstack/skyline/docs`` 来访问 API doc\n\n访问测试\n~~~~~~~~\n\n现在你可以访问仪表盘: ``https://\u003cip_address\u003e:9999``\n\n开发 Skyline-apiserver\n----------------------\n\n**支持 Linux 和 Mac 操作系统 (推荐 Linux 操作系统) (由于 uvloop 和 cython 库)**\n\n依赖工具\n~~~~~~~~\n\npython 使用了 3.7 版本的新特性 Context Variables 以及 uvloop (0.15.0+\n需要 python 3.7+)，考虑大部分系统不支持 python 3.7 ，所以选择支持\npython 3.8 及以上版本\n\n-  make \u003e= 3.82\n-  python \u003e= 3.8\n-  node \u003e= 10.22.0 (可选，只开发 API 就用不到)\n-  yarn \u003e= 1.22.4 (可选，只开发 API 就用不到)\n\n安装和运行\n~~~~~~~~~~\n\n1. 安装依赖包\n\n   .. code:: bash\n\n      tox -e venv\n\n2. 配置 ``skyline.yaml`` 文件\n\n   .. code:: bash\n\n      cp etc/skyline.yaml.sample etc/skyline.yaml\n      export OS_CONFIG_DIR=$(pwd)/etc\n\n   可能你需要根据实际的环境修改以下参数：\n\n   .. code:: yaml\n\n      - database_url\n      - keystone_url\n      - default_region\n      - interface_type\n      - system_project_domain\n      - system_project\n      - system_user_domain\n      - system_user_name\n      - system_user_password\n\n   如果你为 ``database_url`` 设置了类似 ``sqlite:////tmp/skyline.db``\n   ，只需要执行以下操作。 如果你为 ``database_url`` 设置了类似\n   ``mysql://root:root@localhost:3306/skyline`` ，你应该先参考\n   ``部署 - 数据库使用 MariaDB`` 一章中的 ``1`` 和 ``2`` 步骤。\n\n3. 初始化 skyline 数据库\n\n   .. code:: bash\n\n      source .tox/venv/bin/activate\n      make db_sync\n      deactivate\n\n4. 运行 skyline-apiserver\n\n   .. code:: console\n\n      $ source .tox/venv/bin/activate\n      $ uvicorn --reload --reload-dir skyline_apiserver --port 28000 --log-level debug skyline_apiserver.main:app\n\n      INFO:     Uvicorn running on http://127.0.0.1:28000 (Press CTRL+C to quit)\n      INFO:     Started reloader process [154033] using statreload\n      INFO:     Started server process [154037]\n      INFO:     Waiting for application startup.\n      INFO:     Application startup complete.\n\n   此时你可访问在线 API 文档：\\ ``http://127.0.0.1:28000/docs``\\ 。\n\n   如果用 vscode 调试的话，可以通过 ``.vscode/launch.json`` 启动调试器。\n\n5. 构建镜像\n\n   .. code:: bash\n\n      make build\n\nDevstack 集成\n-------------\n\n`与 Devstack 快速集成，搭建环境。 \u003c./devstack/README.rst\u003e`__\n\nKolla Ansible 部署\n------------------\n\n`使用 Kolla Ansible 部署环境。 \u003c./kolla/README-zh_CN.md\u003e`__\n\n|image1|\n\n.. |image0| image:: doc/source/images/logo/OpenStack_Project_Skyline_horizontal.png\n.. |image1| image:: doc/source/images/logo/nine-color-deer-64.png\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenstack%2Fskyline-apiserver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenstack%2Fskyline-apiserver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenstack%2Fskyline-apiserver/lists"}