书单推荐 新书推荐 |
DevOps基础与实践 读者对象:本书适合DevOps初学者阅读 ![]() 本书围绕一个前后端分离的微服务项目,详尽地介绍了从源码构建、容器化到Kubernetes部署的完整流程,为读者提供了一套完整的DevOps实践流程和自动化运维体系构建方案。通过阅读本书,读者将掌握构建高效自动化运维体系的关键技能,从而提升软件交付的速度与质量。全书共16章。第1~6章聚焦于基础环境的搭建与配置,以及如何从源码构建并部署项目。第7~12章深入构建CI/CD流水线,实现项目的容器化,并将其部署到Kubernetes,显著提升发布效率。第13章和第14章介绍如何进行接口抓取与性能压测。第15章介绍一些DevOps理论并完善项目流水线代码。本书的实践特色显著,每章都配备了详尽的操作步骤和丰富的示例代码,便于读者实践。无论是DevOps新手还是有经验的专业人士都能从中获得宝贵的知识和技能。此外,本书还提供了配套的视频教程和代码资源,进一步辅助读者深入理解和掌握书中的知识点,确保读者能够在实际工作中灵活运用所学。 计算机技术开发与应用丛书 DevOps基础与实践 构建自动化运维体系(微课视频版) 马腾飞 编著 清 华 大 学 出 版 社 北 京 内 容 简 介 本书围绕一个前后端分离的微服务项目,详尽地介绍了从源码构建、容器化到 Kubernetes部署的完整流程,为读者提供了一套完整的 DevOps实践流程和自动化运维体系构建方案。通过阅读本书,读者将掌握构建高效自动化运维体系的关键技能,从而提升软件交付的速度与质量。 全书共 15章。第 1~6章聚焦于基础环境的搭建与配置,以及如何从源码构建并部署项目。第 7~12章深入构建CI/CD流水线,实现项目的容器化,并将其部署到 Kubernetes,可以显著地提升发布效率。第13章和第 14章介绍如何进行接口抓取与性能压测。第 15章介绍一些 DevOps理论并完善项目流水线代码。 本书的实践特色显著,每章都配备了详尽的操作步骤和丰富的示例代码,便于读者实践。无论是 DevOps新手还是有经验的专业人士都能从中获得宝贵的知识和技能。此外,本书还提供了配套的视频教程和代码资源,进一步辅助读者深入理解和掌握书中的知识点,确保读者能够在实际工作中灵活运用所学知识。 版权所有,侵权必究。举报:010-62782989,beiqinquan@tup.tsinghua.edu.cn。 图书在版编目(CIP)数据DevOps基础与实践: 构建自动化运维体系: 微课视频版 / 马腾飞编著. -- 北京: 清华大学 出版社, 2026.3. -- (计算机技术开发与应用丛书). -- ISBN 978-7-302-71191-9 Ⅰ. TP311.5 中国国家版本馆 CIP数据核字第 2026QC3978号 责任编辑:赵佳霓封面设计:吴刚责任校对:刘惠林责任印制:丛怀宇 出版发行:清华大学出版社网址:https://www.tup.com.cn,https://www.wqxuetang.com 地址:北京清华大学学研大厦 A座邮编:100084 社总机: 010-83470000 邮购:010-62786544 投稿与读者服务:010-62776969,c-service@tup.tsinghua.edu.cn质量反馈:010-62772015,zhiliang@tup.tsinghua.edu.cn 配套资源下载:https://www.tup.com.cn,010-83470236 印装者:三河市春园印刷有限公司经销:全国新华书店开本:186mm×240mm印张:23字数:506千字版次:2026年 4月第 1版印次:2026年 4月第 1次印刷印数:1~1500 定价:99.00元 产品编号:108203-01 前言 PREFACE 在这个信息技术迅猛发展的时代, DevOps、容器化、微服务、持续集成与持续部署等概念已经成为现代软件开发和运维领域的基石。随着云计算、大数据、人工智能等技术的不断进步,企业对于 IT基础设施的搭建和运维提出了更高的要求,以实现快速迭代、高效交付和数字化转型。本书旨在为读者提供一套全面、系统的 DevOps知识体系,并结合实际项目案例,深入剖析各项技术的实践应用。 本书共 15 章,内容涵盖了从基础服务搭建、仓库管理器、自动化工具、镜像仓库、代码托管、持续交付、代码质量管理、容器编排、项目部署、接口抓取与调试、接口压测,到 DevOps的多方面,本书的主要特点如下。 (1)实用性强:以实际操作为主线,从零开始讲解,逐步带领读者掌握各项技能,助力解决在实际工作中遇到的问题。 (2)内容全面:覆盖了基础设施建设、代码管理、持续集成、持续部署、监控等各个环节,帮助读者构建完整的知识体系。 (3)步骤详细:每个操作步骤都进行了详细介绍,确保读者能够轻松跟随并掌握所学内容。 (4)案例丰富:通过实际项目案例,讲解如何在企业级项目中应用所学知识,提高项目交付效率。 (5)易于上手:从基础知识讲起,逐步深入,适合不同层次的读者学习。 通过阅读本书,读者将掌握以下技能: (1)搭建稳定可靠的基础服务,如 SSL/TLS、Nginx、Docker、DNS、NTP等。 (2)使用 Nexus和 Harbor搭建私有仓库,实现高效的依赖管理和镜像存储。 (3)利用 Ansible实现自动化运维,提高工作效率。 (4)部署 GitLab和 Jenkins,实现代码托管和持续集成。 (5)使用 SonarQube进行代码质量管理,提高项目质量。 (6)搭建 Kubernetes集群,实现容器编排和自动化部署。 (7)掌握 API抓取与调试技巧,提高问题排查能力。 (8)进行接口压测,评估系统性能。 (9)理解 DevOps理念,构建高效、稳定的 IT运维体系。 本书适合广大软件开发人员、运维人员、 IT架构师及对 DevOps感兴趣的读者阅读。无论您是初学者还是有一定经验的从业者都能从本书中获得宝贵的知识和经验。希望本书能够成为您学习和实践 DevOps过程中的得力助手,帮助您不断提升自己的技术水平和团队协作能力,共同推动软件开发和运维领域的发展。 在这个快速发展的数字化时代,技术的迭代更新速度前所未有,企业对于 IT基础设施的依赖性也在不断增强。DevOps文化的兴起,以及容器化、自动化和云原生技术的普及,为企业的竞争力提供了强有力的支持。让我们一起踏上这场 DevOps的实践之旅,共同迎接更加美好的未来。 本书在撰写过程中所采用的硬件配置及价格详情见表 1。需要注意,表内各项所标注的价格均为作者购买时的参考价,由于市场价格波动,这些价格可能会随时间而有所变化,因此这些价格仅供参考,以助各位读者了解相关成本。 表 1硬件配置及价格列表 硬 件 型 号 价格/元 CPU E52696V3(二手) 248 散热器 6管散热器 65 主板 X99 DDR3主板 200 内存 32GB 1600MHz(二手) × 4 308 显卡 亮机卡(二手) 45 硬盘 M.2接口固态硬盘 1TB 365 电源 500W功率电源 139 机箱 普通机箱 88 总计 1458 所有机器为使用 VMware创建的虚拟机,系统为 Ubuntu 22.04,其配置见表 2。 表 2机器配置列表 IP地址 主 机 名 CPU 内存/GB 书中简称 192.168.163.199 node199.net.ymyw 4核 4 node199节点 192.168.163.200 node200.net.ymyw 4核 16 node200节点 192.168.163.201 node201.net.ymyw 4核 8 node201节点 192.168.163.210 k-master210.net.ymyw 4核 2 k-master210节点 192.168.163.211 k-node211.net.ymyw 4核 4 k-node211节点 192.168.163.212 k-node212.net.ymyw 4核 4 k-node212节点 此书涉及很多不同服务,这些服务与机器的对应关系见表 3,没有基础的读者可以完全按照此服务列表和部署概况来部署相关服务。 表 3服务部署概览 IP地址服务 192.168.163.199生成 CA证书、 Nginx、Ansible、DNS、Nexus 192.168.163.200 Harbor、Jenkins、GitLab、SonarQube、Nacos、Redis、MySQL 192.168.163.201 Jenkins-slave 192.168.163.210 Kubernetes主节点 192.168.163.211 Kubernetes工作节点 192.168.163.212 Kubernetes工作节点 一个服务的旧版本对于新版本的主要优势是稳定,除此之外便没有什么其他显而易见的优势了,但是生产环境最主要的指标就是稳定。除非有严重的安全性问题,否则生产环境上主要使用稳定的旧版本。新版本对于旧版本的主要优势就是拥有更多的功能和更高的性能,安全性也相对较高。本书为从头搭建环境,并没有版本上的依赖,所以尽可能地使用了较新的版本,其版本及发布时间见表 4。 表 4服务镜像版本及发布时间 镜像名称 发布时间 sonatype/nexus3:3.75.1 2024.12.6 technitium/dns-server:13.3.0 2024.12.21 harbor-v2.12.1 2024.12.24 jenkins/jenkins:2.479.2-lts-jdk21 2024.11.27 gitlab/gitlab-ce:17.7.0-ce.0 2024.12.19 sonarqube:10.7.0-community 2024.10.24 nacos/nacos-server:v2.4.3 2024.10.12 redis:7.4.1 2024.12.4 mysql:8.4.3 2024.11.22 nginx:1.27.3 2024.12.3 本书的诞生是一个偶然的情况,没有清华大学出版社赵佳霓编辑的发掘和邀请就不会有编写本书的想法,在此表示衷心感谢。还要特别感谢我的妻子李雪女士,她对家庭无微不至的关怀和照顾,是我能够专心完成这本书的坚强后盾。没有她的付出,就没有这本书的诞生。 资源下载提示 素材(源码)等资源:扫描目录上方的二维码下载。 视频等资源:扫描封底的文泉云盘防盗码,再扫描书中相应章节的二维码,可以在线学习。 笔者的阅历有限,书中难免存在疏漏,希望读者热心指正,在此表示感谢。 马腾飞 2026年 1月 目录 CONTENTS 第 1章基础服务搭建 ( 31min) ·························································································· 1 1.1 SSL/TLS协议简介 ·································································································· 1 1.1.1 为何使用 SSL/TLS······················································································· 1 1.1.2 SSL/TLS加密传输过程··············································································· 2 1.2自建 CA证书··········································································································· 2 1.2.1 创建 CA根证书 ··························································································· 3 1.2.2 使用 CA证书签发其他证书········································································ 4 1.3使用自建证书实现站点的 HTTPS访问 ································································· 6 1.3.1 安装并配置 Nginx························································································ 6 1.3.2 Linux系统配置信任 CA证书 ····································································· 7 1.3.3 Windows系统配置信任 CA证书································································ 9 1.4 Docker的安装和使用 ···························································································· 13 1.4.1 使用阿里云源安装 Docker服务································································ 13 1.4.2 镜像名的构成 ····························································································· 14 1.4.3 Docker镜像的获取 ···················································································· 15 1.4.4 Docker的常用命令 ···················································································· 16 1.4.5 使用 Docker部署 Nginx ············································································ 17 1.4.6 容器信息状态的查看 ················································································· 18 1.4.7 容器资源占用情况 ····················································································· 19 1.4.8 停止和删除容器 ························································································· 19 1.4.9 使用 Dockerfile制作镜像并启动 ······························································ 20 1.5 DNS服务器的部署和使用 ···················································································· 22 1.5.1 Technitium DNS的部署 ············································································· 22 1.5.2 使用 Technitium DNS解析域名 ································································ 23 1.5.3 配置 DNS服务器地址 ··············································································· 26 1.5.4 内网 DNS的必要性 ··················································································· 28 1.5.5 配置 DNS服务器地址 ··············································································· 28 1.6 NTP服务器的部署和使用 ···················································································· 30 1.6.1 NTP服务器································································································ 30 1.6.2 安装配置 NTP客户端 chronyd·································································· 31 1.6.3 设置系统时区 ····························································································· 32 第 2章 Nexus仓库管理器( 9min)··················································································· 34 2.1部署 Nexus ············································································································· 34 2.2配置 Nexus域名与反向代理 ················································································· 38 2.3添加 apt代理仓库·································································································· 39 2.4添加 Docker服务代理仓库 ··················································································· 41 2.5添加 Kubeadm代理仓库 ······················································································· 42 2.6添加 Maven代理仓库···························································································· 44 2.7添加 npm代理仓库································································································ 45 2.8添加 pypi代理仓库································································································ 46 第 3章 Ansible自动化工具 ( 8min) ················································································ 48 3.1安装 Ansible··········································································································· 49 3.2配置被控节点列表 ································································································· 49 3.3 Ansible常用模块 ··································································································· 50 3.4 Playbook ················································································································· 52 3.4.1 分发密钥 ···································································································· 52 3.4.2 Playbook语法 ···························································································· 54 3.4.3 配置基础环境 ····························································································· 55 第 4章 Harbor镜像仓库( 8min) ···················································································· 59 4.1部署 Harbor············································································································ 59 4.1.1 Harbor配置文件 ························································································ 60 4.1.2 配置 Harbor域名与反向代理 ···································································· 62 4.1.3 启动 Harbor ································································································ 63 4.2登录使用 Harbor ···································································································· 63 4.2.1 将镜像推送到 Harbor················································································· 64 4.2.2 从 Harbor拉取镜像 ··················································································· 65 4.3配置 Harbor开机自启动 ························································································ 66 4.4修改已启动 Harbor配置························································································ 67 目录 VII 第 5章 Git的基本使用······································································································· 68 5.1 Git的安装 ·············································································································· 68 5.2 Git的主要区域 ······································································································ 69 5.3 Git的常用命令 ······································································································ 70 第 6章部署芋道项目 ( 14min) ························································································ 75 6.1配置后端项目环境 ································································································· 75 6.2下载并构建后端项目 ····························································································· 76 6.3中间件服务部署 ···································································································· 78 6.4配置 Node.js环境 ·································································································· 80 6.5下载并构建前端项目 ····························································································· 82 6.6更改前后端项目配置 ····························································································· 83 6.7构建启动前端项目 ································································································· 84 6.8构建启动后端项目 ································································································· 85 6.9登录芋道平台 ········································································································ 86 第 7章 GitLab代码托管平台 ( 18min)···········································································87 7.1部署 GitLab域名与反向代理 ················································································ 87 7.2配置 GitLab ············································································································ 88 7.2.1 配置 GitLab域名与反向代理 ···································································· 88 7.2.2 设置中文界面 ····························································································· 89 7.2.3 更改密码 ···································································································· 91 7.2.4 关闭个人注册 ····························································································· 91 7.2.5 配置默认主分支名称 ················································································· 92 7.3权限管理 ················································································································ 93 7.3.1 创建用户 ···································································································· 93 7.3.2 创建群组 ···································································································· 95 7.3.3 角色权限 ···································································································· 96 7.4创建项目 ················································································································ 97 7.5配置 GitLab显示正确内容 ···················································································· 98 7.6配置 SSH密钥 ······································································································· 99 7.7将代码推送到 GitLab ·························································································· 101 7.8分支操作 ·············································································································· 103 7.8.1 分支发布流程 ··························································································· 105 7.8.2 版本号规范 ······························································································ 106 7.9使用 SSH协议克隆项目······················································································ 107 7.10重置 GitLab管理员密码 ···················································································· 108 7.11推送源项目更新到 GitLab················································································· 108 第 8章 Jenkins持续交付平台( 44min) ········································································ 110 8.1部署 Jenkins ········································································································· 110 8.2配置 Jenkins ········································································································· 113 8.2.1 更改密码 ·································································································· 113 8.2.2 配置 Jenkins域名与反向代理 ································································· 113 8.2.3 插件管理 ·································································································· 114 8.2.4 配置从节点 ······························································································ 117 8.3创建并运行自由风格任务 ··················································································· 121 8.3.1 配置 GitLab仓库 ····················································································· 122 8.3.2 查看构建结果 ··························································································· 125 8.3.3 中间件地址的配置 ··················································································· 127 8.3.4 提取 Jenkins中的变量 ············································································· 128 8.3.5 将构建产物制作为容器镜像 ··································································· 130 8.3.6 将后端镜像推送到镜像仓库 ··································································· 133 8.3.7 构建并推送前端镜像 ··············································································· 136 8.3.8 优化日志颜色显示 ··················································································· 138 8.4创建流水线风格工作 ··························································································· 139 8.4.1 后端项目改为 Pipeline············································································· 139 8.4.2 前端项目改为 Pipeline············································································· 145 8.5从 GitLab拉取流水线代码 ·················································································· 147 8.6使用 GitLab的集成功能触发 Jenkins ································································· 150 8.6.1 配置允许 Webhook和集成访问本地网络 ··············································· 151 8.6.2 创建令牌 ·································································································· 151 8.6.3 在 Jenkins中配置令牌 ············································································· 153 8.6.4 创建新任务执行自动构建 ······································································· 155 8.6.5 利用集成设置调用 Jenkins ······································································ 159 第 9章使用 Python发送飞书消息 ( 9min) ·································································· 163 9.1 Python版本的介绍与查看··················································································· 163 9.2 Python脚本格式 ·································································································· 163 9.2.1 缩进 ·········································································································· 164 9.2.2 注释 ·········································································································· 164 目录 IX 9.3标准库与第三方库 ······························································································· 165 9.4调用飞书机器人发送通知 ··················································································· 166 9.5将通知脚本添加到 Pipeline················································································· 171 9.6提取变量发送正确信息 ······················································································· 173 第 10章 SonarQube代码质量管理平台( 43min) ························································ 182 10.1 部署 SonarQube·································································································· 183 10.2 配置 SonarQube·································································································· 184 10.3 手工创建项目并扫描 ························································································· 186 10.4 扫描情况解析 ···································································································· 190 10.5 配置质量门禁 ···································································································· 193 10.6 配置 Jenkins扫描 GitLab项目·········································································· 195 10.7 扫描后端项目 ···································································································· 200 10.8 扫描前端项目 ···································································································· 207 10.9 配置多分支扫描 ································································································· 210 10.10项目合并分支前进行代码扫描 ······································································· 214 10.10.1配置分支保护 ··················································································· 215 10.10.2配置合并请求后触发任务 ······························································· 216 10.10.3配置后端 Jenkins任务 ····································································· 216 10.10.4更改消息发送脚本 ··········································································· 218 10.10.5提交合并分支请求 ··········································································· 221 10.10.6用评论触发执行流水线 ··································································· 223 10.10.7配置前端 Jenkins任务 ····································································· 228 第 11章 Kubernetes容器编排系统( 55min) ································································ 231 11.1 Kubernetes架构介绍·························································································· 232 11.2搭建 Kubernetes集群························································································· 234 11.2.1 搭建集群前的准备 ··············································································· 234 11.2.2 在所有机器上安装必要组件 ······························································· 236 11.2.3 配置集群安装文件 ··············································································· 238 11.2.4 创建集群 ······························································································· 241 11.2.5 将节点加入集群 ··················································································· 243 11.2.6 重置节点 ······························································································· 245 11.3 kubectl的相关配置 ···························································································· 245 11.3.1 kubeconfig····························································································· 245 11.3.2 kubectl命令自动补全 ·········································································· 246 11.4 Pod的相关操作 ································································································· 246 11.4.1 启动一个 Pod························································································ 246 11.4.2 查看 Pod的详细信息 ··········································································· 247 11.4.3 查看 Pod日志与进入 Pod操作 ··························································· 248 11.4.4 命名空间 namespace············································································· 249 11.4.5 删除 Pod ······························································································· 250 11.4.6 使用 YAML文件启动 Pod··································································· 250 11.4.7 Pod的常见状态···················································································· 252 11.5使用流量转发方式暴露服务 ············································································· 253 11.6使用 Deployment管理服务 ··············································································· 254 11.7使用 busybox测试内部服务 ·············································································· 258 11.8创建 Service代理服务 ······················································································· 260 11.8.1 使用默认的 ClusterIP暴露服务 ·························································· 260 11.8.2 使用 NodePort暴露内部服务 ······························································ 262 11.8.3 使用 ExternalName映射外部域名 ······················································· 264 11.8.4 使用 LoadBalancer绑定局域网 IP······················································· 265 11.8.5 使用 YAML文件删除资源 ·································································· 268 11.9更改 Kubernetes中的上游 DNS ········································································ 268 11.10 Kubernetes的包管理器 Helm ·········································································· 269 11.10.1 安装配置 Helm ················································································· 270 11.10.2 添加 Helm仓库 ················································································ 270 11.10.3 安装和卸载 ······················································································· 270 11.10.4 Helm包的结构 ················································································· 271 11.10.5 以自定义值启动 Chart ····································································· 273 11.10.6 更新和回滚 ······················································································· 274 11.10.7 使用 Chart包生成 YAML文件 ······················································· 275 11.11使用 Ingress暴露服务 ······················································································ 276 11.11.1 安装 Ingress-nginx ············································································ 276 11.11.2 配置 Ingress ······················································································ 278 第 12章将芋道项目部署到 Kubernetes( 8min) ·························································· 282 12.1 构建后端服务镜像并启动 ················································································· 282 12.2 构建前端服务镜像并启动 ················································································· 286 目录 XI 第 13章 API抓取与调试( 20min) ················································································ 290 13.1 什么是 API········································································································· 290 13.2 在浏览器中查看接口 ························································································· 291 13.3 使用 Apifox调试接口 ······················································································· 294 13.4 使用接口模拟登录 ····························································································· 296 13.5 抓取用户接口 ···································································································· 300 13.6 Apifox中的后置条件与动态值········································································· 302 第 14章接口压测 ( 16min)···························································································· 306 14.1 压测类型与压测工具 ························································································· 306 14.2 JMeter的安装与启动························································································· 307 14.3 压测登录接口 ···································································································· 309 14.4 调整服务数量再次压测 ····················································································· 314 14.5 安装 Metrics Server ···························································································· 315 14.6 使用 Metrics Server持续监控服务···································································· 317 第 15章 DevOps················································································································ 319 15.1 DevOps生命周期 ······························································································ 319 15.2 DevOps工具链 ·································································································· 321 15.3 DevOps中的 CI/CD··························································································· 322 15.4 完善流水线 ········································································································ 323 15.4.1 消息通知脚本 ······················································································· 323 15.4.2 手动扫描分支 ······················································································· 326 15.4.3 手动构建镜像 ······················································································· 329 15.4.4 手动部署 ······························································································ 335 15.4.5 分支合并前代码扫描 ··········································································· 339 15.4.6 每日构建 ······························································································ 340 后记 ······································································································································ 349 目录 CONTENTS 第 1章基础服务搭建 ( 31min) ·························································································· 1 1.1 SSL/TLS协议简介 ·································································································· 1 1.1.1 为何使用 SSL/TLS······················································································· 1 1.1.2 SSL/TLS加密传输过程··············································································· 2 1.2自建 CA证书··········································································································· 2 1.2.1 创建 CA根证书 ··························································································· 3 1.2.2 使用 CA证书签发其他证书········································································ 4 1.3使用自建证书实现站点的 HTTPS访问 ································································· 6 1.3.1 安装并配置 Nginx························································································ 6 1.3.2 Linux系统配置信任 CA证书 ····································································· 7 1.3.3 Windows系统配置信任 CA证书································································ 9 1.4 Docker的安装和使用 ···························································································· 13 1.4.1 使用阿里云源安装 Docker服务································································ 13 1.4.2 镜像名的构成 ····························································································· 14 1.4.3 Docker镜像的获取 ···················································································· 15 1.4.4 Docker的常用命令 ···················································································· 16 1.4.5 使用 Docker部署 Nginx ············································································ 17 1.4.6 容器信息状态的查看 ················································································· 18 1.4.7 容器资源占用情况 ····················································································· 19 1.4.8 停止和删除容器 ························································································· 19 1.4.9 使用 Dockerfile制作镜像并启动 ······························································ 20 1.5 DNS服务器的部署和使用 ···················································································· 22 1.5.1 Technitium DNS的部署 ············································································· 22 1.5.2 使用 Technitium DNS解析域名 ································································ 23 1.5.3 配置 DNS服务器地址 ··············································································· 26 1.5.4 内网 DNS的必要性 ··················································································· 28 1.5.5 配置 DNS服务器地址 ··············································································· 28 1.6 NTP服务器的部署和使用 ···················································································· 30 1.6.1 NTP服务器································································································ 30 1.6.2 安装配置 NTP客户端 chronyd·································································· 31 1.6.3 设置系统时区 ····························································································· 32 第 2章 Nexus仓库管理器( 9min)··················································································· 34 2.1部署 Nexus ············································································································· 34 2.2配置 Nexus域名与反向代理 ················································································· 38 2.3添加 apt代理仓库·································································································· 39 2.4添加 Docker服务代理仓库 ··················································································· 41 2.5添加 Kubeadm代理仓库 ······················································································· 42 2.6添加 Maven代理仓库···························································································· 44 2.7添加 npm代理仓库································································································ 45 2.8添加 pypi代理仓库································································································ 46 第 3章 Ansible自动化工具 ( 8min) ················································································ 48 3.1安装 Ansible··········································································································· 49 3.2配置被控节点列表 ································································································· 49 3.3 Ansible常用模块 ··································································································· 50 3.4 Playbook ················································································································· 52 3.4.1 分发密钥 ···································································································· 52 3.4.2 Playbook语法 ···························································································· 54 3.4.3 配置基础环境 ····························································································· 55 第 4章 Harbor镜像仓库( 8min) ···················································································· 59 4.1部署 Harbor············································································································ 59 4.1.1 Harbor配置文件 ························································································ 60 4.1.2 配置 Harbor域名与反向代理 ···································································· 62 4.1.3 启动 Harbor ································································································ 63 4.2登录使用 Harbor ···································································································· 63 4.2.1 将镜像推送到 Harbor················································································· 64 4.2.2 从 Harbor拉取镜像 ··················································································· 65 4.3配置 Harbor开机自启动 ························································································ 66 4.4修改已启动 Harbor配置························································································ 67 目录 VII 第 5章 Git的基本使用······································································································· 68 5.1 Git的安装 ·············································································································· 68 5.2 Git的主要区域 ······································································································ 69 5.3 Git的常用命令 ······································································································ 70 第 6章部署芋道项目 ( 14min) ························································································ 75 6.1配置后端项目环境 ································································································· 75 6.2下载并构建后端项目 ····························································································· 76 6.3中间件服务部署 ···································································································· 78 6.4配置 Node.js环境 ·································································································· 80 6.5下载并构建前端项目 ····························································································· 82 6.6更改前后端项目配置 ····························································································· 83 6.7构建启动前端项目 ································································································· 84 6.8构建启动后端项目 ································································································· 85 6.9登录芋道平台 ········································································································ 86 第 7章 GitLab代码托管平台 ( 18min)···········································································87 7.1部署 GitLab域名与反向代理 ················································································ 87 7.2配置 GitLab ············································································································ 88 7.2.1 配置 GitLab域名与反向代理 ···································································· 88 7.2.2 设置中文界面 ····························································································· 89 7.2.3 更改密码 ···································································································· 91 7.2.4 关闭个人注册 ····························································································· 91 7.2.5 配置默认主分支名称 ················································································· 92 7.3权限管理 ················································································································ 93 7.3.1 创建用户 ···································································································· 93 7.3.2 创建群组 ···································································································· 95 7.3.3 角色权限 ···································································································· 96 7.4创建项目 ················································································································ 97 7.5配置 GitLab显示正确内容 ···················································································· 98 7.6配置 SSH密钥 ······································································································· 99 7.7将代码推送到 GitLab ·························································································· 101 7.8分支操作 ·············································································································· 103 7.8.1 分支发布流程 ··························································································· 105 7.8.2 版本号规范 ······························································································ 106 7.9使用 SSH协议克隆项目······················································································ 107 7.10重置 GitLab管理员密码 ···················································································· 108 7.11推送源项目更新到 GitLab················································································· 108 第 8章 Jenkins持续交付平台( 44min) ········································································ 110 8.1部署 Jenkins ········································································································· 110 8.2配置 Jenkins ········································································································· 113 8.2.1 更改密码 ·································································································· 113 8.2.2 配置 Jenkins域名与反向代理 ································································· 113 8.2.3 插件管理 ·································································································· 114 8.2.4 配置从节点 ······························································································ 117 8.3创建并运行自由风格任务 ··················································································· 121 8.3.1 配置 GitLab仓库 ····················································································· 122 8.3.2 查看构建结果 ··························································································· 125 8.3.3 中间件地址的配置 ··················································································· 127 8.3.4 提取 Jenkins中的变量 ············································································· 128 8.3.5 将构建产物制作为容器镜像 ··································································· 130 8.3.6 将后端镜像推送到镜像仓库 ··································································· 133 8.3.7 构建并推送前端镜像 ··············································································· 136 8.3.8 优化日志颜色显示 ··················································································· 138 8.4创建流水线风格工作 ··························································································· 139 8.4.1 后端项目改为 Pipeline············································································· 139 8.4.2 前端项目改为 Pipeline············································································· 145 8.5从 GitLab拉取流水线代码 ·················································································· 147 8.6使用 GitLab的集成功能触发 Jenkins ································································· 150 8.6.1 配置允许 Webhook和集成访问本地网络 ··············································· 151 8.6.2 创建令牌 ·································································································· 151 8.6.3 在 Jenkins中配置令牌 ············································································· 153 8.6.4 创建新任务执行自动构建 ······································································· 155 8.6.5 利用集成设置调用 Jenkins ······································································ 159 第 9章使用 Python发送飞书消息 ( 9min) ·································································· 163 9.1 Python版本的介绍与查看··················································································· 163 9.2 Python脚本格式 ·································································································· 163 9.2.1 缩进 ·········································································································· 164 9.2.2 注释 ·········································································································· 164 目录 IX 9.3标准库与第三方库 ······························································································· 165 9.4调用飞书机器人发送通知 ··················································································· 166 9.5将通知脚本添加到 Pipeline················································································· 171 9.6提取变量发送正确信息 ······················································································· 173 第 10章 SonarQube代码质量管理平台( 43min) ························································ 182 10.1 部署 SonarQube·································································································· 183 10.2 配置 SonarQube·································································································· 184 10.3 手工创建项目并扫描 ························································································· 186 10.4 扫描情况解析 ···································································································· 190 10.5 配置质量门禁 ···································································································· 193 10.6 配置 Jenkins扫描 GitLab项目·········································································· 195 10.7 扫描后端项目 ···································································································· 200 10.8 扫描前端项目 ···································································································· 207 10.9 配置多分支扫描 ································································································· 210 10.10项目合并分支前进行代码扫描 ······································································· 214 10.10.1配置分支保护 ··················································································· 215 10.10.2配置合并请求后触发任务 ······························································· 216 10.10.3配置后端 Jenkins任务 ····································································· 216 10.10.4更改消息发送脚本 ··········································································· 218 10.10.5提交合并分支请求 ··········································································· 221 10.10.6用评论触发执行流水线 ··································································· 223 10.10.7配置前端 Jenkins任务 ····································································· 228 第 11章 Kubernetes容器编排系统( 55min) ································································ 231 11.1 Kubernetes架构介绍·························································································· 232 11.2搭建 Kubernetes集群························································································· 234 11.2.1 搭建集群前的准备 ··············································································· 234 11.2.2 在所有机器上安装必要组件 ······························································· 236 11.2.3 配置集群安装文件 ··············································································· 238 11.2.4 创建集群 ······························································································· 241 11.2.5 将节点加入集群 ··················································································· 243 11.2.6 重置节点 ······························································································· 245 11.3 kubectl的相关配置 ···························································································· 245 11.3.1 kubeconfig····························································································· 245 11.3.2 kubectl命令自动补全 ·········································································· 246 11.4 Pod的相关操作 ································································································· 246 11.4.1 启动一个 Pod························································································ 246 11.4.2 查看 Pod的详细信息 ··········································································· 247 11.4.3 查看 Pod日志与进入 Pod操作 ··························································· 248 11.4.4 命名空间 namespace············································································· 249 11.4.5 删除 Pod ······························································································· 250 11.4.6 使用 YAML文件启动 Pod··································································· 250 11.4.7 Pod的常见状态···················································································· 252 11.5使用流量转发方式暴露服务 ············································································· 253 11.6使用 Deployment管理服务 ··············································································· 254 11.7使用 busybox测试内部服务 ·············································································· 258 11.8创建 Service代理服务 ······················································································· 260 11.8.1 使用默认的 ClusterIP暴露服务 ·························································· 260 11.8.2 使用 NodePort暴露内部服务 ······························································ 262 11.8.3 使用 ExternalName映射外部域名 ······················································· 264 11.8.4 使用 LoadBalancer绑定局域网 IP······················································· 265 11.8.5 使用 YAML文件删除资源 ·································································· 268 11.9更改 Kubernetes中的上游 DNS ········································································ 268 11.10 Kubernetes的包管理器 Helm ·········································································· 269 11.10.1 安装配置 Helm ················································································· 270 11.10.2 添加 Helm仓库 ················································································ 270 11.10.3 安装和卸载 ······················································································· 270 11.10.4 Helm包的结构 ················································································· 271 11.10.5 以自定义值启动 Chart ····································································· 273 11.10.6 更新和回滚 ······················································································· 274 11.10.7 使用 Chart包生成 YAML文件 ······················································· 275 11.11使用 Ingress暴露服务 ······················································································ 276 11.11.1 安装 Ingress-nginx ············································································ 276 11.11.2 配置 Ingress ······················································································ 278 第 12章将芋道项目部署到 Kubernetes( 8min) ·························································· 282 12.1 构建后端服务镜像并启动 ················································································· 282 12.2 构建前端服务镜像并启动 ················································································· 286 目录 XI 第 13章 API抓取与调试( 20min) ················································································ 290 13.1 什么是 API········································································································· 290 13.2 在浏览器中查看接口 ························································································· 291 13.3 使用 Apifox调试接口 ······················································································· 294 13.4 使用接口模拟登录 ····························································································· 296 13.5 抓取用户接口 ···································································································· 300 13.6 Apifox中的后置条件与动态值········································································· 302 第 14章接口压测 ( 16min)···························································································· 306 14.1 压测类型与压测工具 ························································································· 306 14.2 JMeter的安装与启动························································································· 307 14.3 压测登录接口 ···································································································· 309 14.4 调整服务数量再次压测 ····················································································· 314 14.5 安装 Metrics Server ···························································································· 315 14.6 使用 Metrics Server持续监控服务···································································· 317 第 15章 DevOps················································································································ 319 15.1 DevOps生命周期 ······························································································ 319 15.2 DevOps工具链 ·································································································· 321 15.3 DevOps中的 CI/CD··························································································· 322 15.4 完善流水线 ········································································································ 323 15.4.1 消息通知脚本 ······················································································· 323 15.4.2 手动扫描分支 ······················································································· 326 15.4.3 手动构建镜像 ······················································································· 329 15.4.4 手动部署 ······························································································ 335 15.4.5 分支合并前代码扫描 ··········································································· 339 15.4.6 每日构建 ······························································································ 340 后记 ······································································································································ 349
你还可能感兴趣
我要评论
|







