现状
制作
- sa+开发准备模板,提交到gerrit,并交叉review
- merge模板,sa使用镜像制作工具(oz)制作镜像(windows镜像除外)
- 对于初次制作的镜像,可能需要sa手工处理各种特殊问题(如网卡配置、服务配置等)
测试
- sa制作完毕,上传镜像到联调环境,一般设置为私有并共享给qa
- qa进行各种验证(部分已自动化)
- qa测试发现问题,则通知开发和sa进行分析解决
- sa和开发再次修改模板,并制作新镜像
- qa测试通过则通知sa上传到对应的公共测试、线上环境
- sa上传到线上环境admin账号下,并共享给qa
- qa在线上进行最后的验证,不通过则重新制作镜像
- qa测试完毕通知sa将镜像设置为public正式对外提供
发布
- sa负责上传到联调、演练、公共测试、线上环境
- sa负责镜像版本在各个环境的更新同步
- 目前线下环境镜像版本比较混乱,环境和镜像比较多,靠sa人肉维护不太现实
目标
制作
- 尽量自动化
- 做完的镜像要有初步检查脚本(比如各种软件是否安装成功,配置是否修改正确,二进制是否替换等),建议和镜像模板一起提交检查脚本
- sa根据初步检查结果决定是否要重新制作镜像
- 较小的配置改动,建议通过mount镜像的方式修改,而不是再次制作新镜像(有qa二次验证,不用担心这种修改导致镜像有问题)
测试
- 尽量自动化,最好全部自动化
- 可以实现两个检查脚本,一个用来检查镜像内部配置(可以参考sa的初步检查脚本并进行用例扩充),二是外部的云主机各种操作脚本(创建删除、挂卸卷、挂卸载网卡、迁移修改规格等)
发布
- 开发一个镜像发布管理系统(具有预发布功能),并使用glance上传镜像时可以从指定http地址下载镜像功能实现镜像自动发布
- 系统可以执行发布、查看、修改、共享、删除、弃用等镜像管理操作
- 系统可以查看镜像版本,与sa制作的最新镜像的版本差异等
- 系统可以更新指定镜像
- 其他附加功能
- 具体功能参考“发布场景”描述
发布场景
账户管理
分为多个权限级别,如sa、qa、dev、ro等,其中sa拥有最高权限,可以增加删除账号,sa的账号需要手工在数据库中初始化,其他账号由sa创建管理。
用户登录
用户输入用户名密码即可登录,可以限制仅在办公区访问。
sa预发布镜像到发布服务器
sa制作完成后,将镜像拷贝到发布NOS等存储服务(对外需提供无需认证的http下载链接,用来glance-api下载镜像),该服务器要可以与所有环境的glance服务的网络连通,如果无法保证网络连通性,则需要部署多个发布服务器。
sa发布镜像到nos之后,登录发布系统,填写或者选择已有的镜像发行版类型(如Debian)、版本(如7.0)、位数(如64bit)、校验和(如镜像md5值)、镜像描述信息、镜像存放地址(如nos下载链接),完成预发布。
qa测试新制作镜像
sa预发布新镜像后,qa在web上切换到测试的环境(对应于发布系统与各环境网络全部连通场景),或者登录测试环境的发布服务web页面(对应各个环境独立部署发布服务场景),选择要测试的镜像(可以首先通过“操作”的“镜像详情”查看镜像制作时间、版本、md5等信息),点击“操作”中的预发布,预发布的镜像为“私有”属性,隶属于配置的管理员用户,qa通过“操作”中的“共享管理”功能,将预发布的镜像共享到自己的测试账号下,进行镜像测试,测试通过后,点击“操作”中的“测试通过”,表示该镜像已通过测试,可以发布到各个环境,只有“测试通过”的镜像才可以进行发布操作。
sa发布镜像到线上环境
首先是选择“预发布”操作,之后“共享管理”给qa测试,“测试通过”后,sa选择“发布”即可完成。
sa/qa/开发查看各环境镜像版本
打开相关web页面即可查看
sa/qa同步更新线下环境镜像版本
根据相关环境的镜像信息即可进行相关的发布操作,如果已经确认测试完毕的镜像,预发布后直接点测试通过最后发布即可。
sa/qa/开发查看各环境某个镜像的历史版本信息
点击版本信息即可查看
sa维护管理线上环境镜像
弃用/启用镜像
点击版本信息,并启用或者弃用某个版本的镜像即可
删除镜像
主要是为了sa清理镜像中间版本,防止镜像制作测试过程中产生的不可用镜像,被错误的发布到线上,以及删除某些确实无法使用的镜像,一般来说弃用镜像即可,不需要删除。
共享镜像
通过“操作”的“共享管理”即可
设置私有/公共镜像
预发布镜像都为私有,已发布的镜像都是公共,某些企业用户或者内部服务的专有镜像,不需要设置为公共镜像,通过“共享管理”共享给指定用户即可。 如果某个镜像需要从公共镜像改为私有镜像,建议通过“弃用”镜像实现,或者删除重新发布。
修改镜像描述
仅sa可修改镜像描述,描述信息会在发布到相关环境时设置到glance的description字段中。
其他人员查看各环境镜像信息
只读静态页面即可,无敏感信息,不需要认证,可设置为仅办公区访问减少安全风险。
设计
架构图
发布服务器与所有机房网络连通场景
只需要一个发布服务器和域名即可:
发布服务器分别部署到所有机房场景
可能需要多个发布服务器和域名:
web前端
主要界面类似下图:
web后端
无状态服务,部署在一个或者多个服务器上(视服务器与各环境的网络连通性决定),配置好相关环境的glance admin账号密码,和keystone、glance api地址,用来生成web页面,以及调用glance-api服务执行各种管理操作。
最好能搭建一个服务器,可以访问所有环境的glance-api服务,架构将会十分简化。
用镜像的校验和来作为镜像的唯一索引依据。
数据库
部署在一个服务器上,可使用公网IP对外服务(无敏感数据,仅用来记录镜像版本、更新记录以及镜像描述等信息)。 使用mongodb或者MySQL均可,表结构比较简单,主要以镜像md5为索引,来保存镜像已发布的环境、发布状态、描述、测试状态、发行版、版本、位数等web前端需要展示的信息。
流程
- sa/开发负责镜像制作
- qa负责镜像测试
- sa负责线上环境镜像的更新维护
- qa负责线下环境镜像的更新维护
- sa/qa/开发均可查看线上线下环境的镜像版本及其他信息,以便提醒相关人员同步或更新镜像