在传统的开发测试运维体系中,开发人员要自己编译,打包,上传,重启服务,查看日志,如果发现问题还要再重新来一遍,每个步骤都要手工操作极大的降低了效率,包括当前我们正在做的项目也是有诸多问题:
- 在测试环境全靠手工
- 开发环境未做隔离,大家相互影响,测试的过程经常被打断
- 没有统一的代码控制规范,版本随便用,大家在同一分支上开发,新功能在旧的分支上继续开发等
其实这种操作方式已经是非常古老的方式了,基本的自动构建功能还没有加上。
容器云平台
有种基于容器云平台的方式可以大大的提高开发测试效率。
1561554782086
- 开发者提交代码到代码仓库
- 通过Dockerfile制作新的镜像到Cloud门户
- 发布的时候告诉Cloud门户,然后直接调用K8S去部署即可
整个过程需要三个部分:“代码仓库”,“Cloud门户”,“镜像仓库”,其它的都不需要怎么处理。
解决问题
- 资源隔离:
- 弹性的扩缩容:可以动态的扩容,按需分配
- 快速应对流量高峰
- 资源利用率
- 研发效率提升
- 分布式部署,容器管理,滚动升级,屏蔽底层细节,提升研发效率
早先的处理方式为:申请服务器-->安装初始化-->部署/调试-->测试上线。有了容器云可以直接打包成镜像进行测试,很好的隔离资源。
平台设计理念
易用:一键生成可运行镜像
易维护:服务宕机业务无感知
稳定:高可用
高效:降本增效
日志采集:不能丢失
Docker + K8S + 注册中心/控制中心 + 服务管理平台 + 日志采集
可以根据需要采用必要的组件。
云平台架构组件概览
1561556247388
- cAdvisor是和kubelet绑定在一起的进程,是一个监控的客户端,数据可以写入到时序数据库(IndefluxDB)中
- log-pilot 阿里开源的工具,容器日志收集利器,参考文章:https://yq.aliyun.com/articles/674327
- HeapSter是与cAdvisor通信的工具,目前不维护了:https://github.com/kubernetes-retired/heapster
- Flume:日志采集软件,采集日志输出到Kafka中
- CNI + DHCP,容器云的网络
- Harbor: 镜像仓库
下面就不继续再写了,暂时还不能接触到K8S相关的资源,线上的K8S还没有机会碰到,虽然我们再使用了,等后续有机会再线上或者真正使用到相关东西之后,再实践中再更新容器云平台的相关文章。
最后
最传统的打包部署方式肯定是会影响到研发的效率的,这种情况觉得要找一些运维人员或者DevOPS人员来做一下相关的事情。
如果不行的话,开发人员可以想办法开发一套自助运维的系统:
- 只需再界面选择分支,服务器,点击部署即可。在页面显示日志,统一操作
- 自助运维管理工具,显示当前测试环境,开发环境中的服务器数量,无需显示线上的服务器
需要资源:
- 一个公共的git账户,可以拉代码
- 收集测试环境服务器,录入自助运维平台
- 一台专用的CI/CD服务器
后续可以搞一搞,关于云平台相关的东西,后续真的在接触使用之后再考虑下一步。
作者:Real_man
链接:https://www.jianshu.com/p/3129c202e3a8
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。