OpsAny系统架构¶
OpsAny有两个部分组成:PaaS平台和SaaS应用。
-
PaaS平台:提供运行SaaS应用的管理,包括统一登录、开发中心、应用更新、部署。
-
SaaS应用:所有SaaS应用采用统一的开发框架(基于Django二次开发),部署在PaaS平台上。
所有的SaaS应用经过简单的调整也是可以脱离PaaS平台独立运行的。
PaaS平台¶
OpsAny-PaaS是基于腾讯开源bk-PaaS二次开发的运维开发平台,让运维开发者可以方便快捷地创建、开发、部署和管理运维SaaS应用。
它提供了应用引擎、前后台开发框架、API网关、调度引擎、统一登录、公共组件等模块,帮助用户快速、低成本、免运维地构建支撑工具和运营系统(统称为SaaS应用),它为一个SaaS应用从创建到部署,再到后续的维护管理提供了完善的自动化和自助化服务,从而使开发者可以集中精力关注SaaS应用的逻辑开发。
我们在bk-PaaS的基础上做了以下修改和变更:
- 增加WebSocket功能,用于堡垒机底层通信。
- 修改了appengine的saas应用上传和部署逻辑,支持指定SAAS的Secret Key,不使用白名单机制。
- 修改了login部分逻辑,用于和统一权限配合。
- 修改了paasagent的agent代码,增加了配置参数,修改了默认的SAAS配置文件。
- 增加了esb的API等。
PaaS平台默认使用Docker容器化部署,开机会自动启动。
PaaS平台中的paas服务¶
paas服务是PaaS平台中的开发者中心及web工作台的功能。
主要作用:
- 为SaaS应用使用者提供访问SaaS应用入口
- 为SaaS应用开发者提供开发及管理SaaS应用的功能
- 为平台管理员提供用户管理入口
由web工作台和开发者中心两部分组成:
- web工作台: 已发布SaaS的应用列表, 作为统一的入口, 并且包含一系列常用链接等, 同时管理员可以进行用户管理
- 开发者中心: 包含SaaS应用创建/部署/下架等功能入口, 同时可以对服务器信息/第三方服务信息等进行管理, 同时包含SaaS开发必须的文档及资源下载入口
技术栈
- framework: Django 1.8.11
- template: mako
- database: mysql
依赖说明
- mysql: 平台数据库
- appengine: 需要调用appengine接口, 进行应用部署、下架等操作
- login: 调用统一登录服务接口, 判定用户登录态
PaaS平台中的login服务¶
login服务是统一登录服务
主要作用是: - 为PaaS平台和SaaS应用提供统一的用户身份认证和单点登录服务 - 支持所有用户统一管理和简单授权 - 支持统一登录对接企业内部登录体系
由统一登录模块和自定义接入企业登录模块两部分组成:
- 统一登录模块: 提供用户登录入口,用户信息管理和简单授权管理
- 自定义接入企业登录模块: 支持将PaaS统一登录对接企业内部登录体系,让用户使用企业内部的身份认证
技术栈
- framework: Django 1.8.11
- database: mysql
依赖服务
- mysql: 平台数据库
PaaS平台中的Appengine¶
appengine目录是PaaS平台中, 负责托管 SaaS 应用的后台服务模块(应用引擎)源码目录。
主要作用是:
- 提供SaaS应用生命周期的管理功能,包括提测、上线、下架等,与PaaSAgent交互
- 提供SaaS应用依赖的第三方服务的管理功能,包括服务申请,服务配置等
技术栈
- framework: Django 1.8.11
- database: mysql
依赖说明
- paasagent: 需要调用paasagent接口, 完成对SaaS应用生命周期的管理功能
- mysql: 平台数据库
PaaS平台中的ESB¶
ESB是PaaS平台中的API接口服务总线。它将底层原子平台或第三方系统接口,以自助对接的方式或编码的方式封装成一个个原子组件,以统一的云API规范为上层SaaS应用提供API服务。esb目录是API网关的源码目录。
API网关的主要作用是:
- 为SaaS应用开发者提供API
- 为管理员提供自助接入API到API网关的服务
- 为管理员提供网关管理入口
- 提供组件开发模板,支持编码形式开发API组件对接API网关
技术栈
- framework: Django 1.8.11
- database: mysql
- cache: redis
依赖说明
- mysql: 平台数据库
- redis: 缓存服务
- login: 调用统一登录服务接口,判定用户登录态
- paas: 访问PaaS平台数据库,认证SaaS应用
SaaS应用¶
所有的SaaS应用均是使用PaasAgent进行安装部署的,PaaSAgent会创建一个Python虚拟环境,并为SaaS应用自动安装好对应的Python依赖,并使用Supervisor进行启动。
SaaS的配置管理¶
SaaS的配置是在PaaS上通过应用变量进行传递的,所有SaaS的配置文件中,会优先获取变量。当部署一个SaaS应用时,AppEngie会获取到每个SaaS的环境变量配置(安装初始化的时候写入到数据库中),然后传递给PaaSAgent。PaaSAgent在创建SaaS的启动的supervisord的配置文件时,会传递这些变量。