云上容器DevOps开发模式

作为技术团队的老大面对互联网企业中多个项目开发和运维,每个项目都至少有dev、qa、hidden、product四个环境,数百台机器,在各个系统之间疲于奔命,解决各种琐碎的问题,如何从这些琐碎的事情中解放出来?云上容器DevOps成了我们的最优选择。

 

以下基于目前项目做的云上容器DevOps实践总结,方案简单易懂,容易落地且效果显著。

image.png


程序员本地开发,开发完成后提交代码到代码仓库,自动触发jenkins进行持续集成与部署,部署完成会收到结果邮件。项目运行过程中可通过日志系统查看程序日志,有异常会触发监控系统发送报警。从编码到上线后结果反馈都可以程序员自主完成,形成完整闭环,完整流程的工具链及协助异常情况的处理,工作量减少了,效率也高了。

1. 自动触发jenkins部署通过svn和Git的hooks来实现,是否自动触发根据项目内部沟通决定,我们目前没有自动触发,原因是QA在测试的过程中不希望被自动触发的部署打断,不过也可以方便的在jenkins上手动触发执行;

2. jenkins从Git拉代码 --> 编译 --> JS/CSS合并压缩 --> 其他初始化操作 --> 生成最终线上运行的代码包,通过Dockerfile打包成镜像上传到docker hub,然后触发kubernetes滚动更新;

3. 镜像包含了基础镜像+项目代码,基础镜像就是根据项目运营环境打包的一个最小化的运行环境(不包含项目代码),根据项目依赖的技术栈不同我们打包了很多不通类型的基础镜像,例如包含nginx服务的基础镜像,包含jdk+tomcat的基础镜像;

4. 如果发现程序上线出错或有bug短时间内无法解决,可通过jenkins快速回滚到上一镜像版本,十分方便;

5. 如果发现流量突然增高,可以通过kubernetes快速调整容器副本数量。

tags: devops