接触DevOps已经很长一段时间了,在这个期间通过相关理论在咨询、项目中的落地实践,有了一些浅薄的收获,结合自己的一些积累,最终虽然拖了很长时间,和笑梅老师一起终于完成了此书的出版,虽然还有很多不足的地方,但是还是希望能够以此为基础和很多喜欢技术的朋友一起交流讨论。篇幅已经很长,但由于涉及内容确实过多,个人精力、能力、技术、视野毕竟有限,难免有所错误或者失误,所以设立此贴用于根据反馈进行校正,个人邮箱为:liumiaocn@outlook.com,欢迎批评指正。
张乐:京东 DevOps与研发效能专家、DevOpsDays中国区核心组织者
本书的前1/4篇幅重点讲解了DevOps的基础理论、关键原则、实践经验和误区,剩余的3/4篇幅都是关于DevOps落地实践的内容。面向企业级DevOps的实施和推广,需要在道、fa、术、器4个层面立体化推进,自上而下、以终为始地系统化思考,自下而上通过工具提升效率、解决具体问题。本书作者有着非常丰富的大型企业DevOps实施经验,尤其对工具的技术实现细节、如何相互集成和整合颇有心得,书中也包含了大量的相关说明和示例,本书将手把手地帮助你从零搭建DevOps工具链体系。 这是一个数字化时代,DevOps越来越流行,理论+实践的组合至关重要,相信这本书能给你带来很大的帮助,祝你的DevOps之旅一帆风顺!
好友书评:赵班长赵舜东:新运维社区发起人
本书不仅包含了DevOps的基础理论知识,而且涵盖了从需求管理、设计与开发、版本控制、编译构建、代码质量、测试管理、发布与部署、自动化运维、自动化测试、日志监控、安全监控到容器化的一个完整DevOps工具链,让读者可以从0到1地学习DevOps落地实践的知识,并进行全开源DevOps工具链的实战。 本书作者之一刘淼是一位资深DevOps专家,我更愿意称他为一名不折不扣的骨灰级技术达人,他痴迷于持续学习和持续分享。我在阅读完本书后,收获甚大。现在我将这本书介绍给所有想要学习和进行DevOps工具链落地实践的工程师,尤其是运维圈的小伙伴们,我相信本书一定能让你受益匪浅。准备好实验环境,让我们一起玩转DevOps工具链吧。
关于校正反馈的感谢到目前为止,收到了很多读者朋友的反馈,淼叔非常感动,这里一并谢过,非常感谢大家一起参与一个理论的逐渐细化和明晰的过程,正像2020年3月份我整理和分享的“以安全之名”中提到的那样,DevOps的推行也不是一帆风顺的,也可能会有曲折和迂回的J曲线,这些都需要大家一起共同探索。为了更好的为后续的读者服务,所发现的错别字或不正确或待商榷的内容,可发送到我的邮箱liumiaocn@outlook.com,首次提出者一经采纳必有薄礼附上,虽然知道大家也不在乎这些,聊表谢意而已。
校正或更新内容(根据反馈不断更新)- 13.1.2 章Fortify 标题名称写错一处 (写成Frotify :正确应为Fortify) =》第2次重印中已修正
第1 章 DevOps 概述 .......................................................................................... 1 1.1 什么是DevOps ...................................................................................... 2 1.2 DevOps 能带来什么 .............................................................................. 3 1.3 DevOps 的现状 ...................................................................................... 5 1.4 常见的理解误区 .................................................................................. 10 第2 章 DevOps 基础理论 ............................................................................... 12 2.1 敏捷理论体系解读 .............................................................................. 12 2.1.1 敏捷背景介绍 .............................................................................. 12 2.1.2 三大支柱解读 .............................................................................. 13 2.1.3 四大核心价值观及解读 ................................................................. 14 2.1.4 12 条原则及解读 .......................................................................... 15 2.1.5 Scrum 敏捷框架 ............................................................................ 17 2.2 敏捷与DevOps .................................................................................... 24 2.3 精益理论体系解读 .............................................................................. 25 2.3.1 精益产生背景 .............................................................................. 25 2.3.2 精益IT 及其原则 ......................................................................... 25 2.4 精益与DevOps .................................................................................... 29 2.4.1 节拍 ........................................................................................... 29 2.4.2 交货时间 ...................................................................................... 29 2.4.3 度量指标 ...................................................................................... 29 2.4.4 浪费种类 ...................................................................................... 30 2.4.5 安灯拉绳 ...................................................................................... 31 2.4.6 看板 ........................................................................................... 31 2.4.7 改善 ........................................................................................... 32 2.4.8 挑战与对策 .................................................................................. 33 2.5 实践案例分析 ..................................................................................... 33 第3 章 构建企业的DevOps 文化 .................................................................. 36 3.1 对失败友好的架构与环境................................................................... 36 3.1.1 对失败友好的架构与环境的特点 .................................................... 37 3.1.2 对失败友好的架构与环境的设计原则 ............................................ 37 3.1.3 当失败遇见复杂系统 .................................................................... 40 3.1.4 保障复杂系统的安全 .................................................................... 41 3.2 以高度信任为基石的企业文化 .......................................................... 42 3.2.1 传统制造业的惩罚文化 ................................................................. 43 3.2.2 聚焦改善的免责事后分析 .............................................................. 44 3.2.3 多角度的知识与经验分享 .............................................................. 45 3.3 持续学习与持续试验 ......................................................................... 49 3.3.1 通过内部与外部会议促进人员技术成长 .......................................... 50 3.3.2 向生产环境中引入故障来增强弹性 ................................................ 50 3.3.3 持续学习与持续试验的建议 ........................................................... 51 3.4 常见的理解误区 .................................................................................. 52 3.5 实践经验研究 ..................................................................................... 54 第4 章 设计和优化软件全生命周期相关流程 ............................................... 56 4.1 持续评估与DevOps 成熟度模型 ....................................................... 56 4.2 持续规划的评估策略 ......................................................................... 57 4.3 持续集成的策略与原则 ...................................................................... 58 4.4 持续测试的策略与原则 ...................................................................... 58 4.5 持续部署的策略与原则 ...................................................................... 59 4.6 持续监控的策略与原则 ...................................................................... 59 4.7 持续运维的策略与原则 ...................................................................... 60 4.8 持续反馈的策略与机制 ...................................................................... 60 4.9 常见的理解误区和实践经验 ............................................................... 60 第5 章 DevOps 实践中的设计与开发 ............................................................ 62 5.1 传统架构的痛点 .................................................................................. 62 5.2 DevOps 中的架构设计 ....................................................................... 62 5.2.1 康威定律的影响 ........................................................................... 63 5.2.2 耦合设计原则 .............................................................................. 64 5.2.3 独立部署原则 .............................................................................. 66 5.2.4 自动部署策略 .............................................................................. 66 5.2.5 12 要素 ....................................................................................... 68 5.2.6 应用扩容机制 .............................................................................. 68 5.3 环境一致性 .......................................................................................... 69 5.3.1 环境一致性的重要性 .................................................................... 69 5.3.2 常用工具介绍 .............................................................................. 69 5.4 版本管理实践 ..................................................................................... 71 5.4.1 版本管理的痛点 ........................................................................... 71 5.4.2 常用工具介绍 .............................................................................. 74 5.4.3 实践经验总结 .............................................................................. 75 5.5 制品管理实践 ..................................................................................... 75 5.6 代码质量分析 ..................................................................................... 77 第6 章 DevOps 实践中的测试 ........................................................................ 78 6.1 传统测试及其痛点 .............................................................................. 78 6.2 测试驱动开发 ..................................................................................... 79 6.3 测试分类 .............................................................................................. 81 6.4 测试策略 .............................................................................................. 83 6.4.1 测试团队结构重组策略:测试团队去中心化的应对策略 .................. 84 6.4.2 测试促进架构重构策略:根据测试的反馈不断优化系统架构 ........... 84 6.4.3 测试团队技能提升策略:逐步推动测试团队知识与技能的重建 ....... 84 6.4.4 各阶段测试策略:分阶段使用不同方式保证系统功能 .................... 85 6.5 自动化测试 .......................................................................................... 85 6.5.1 自动化测试现状 ........................................................................... 86 6.5.2 做还是不做:决策因素 ................................................................. 86 6.5.3 自动化测试推行策略 .................................................................... 88 6.5.4 自动化测试工具选型 .................................................................... 89 6.6 实践经验研究 ..................................................................................... 90 6.6.1 常见的实践误区 ........................................................................... 90 6.6.2 实践案例 ...................................................................................... 91 第7 章 DevOps 实践中的部署 ...................................................................... 101 7.1 部署方式 ............................................................................................ 101 7.1.1 蓝绿部署 .................................................................................... 102 7.1.2 金丝雀部署 ................................................................................ 103 7.2 部署依赖 ............................................................................................ 104 7.2.1 架构的影响 ................................................................................ 104 7.2.2 基础设施的影响 ......................................................................... 104 7.3 常用工具 ............................................................................................ 106 7.4 实践经验总结 ................................................................................... 107 第8 章 DevOps 工具选型:开源与闭源 ...................................................... 108 8.1 通用选型指标 ................................................................................... 108 8.1.1 系统限制要素 ............................................................................ 109 8.1.2 可用性 ....................................................................................... 109 8.1.3 交互性 ....................................................................................... 110 8.1.4 市场状况 .................................................................................... 110 8.1.5 功能可裁剪度 ............................................................................ 111 8.2 开源/闭源选型指标 ........................................................................... 111 8.2.1 成本 ......................................................................................... 112 8.2.2 更新频度 .................................................................................... 112 8.2.3 改善速度 .................................................................................... 113 8.2.4 集成方式 .................................................................................... 113 8.2.5 文档说明 .................................................................................... 114 8.3 选型模型介绍 ................................................................................... 115 8.4 实践经验总结 ................................................................................... 115 第9 章 DevOps 工具:需求管理与缺陷追踪 .............................................. 117 9.1 常用工具介绍 ................................................................................... 117 9.1.1 JIRA .......................................................................................... 117 9.1.2 Redmine ..................................................................................... 118 9.1.3 Trac ........................................................................................... 120 9.1.4 Bugzilla ...................................................................................... 121 9.2 详细介绍:Redmine .......................................................................... 121 9.2.1 安装Redmine ............................................................................ 121 9.2.2 设定Redmine ............................................................................ 125 9.2.3 REST API 操作 .......................................................................... 130 9.3 需求管理工具选型比较 .................................................................... 137 第10 章 DevOps 工具:持续集成 ............................................................... 139 10.1 常用工具介绍 ................................................................................. 139 10.1.1 Jenkins .................................................................................... 139 10.1.2 Apache Continuum .................................................................... 140 10.1.3 CruiseControl ........................................................................... 141 10.2 详细介绍:Jenkins .......................................................................... 141 10.2.1 安装Jenkins ........................................................................... 142 10.2.2 设定Jenkins ........................................................................... 144 10.3 持续集成实践 ................................................................................. 146 10.3.1 Jenkins+GitLab ......................................................................... 147 10.3.2 Jenkins+Docker ........................................................................ 150 10.3.3 Jenkins pipeline ........................................................................ 157 第11 章 DevOps 工具:版本管理 ............................................................... 169 11.1 常用工具介绍.................................................................................. 169 11.1.1 RCS ........................................................................................ 169 11.1.2 SVN ........................................................................................ 179 11.1.3 Git .......................................................................................... 180 11.1.4 GitLab ..................................................................................... 181 11.2 详细介绍:GitLab 与开发模型 ...................................................... 182 11.2.1 Git Flow 分支模型 .................................................................... 182 11.2.2 GitLab+Git Flow ....................................................................... 185 11.2.3 GitHub Flow 分支模型 .............................................................. 200 11.2.4 GitLab+GitHub Flow ................................................................. 201 11.3 实践经验总结.................................................................................. 205 第12 章 DevOps 工具:构建工具 ............................................................... 208 12.1 常用工具介绍 ................................................................................. 208 12.1.1 Make ...................................................................................... 208 12.1.2 Maven ..................................................................................... 209 12.1.3 Gradle ..................................................................................... 209 12.1.4 MSBuild .................................................................................. 210 12.2 详细介绍:Maven ........................................................................... 211 12.2.1 安装Maven ............................................................................ 211 12.2.2 Maven 的使用 .......................................................................... 211 12.3 详细介绍:Gradle ............................................................................ 214 12.3.1 安装Gradle ............................................................................ 214 12.3.2 Gradle 的使用 .......................................................................... 214 12.4 实践经验总结 ................................................................................. 221 第13 章 DevOps 工具:代码质量 ............................................................... 223 13.1 常用工具介绍 ................................................................................. 223 13.1.1 SonarQube ............................................................................... 223 13.1.2 Frotify ..................................................................................... 224 13.1.3 Coverity .................................................................................. 225 13.1.4 FindBugs ................................................................................. 225 13.2 详细介绍:SonarQube .................................................................... 226 13.2.1 安装SonarQube ...................................................................... 226 13.2.2 SonarQube 基础 ...................................................................... 231 13.2.3 SonarQube 使用方式 ................................................................. 239 13.3 代码质量检测实践 .......................................................................... 244 13.3.1 代码扫描与概要信息获取 ......................................................... 245 13.3.2 指标信息的获取 ....................................................................... 249 13.3.3 测试指标与事前准备 ............................................................... 259 13.3.4 测试指标实践 ......................................................................... 261 13.3.5 项目与质量规约管理 ............................................................... 272 第14 章 DevOps 工具:运维自动化 ............................................................ 277 14.1 常用工具介绍 ................................................................................. 277 14.1.1 Ansible .................................................................................... 277 14.1.2 Chef ........................................................................................ 277 14.1.3 Puppet ..................................................................................... 278 14.1.4 Saltstack .................................................................................. 279 14.2 常用工具的使用 .............................................................................. 279 14.2.1 Ansible 的安装与使用 .............................................................. 279 14.2.2 Chef 的安装与使用 .................................................................. 280 14.2.3 Puppet 的安装与使用 ............................................................... 287 14.2.4 Saltstack 的安装与使用 ............................................................ 289 第15 章 DevOps 工具:测试自动化 ............................................................ 292 15.1 常用工具介绍 ................................................................................. 292 15.1.1 xUnit ........................................................................................ 292 15.1.2 Selenium ................................................................................... 293 15.1.3 Apache JMeter ........................................................................... 293 15.1.4 Robot Framework ....................................................................... 293 15.2 详细介绍:Robot Framework ......................................................... 294 15.2.1 准备Python ............................................................................ 294 15.2.2 安装PIP ................................................................................. 294 15.2.3 安装Robot Framework ............................................................. 295 15.3 自动化测试工具的使用 .................................................................. 296 15.3.1 使用Robot Framework 进行测试 ............................................... 296 15.3.2 使用Selenium 进行测试 .......................................................... 300 第16 章 DevOps 工具:日志监控 ............................................................... 303 16.1 常用工具介绍 ................................................................................. 303 16.1.1 ELK ........................................................................................ 303 16.1.2 Splunk ..................................................................................... 306 16.1.3 Hygieia ................................................................................... 308 16.2 详细介绍:Hygieia .......................................................................... 311 16.2.1 安装配置 ................................................................................. 311 16.2.2 Hygieia 服务的启动方式和说明 ................................................. 312 16.2.3 使用说明 ................................................................................. 314 16.3 实践经验总结 ................................................................................. 315 第17 章 DevOps 工具:运维监控 ............................................................... 316 17.1 常用工具介绍 ................................................................................. 316 17.1.1 Zabbix ..................................................................................... 316 17.1.2 Nagios ..................................................................................... 319 17.1.3 Grafana ................................................................................... 323 17.1.4 InfluxDB ................................................................................. 325 17.2 详细介绍:InfluxDB ....................................................................... 326 17.3 实践中的注意事项及原则 ............................................................... 330 第18 章 DevOps 工具:安全监控 ............................................................... 331 18.1 常用工具介绍 ................................................................................. 331 18.1.1 Clair ....................................................................................... 331 18.1.2 Anchore ................................................................................... 336 18.1.3 ClamAV .................................................................................. 339 18.2 详细介绍:安全扫描 ..................................................................... 344 18.2.1 Clair 镜像安全扫描 ................................................................. 344 18.2.2 Anchore 镜像扫描 .................................................................... 348 18.2.3 ClamAV 病毒扫描 .................................................................... 349 18.3 实践经验总结 ................................................................................. 350 第19 章 DevOps 工具:容器化 .................................................................... 352 19.1 常用工具介绍 ................................................................................. 352 19.1.1 Docker .................................................................................... 352 19.1.2 docker-compose ........................................................................ 356 19.1.3 Kubernetes ............................................................................... 357 19.2 详细介绍:Docker ........................................................................... 357 19.2.1 问题诊断 ................................................................................. 357 19.2.2 镜像操作与容器操作 ............................................................... 365 19.2.3 其他操作 ................................................................................. 381 19.3 详细介绍:Kubernetes .................................................................... 384 19.3.1 管理资源 ................................................................................. 385 19.3.2 故障排查 ................................................................................. 390 19.3.3 故障应对 ................................................................................. 397 第20 章 DevOps 工具:镜像私库 ............................................................... 407 20.1 常用工具介绍 ................................................................................. 407 20.1.1 Registry ................................................................................... 407 20.1.2 Harbor ..................................................................................... 409 20.1.3 Nexus ...................................................................................... 414 20.2 详细介绍:Harbor ........................................................................... 420 第21 章 DevOps 工具:二进制制品管理 .................................................... 422 21.1 常用工具介绍 ................................................................................. 424 21.1.1 Apache Archiva ........................................................................ 424 21.1.2 Artifactory ............................................................................... 424 21.2 详细介绍:Nexus ............................................................................ 425 21.2.1 环境设定:Maven 私库搭建 ..................................................... 425 21.2.2 私库使用:准备与设定Maven .................................................. 427 21.2.3 私库使用:设定项目的pom 文件 .............................................. 428 21.2.4 私库使用:执行maven 操作 .................................................... 429 21.3 实践经验总结 ................................................................................. 430 第22 章 DevOps 实践中的安全机制 ............................................................ 431 22.1 安全调查现状 ................................................................................. 431 22.2 设计安全机制的整体策略 ............................................................... 432