OpsAny SAAS应用架构¶
OpsAny SaaS应用是基于PaaS平台构建的各个独立的平台,可以使用PaaSAgent进行部署,也可以单独进行部署。
PaaSAgent部署SaaS¶
SaaS的部署和更新,主要依靠PaaSAgent服务,PaaSAgent顾名思义是PaaS的Agent,是PaaS平台执行SaaS维护的一个Agent,一个PaaS平台可以有测试环境和正式环境的PaaSAgent。
PaaSAgent简介¶
paasagent目录是PaaS平台中应用引擎(appengine)对应的agent模块源码目录
主要作用是:
- agent需要部署在应用服务器上
- 负责接收上层应用引擎(appengine)的请求指令,执行SaaS应用的部署和下架等任务操作(应用运行时环境的构建和进程托管)
技术栈:
- framework: labstack/echo
- python run time: virtualenv, uwsgi
依赖说明:
- paas: 使用内置应用时,从paas服务下载用户上传的saas部署包。
- appengine: 需要调用appengine的接口, 回写SaaS应用的部署日志。
部署脚本原理¶
当你执行./saas-base-install.sh install都干了什么?
-
- 创建SaaS需要的MySQL数据库(所以,安装PaaS的时候需要安装MySQL客户端,就是为了执行初始化)
-
- 创建SaaS需要的MongoDB数据库(所以,安装PaaS的时候需要安装MongoDB客户端,也是为了执行初始化)
-
- 导入资源平台(CMDB)的内置模型。(所以,安装完毕之后,打开资源平台-资源模型,有很多内置的数据)
-
- 增加SaaS应用的环境变量到PaaS平台中。(SaaS的数据库等配置是保存在PaaS平台上,安装的时候从PaaS平台获取,然后以环境变量的形式传递给程序)
-
- 执行deploy.py进行SaaS部署。该脚本的本质就是帮你上传和点击部署按钮。
SaaS包部署流程¶
不管是使用saas-base-install.sh调用deploy.py进行部署还是手工在开发中心-内置应用-进行部署,流程是一致的。 PaaSAgent会为每个SaaS创建Python虚拟环境,并且使用Supervisor+uwsgi启动,通过PaaSAgent的Nginx进行转发。所以PaaSAgent容器重启后,需要使用脚本手工启动所有的SaaS平台。
- 点击上传按钮时,上传SaaS包。包会被保存到PaaS容器中的/opt/opsany/paas/paas/media/saas_files/目录下。
- 点击部署按钮时,PaaSAgent从paas服务下载该文件,保存到paasagent容器的目录下。 具体paas的地址是在paas_agent_config.yaml中配置的PAAS_SERVER_URL参数获取。
- paasagent在目录下创建对应saas的Python虚拟环境。
- paasagent解压下载的saas包,并安装pkgs下所有的依赖包。
- paasagent为saas创建一个supervisor服务,自动生成supervisor的ini配置文件。
- paasagent通过supervisor启动saas服务。
- 执行django migration操作。
独立容器部署SaaS(待发布)¶
独立容器部署SaaS的方式为单个SaaS平台独立启动,监听一个Web端口,然后通过Nginx将请求转发至该端口。
案例:工作台访问
监听端口:7002
请求地址:/o/workbench
请求转发:192.168.56.11:7002
为了方便后期运维进行配置优化和性能调优,在部署时,会将每个SaaS需要挂载的配置放置在"\({INSTALL_PATH}/conf/opsany-saas/\)"目录下。然后挂载到个各个SAAS平台容器中。
[root@opsany-prod ~]# tree /opt/opsany/conf/opsany-saas/workbench/
/opt/opsany/conf/opsany-saas/workbench/
├── workbench-init.py # 工作台workbench项目配置文件(修改访问域名时使用)
├── workbench-nginx.conf # 请求转发到uwsgi的Nginx配置文件(通常不修改)
├── workbench-prod.py # 工作台workbench项目配置文件(修改例如数据库配置时使用)
├── workbench-supervisor.ini。# 工作台workbench服务启动配置文件(通常不修改)
└── workbench-uwsgi.ini # 工作台workbench的uwsgi配置文件(性能调优时使用)
SaaS端口明细¶
- 统一权限rbac:7001
- 工作台workbench:7002
- 资源平台cmdb:7003
- 管控平台control:7004
- 作业平台job:7005
- 基础监控monitor:7006
- 云管平台cmp:7007
- 堡垒机bastion:7008
- 应用平台devops:7009
- 可视化平台dashboard:7010