Netkiller DevOps 手札
Mr. Neo Chan, 陈景峯(BG7NYT)
中国广东省深圳市望海路半岛城邦三期
518067
+86 13113668890
<netkiller@msn.com>
Copyright © 2010-2018 netkillercss
版权声明html
转载请与做者联系,转载时请务必标明文章原始出处和做者信息及本声明。html5
|
|
|
微信订阅号 netkiller-ebook (微信扫描二维码) |
QQ:13721218 请注明“读者” |
QQ群:128659835 请注明“读者” |
|
请首先阅读:git
- 一步步实施 DevOps (一)
- 一步步实施 DevOps (二)
- 一步步实施 DevOps (三)
- 一步步实施 DevOps (四)
- 一步步实施 DevOps (五)
- 一步步实施 DevOps (六)
自动化部署github
本章节重点谈自动化部署,每一个人对自动化部署都有本身的理解,每一个企业对自动化部署的需求也不一样。数据库
目前不少云平台开始推出一些列 DevOps 工具,体验了一下,仍然处在初级阶段,也不十分红熟。严格的说他们实现的 CD (持续部署)。缓存
前面讲过持续集成不是 DevOps,这里我要说持续部署也不是 DevOps。CD是从CI中分离出来的,将部署单独提炼出来。服务器
自动化部署远比 CD 要复杂,涉及包括:微信
- 网络层:网络设备管理,负载均衡切换,路由表管理
- 系统层:基础设施,操做系统,软件运行环境,
- 软件层:软件部署,CD部分
- 缓存层:缓存的刷新
- 搜索层:重建全文索引
- 数据层:数据库结构管理,数据库数据管理
- 日志层:谁,什么时间,作了什么操做,结果怎样
- 除此以外,管理上还须要提案和审批流程等等
因此 CD (持续部署)解决不了企业的生产环境自动化部署需求,CD牢牢是CI (持续集成)运行完成后,将构建物部署到指定的运行环境中。一般CD并不提供回撤功能,因此极少由企业使用 CD 部署生产环境。网络
Git -> 编译 -> 测试 -> 打包 -> 构建物 -> 部署 -> 运行
CI/CD 的流水线做业只能部署单一项目,对于大型网站就无能为例,例如不少大型网站:
- 构建过程很是复杂,不单单是一个项目打包, 而是须要多个模块,处理复杂的配置过程。
- 一次部署多台服务器,每一个服务器可能有多个实例,实例间相互依赖关系
- 须要遵照严格的部署和启动顺序
- 记录部署日志,文件的新增,覆盖,删除
- 部署时间点
- 升级不单单是代码,还有数据库,缓存……
- 须要改变负载均衡设备节点,设置防火墙策略
- 须要有完备的回撤方案
- 除此以外好虚考虑增量部署和差别部署,例如部署100mb 以上的大文件,甚至GB尺寸的文件
不少 DevOps 方案注重 Docker,K8s解决方案。但实际状况 Docker 并不适用于全部场景,更可能是物理服务器,虚拟机,云主机,刀片服务器…
使用 Docker 的前提是,Docker必须部署在宿主主机上,在云主机中部署 Docker 意义不大。
不少企业大量使用云主机,对 Docker 并没有强烈的需求。
运维须要怎样的自动化部署工具:
- 项目管理:升级提案,工做流转,工做审批
- 备份管理:任何生产环境部署前都须要备份,必须实现增量备份和差别备份。
- 环境管理:环境部署,基础设施管理
- 阶段管理:开发,测试,生产
- 仓库管理:分支切换,分支保护(例如只容许合并不容许提交)
- 配置管理:每一个阶段拥有本身的配置
- 文件过滤:排除过滤,包含获取,替换过滤(替换指定文件中的内容,用户不一样阶段的差别区分)
- 覆盖删除:覆盖指定文件,删除指定文件
- 内容优化:Grup, Webpack 优化,压缩js, css,html5, 图片雪碧图…..
- 自动构建:编译,测试,测试报告,打包
- 部署管理:节点管理,增量部署,差别部署,md5sum 校验检查
- 部署脚本:部署前脚本(中止),部署后脚本(启动)或者环境初始化,解决部署依赖
- 时间线:谁,什么时间,作了部署,能够指定时间点随时回撤到指定版本。
- 部署日志:谁,什么时间,作了什么操做,产生什么结果
- 部署报告:生产 Issue或Ticker 报告