图书目录

目录

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