目录
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
