用户在代码仓库的操作,通过webhook将操作信息发送给DomeOS server,server根据项目关联配置信息确认是否满足构建任务的出发条件,如果满足,Domeos server下发构建任务给kubernetes master,master挑选符合条件的slave启动构建镜像,该镜像从代码仓库中下载代码,根据对应的dockerfile执行构建,构建生成的镜像被push到代码仓库中,然后反馈构建日志及结果给domeos server,server在仓库中确认过镜像信息后,将构建结果写入到数据库中。
集群管理部分,我们将一套kubernetes部署作为一套集群,添加集群是配置kubernetes master信息的过程,用户可以在DomeOS中添加多套集群。
当master信息配置完成后,我们提供了添加node的脚本。对于一套集群,网络部分采用flannel进行管理,每个node上启动agent上报监控信息并用于webssh登录。用户可以通过为主机添加namespace和label进行资源和环境的隔离。
部署启动在一个集群上,采用kubernetes pod的概念,每个部署都从一个或多个镜像创建,可以对每个镜像配置cpu和内存限制,可以在pod中配置一个或多个日志收集模块,该部分用flume实现,日志收集到kafka中。网络部分目前支持overlay和host两种模式,overlay模式的负载均衡用kubernetes的service实现,host模式的负载均衡通过confd+nginx来实现。同一套集群的部署之间可以通过内网域名互相访问,这部分通过skyDNS和kube2sky来实现。
角色:
- 负责整个系统的早期全部开发
- 负责指导实习的研究生进行数据分析