作 者:王炜,王振威 著
定 价:108
出 版 社:电子工业出版社
出版日期:2021年10月01日
页 数:428
装 帧:平装
ISBN:9787121419669
●01声明式持续部署概述1
1.1持续交付与持续部署2
1.1.1为什么要持续交付2
1.1.2持续交付的好处3
1.1.3保持随时可交付4
1.1.4解决问题:提高发布频率4
1.1.5自动化持续部署5
1.2命令式与声明式6
1.2.1简单易用的命令式7
1.2.2抽象和归纳的声明式8
1.3常见的声明式系统9
1.3.1Kubernetes9
1.3.2Terraform11
1.3.3Ansible12
1.4声明式与命令式结合:声明式脚本流水线13
1.4.1核心思想13
1.4.2代码即流水线14
1.4.3步骤执行15
1.5声明式脚本流水线的意义16
1.5.1简化行为描述16
1.5.2降低学习曲线17
1.5.3落地持续部署17
1.5.4实现自动化17
1.6本章小结18
02管理云基础设施19
2.1迁移至云原生与混合云的挑战20
2.1.1凭据管理20
2.1.2多云架构20
2.1.3跨地域部署21
2.1.4自动伸缩21
2.1.5不可变的基础设施和部署制品22
2.1.6服务发现22
2.2组织云基础设施23
2.2.1以应用为中心23
2.2.2抽象对云的操作24
2.2.3云模型26
2.2.4多云配置26
2.3流量组织形式27
2.3.1启用/不启用27
2.3.2启用/启用27
2.4持续部署工具对比27
2.4.1Tekton28
2.4.2ArgoCD31
2.5本章小结36
03Spinnaker简介37
3.1概念38
3.2应用管理38
3.2.1应用39
3.2.2服务器组39
3.2.3集群39
3.2.4负载均衡器41
3.2.5防火墙41
3.3应用程序部署42
3.3.1流水线42
3.3.2阶段43
3.3.3任务43
3.3.4部署策略43
3.4云提供商45
3.5Spinnaker架构46
3.5.1Deck48
3.5.2Gate50
3.5.3Clouddriver50
3.5.4Orca51
3.5.5Echo52
3.5.6Front5053
3.5.7Igor54
3.5.8Fiat54
3.5.9Rosco55
3.5.10Kayenta56
3.6本章小结57
04安装Spinnaker59
4.1环境要求59
4.1.1Kubernetes59
4.1.2Kubectl62
4.1.3Jenkins63
4.1.4DockerRegistery66
4.2安装部署67
4.2.1Halyard命令行工具67
4.2.2选择云提供商70
4.2.3选择运行环境71
4.2.4选择存储方式71
4.2.5部署73
4.2.6升级78
4.2.7备份配置79
4.2.8常见问题81
4.3本章小结82
05Spinnaker基本工作流程:流水线84
5.1管理流水线85
5.1.1创建流水线85
5.1.2配置流水线87
5.1.3添加自动触发器87
5.1.4添加阶段88
5.1.5手动运行流水线89
5.1.6禁用流水线91
5.1.7删除流水线91
5.1.8锁定流水线92
5.1.9重命名流水线93
5.1.10通过JSON编辑流水线93
5.1.11流水线历史版本94
5.2部署制品95
5.2.1在流水线中使用制品98
5.2.2自定义触发器制品103
5.2.3KubernetesManifest制品104
5.2.4制品类型108
5.3启动参数108
5.4阶段109
5.4.1基础设施阶段110
5.4.2集成外部系统阶段112
5.4.3测试阶段113
5.4.4流程控制阶段113
5.4.5自定义阶段114
5.5触发器114
5.5.1时间型触发器115
5.5.2事件型触发器115
5.6通知116
5.7流水线表达式118
5.7.1编写表达式119
5.7.2测试表达式124
5.8版本控制和审计125
5.9动态流水线示例126
5.10本章小结132
06深入核心概念133
6.1虚拟机阶段133
6.1.1Bake133
6.1.2TagImage135
6.1.3FindImageFromCluster135
6.1.4FindImageFromTags136
6.1.5Deploy137
6.1.6DisableCluster139
6.1.7DisableServerGroup140
6.1.8EnableServerGroup141
6.1.9ResizeServerGroup142
6.1.10CloneServerGroup143
6.1.11RollbackCluster144
6.1.12ScaleDownCluster145
6.2Kubernetes阶段145
6.2.1Bake(Manifest)146
6.2.2Delete(Manifest)147
6.2.3Deploy(Manifest)148
6.2.4FindArtifactsFromResource(Manifest)151
6.2.5Patch(Manifest)152
6.2.6Scale(Manifest)154
6.2.7UndoRollout(Manifest)155
6.3集成外部系统阶段156
6.3.1Jenkins156
6.3.2运行Script脚本158
6.3.3Travis阶段160
6.3.4Concourse阶段162
6.3.5Wercker阶段163
6.3.6Webhook阶段165
6.3.7自定义Webhook阶段167
6.4流程控制阶段170
6.4.1Wait171
6.4.2ManualJudgment171
6.4.3CheckPreconditions173
6.4.4Pipeline174
6.5其他阶段175
6.6部署制品类型176
6.6.1Docker镜像176
6.6.2Base64178
6.6.3AWSS3179
6.6.4GitRepo181
6.6.5GitHub文件182
6.6.6GitLab文件184
6.6.7Helm185
6.6.8HTTP文件188
6.6.9Kubernetes对象189
6.6.10Maven190
6.7配置触发器192
6.7.1Git192
6.7.2DockerRegistry194
6.7.3HelmChart196
6.7.4Artifactory197
6.7.5Webhook198
6.7.6Jenkins201
6.7.7Concourse202
6.7.8Travis202
6.7.9CRON203
6.7.10Pipeline204
6.7.11Pub/Sub204
6.8使用流水线模板205
6.8.1安装SpinCLI206
6.8.2创建流水线模板209
6.8.3渲染流水线模板211
6.8.4使用模板创建流水线211
6.8.5继承模板或覆盖213
6.9消息通知213
6.9.1Email216
6.9.2Slack218
6.9.3SMS220
6.9.4企业机器人221
6.9.5钉钉机器人223
6.10本章小结226
07自动金丝雀分析227
7.1Spinnaker自动金丝雀发布227
7.2安装组件229
7.2.1安装Prometheus229
7.2.2集成Minio232
7.2.3集成Prometheus233
7.3配置金丝雀233
7.3.1创建一个金丝雀配置234
7.3.2创建和使用选择器模板239
7.3.3创建金丝雀阶段240
7.4获取金丝雀报告248
7.5工作原理250
7.6很好实践251
7.7本章小结253
08混沌工程254
8.1理论基础254
8.1.1概念定义254
8.1.2发展历程255
8.2为什么需要混沌工程256
8.2.1与测试的区别256
8.2.2与故障注入的区别256
8.2.3核心思想257
8.3五大原则257
8.3.1建立稳定状态的假设257
8.3.2用多样的现实世界事件做验证258
8.3.3在生产环境中进行测试258
8.3.4快速终止和最小爆炸半径259
8.3.5自动化实验以持续运行259
8.4如何实现混沌工程259
8.4.1设计实验步骤260
8.4.2确定成熟度模型260
8.4.3确定应用度模型262
8.4.4绘制成熟度模型263
8.5在Spinnaker中实施混沌工程263
8.5.1Gremlin264
8.5.2ChaosMesh265
8.6本章小结268
09使部署更加安全269
9.1集群部署269
9.1.1部署策略269
9.1.2回滚策略278
9.1.3时间窗口283
9.2流水线执行285
9.2.1并发285
9.2.2锁定286
9.2.3禁用287
9.2.4阶段条件判断288
9.2.5人工确认288
9.3自动验证阶段295
9.4审计和可追溯299
9.4.1消息通知299
9.4.2流水线变更历史300
9.4.3事件流记录301
9.5本章小结302
10很好实践303
10.1南北流量自动灰度发布:Kubernetes+NginxIngress304
10.1.1环境准备304
10.1.2部署NginxIngress305
10.1.3初始化环境308
10.1.4创建流水线309
10.1.5运行流水线311
10.1.6原理分析317
10.1.7生产建议319
10.2东西流量自动灰度发布:Kubernetes+ServiceMesh319
10.2.1环境准备320
10.2.2安装Istio321
10.2.3Bookinfo应用322
10.2.4初始化环境324
10.2.5创建流水线326
10.2.6运行流水线328
10.2.7原理分析332
10.3本章小结334
11生产建议336
11.1SSL336
11.2认证341
11.2.1SAML342
11.2.2OAuth345
11.2.3LDAP349
11.2.4x509350
11.3授权351
11.3.1YAML353
11.3.2SAML354
11.3.3LDAP354
11.3.4GitHub355
11.3.5ServiceAccount356
11.3.6流水线权限358
11.4Redis配置优化359
11.5横向扩容360
11.6使用MySQL作为存储系统363
11.6.1Front50366
11.6.2Clouddriver367
11.6.3Orca369
11.7监控372
11.7.1Prometheus373
11.7.2Grafana378
11.8本章小结382
12扩展Spinnaker383
12.1配置开发环境383
12.1.1Kork383
12.1.2组件概述384
12.1.3环境配置385
12.2编写新阶段386
12.3本章小结394
13迁移到Spinnaker395
13.1如何说服团队395
13.2迁移原则396
13.2.1最小化变更工作流396
13.2.2利用已有设施397
13.2.3组织架构不变性397
13.3本章小结399
本书聚焦于云原生和多云环境的持续部署方案,共分13章,内容涉及声明式持续部署概述、Spinnaker基础与实战、金丝雀发布与灰度发布、部署安全、混沌工程及生产化建议等,结构清晰,循序渐进,深入浅出。在持续部署很好实践方面,本书重点介绍了如何实施灰度发布、自动金丝雀分析和混沌工程,这些高级部署功能是Netflix公司实现快速而稳定迭代的核心技术。关于如何落地Spinnaker,本书站在人和组织架构的视角,为迁移团队提供了指导性的意见,解决了新技术落地难的问题。