本教材目的是使读者掌握云原生技术及应用实践技能。本书分为9章,第1章主要讲解云原生的定义、云原生的关键技术及国内云原生产业现状;第2章主要以云原生的技术全景图为主线介绍云原生层次关系及中国云原生技术全景;第3章主要讲解云原生架构定义、架构模式演进、云原生架构原则等;第4章详细讲解容器技术背景、容器技术的基本概念、容器技术之Docker、Docker的使用及容器技术之Containerd等。第5章讲解容器编排方法及主要工具,着重讲解Kubernetes基本原理、Kubernetes的API对象、Kubernetes的服务暴露方式等内容;第6章主要讲解微服务主要技术、微服务框架及微服务在云原生中的应用方法等;第7章主要讲解Serverless和Service Mesh 及Service Mesh的具体实现Istio;第8章主要讲解DevOps基本概念、生命周期、IaC和GitOps、源代码管理、持续集成、持续交付、流水线及代码质量管理工具SonarQube;第9章以两个案例详细讲解了如何实现云原生技术落地。 本书可以帮助更多的开发人员和IT从业者了解和掌握云原生技术,促进其在国内的普及和应用。本书适合作为大中专院校、培训机构的云原生技术相关课程的教材。
		
	
郭勇,博士,哈尔滨工业大学计算学部教师,国家精品数字课程"编译原理”主讲教师之一。主要研究方向为软件工程、云计算技术。作为负责人和课题骨干参加各类科研项目及省部级教研项目20余项,在国内外期刊发表论文20余篇,出版教材3部。
目   录
第1章  绪论	1
1.1  云原生概述	1
1.1.1  云原生的诞生	1
1.1.2  云原生计算基金会	1
1.1.3  云原生的定义	2
1.2  云原生的关键技术	2
1.2.1  容器	2
1.2.2  微服务	3
1.2.3  Service Mesh及Serverless技术	3
1.2.4  DevOps	4
1.2.5  CI/CD	5
1.3  国内云原生产业现状	6
习题	8
第2章  云原生的技术全景图	9
2.1  云原生技术全景图的层次关系	9
2.2  供应层	10
2.2.1  自动化与配置	10
2.2.2  容器镜像库	12
2.2.3  安全性与合规性	13
2.2.4  密钥和身份管理	14
2.3  运行时层	15
2.3.1  云原生存储	15
2.3.2  容器运行时	16
2.3.3  云原生网络	17
2.4  编排和管理层	18
2.4.1  编排和调度	18
2.4.2  协调和服务发现	19
2.4.3  远程过程调用	19
2.4.4  服务代理	20
2.4.5  API网关	20
2.4.6  服务网格	21
2.5  应用程序定义和开发层	22
2.5.1  数据库	22
2.5.2  流媒体和消息传递	24
2.5.3  应用程序定义与镜像构建	25
2.5.4  持续集成和持续交付/持续部署	26
2.6  可观察性和分析	27
2.6.1  监视	27
2.6.2  日志	28
2.6.3  跟踪	29
2.6.4  混沌工程	30
2.7  平台	31
2.7.1  发行版	32
2.7.2  托管	32
2.7.3  安装程序	33
2.7.4  平台即服务	33
2.8  中国云原生技术全景	34
2.9  小结	35
习题	35
第3章  云原生架构	36
3.1  云原生架构定义	36
3.2  架构模式演进	36
3.2.1  单体架构	36
3.2.2  分布式系统架构	37
3.2.3  SOA架构	38
3.2.4  微服务架构	38
3.2.5  云原生架构	39
3.3  云原生架构模式	39
3.3.1  服务化架构模式	40
3.3.2  Mesh化架构模式	40
3.3.3  Serverless模式	40
3.3.4  存储计算分离模式	41
3.3.5  分布式事务模式	41
3.3.6  可观测架构	42
3.3.7  事件驱动架构	42
3.4  云原生架构原则	43
3.4.1  服务化原则	43
3.4.2  弹性原则	43
3.4.3  可观测原则	44
3.4.4  韧性原则	44
3.4.5  过程自动化原则	44
3.4.6  零信任原则	45
3.4.7  持续演进原则	45
3.5  小结	46
习题	46
第4章  容器及管理平台	47
4.1  容器技术背景	47
4.1.1  物理机时代	47
4.1.2  虚拟化时代	47
4.1.3  容器化时代	48
4.1.4  容器技术带来的变化	51
4.2  容器技术的基本概念	52
4.2.1  什么叫容器	52
4.2.2  容器的规范	53
4.2.3  容器运行时规范	53
4.2.4  容器镜像规范	54
4.3  容器技术之Docker	55
4.3.1  什么是Docker	55
4.3.2  Docker与虚拟机的区别	56
4.3.3  Docker的架构	58
4.3.4  Docker容器原理	61
4.3.5  Docker运行流程	63
4.4  Docker的使用	64
4.4.1  Dockerfile命令	64
4.4.2  基于Dockerfile创建镜像	66
4.4.3  基于已有容器创建镜像	71
4.4.4  基于本地模板创建镜像	72
4.4.5  容器操作命令	72
4.5  容器技术之Containerd	76
4.5.1  什么是Containerd	77
4.5.2  容器运行时接口CRI	77
4.5.3  Containerd的架构	78
4.5.4  Containerd与Docker比较	79
4.6  小结	81
习题	81
第5章  容器编排	82
5.1  容器编排及主要工具	82
5.1.1  什么是容器编排	82
5.1.2  容器编排主要功能	82
5.1.3  容器编排工具	87
5.1.4  为什么选择Kubernetes	91
5.2  Kubernetes基本原理	93
5.2.1  Kubernetes的架构	93
5.2.2  Kubernetes的设计理念	94
5.2.3  MasterNode	96
5.2.4  WorkerNode	98
5.2.5  命令行Kubectl	99
5.2.6  Kubernetes功能扩展	101
5.3  Kubernetes的API对象	101
5.3.1  API对象	102
5.3.2  Pod	103
5.3.3  复制控制器及副本集	104
5.3.4  部署(Deployment)	107
5.3.5  服务(Service)	108
5.3.6  命名空间(Namespace)	109
5.3.7  任务(Job)	110
5.3.8  后台支撑服务集(DaemonSet)	111
5.3.9  存储卷(Volume)	112
5.3.10  持久卷	116
5.3.11  有状态集StatefulSet	118
5.3.12  ConfigMap和Secret	122
5.4  Kubernetes的服务暴露	123
5.4.1  ClusterIP服务暴露	123
5.4.2  NodePort服务暴露	125
5.4.3  Ingress服务暴露	126
5.5  小结	127
习题	127
第6章  云原生微服务	128
6.1  微服务概述	128
6.1.1  微服务架构的演进	128
6.1.2  微服务架构的特点	128
6.1.3  微服务的粒度	129
6.2  微服务主要技术	130
6.2.1  服务注册与发现	131
6.2.2  负载均衡	131
6.2.3  服务编排	133
6.2.4  流量管控	133
6.3  微服务框架	135
6.3.1  高速服务框架	135
6.3.2  Dubbo	137
6.3.3  Spring Cloud	138
6.4  云原生与微服务	140
6.4.1  云原生架构中的微服务	140
6.4.2  云容器平台	140
6.5  小结	141
习题	141
第7章  Serverless及Service Mesh技术	142
7.1  Serverless概述	142
7.1.1  什么是Serverless	142
7.1.2  Serverless的技术特点	145
7.1.3  Serverless的应用场景	147
7.2  Service Mesh概述	148
7.2.1  Service Mesh定义	149
7.2.2  Service Mesh架构	149
7.2.3  Service Mesh特性	150
7.2.4  Service Mesh实现框架	150
7.3  Istio:Service Mesh最佳实践者	155
7.3.1  Istio架构	155
7.3.2  流量管理	157
7.3.3  安全	165
7.3.4  可观测性	167
7.4  小结	168
习题	168
第8章  DevOps	169
8.1  DevOps基本概念	169
8.1.1  什么是DevOps	169
8.1.2  DevOps和应用程序生命周期	169
8.1.3  DevOps工具链	171
8.1.4  DevOps文化	172
8.1.5  如何更好地实施DevOps	174
8.2  IaC和GitOps	175
8.2.1  基础设施即代码(IaC)	175
8.2.2  什么是GitOps	176
8.2.3  GitOps优势与价值	176
8.2.4  GitOps原理	176
8.2.5  GitOps实践	177
8.3  源代码管理	179
8.3.1  什么是源代码管理	179
8.3.2  源代码管理的价值	179
8.3.3  源代码管理的最佳做法	180
8.3.4  源代码管理工具Git	180
8.3.5  源代码管理平台	182
8.3.6  代码管理平台操作	182
8.4  持续集成	186
8.4.1  什么是持续集成	186
8.4.2  自动构建工具介绍	187
8.4.3  制品管理简介	190
8.4.4  制品管理的工具	190
8.5  持续交付	192
8.5.1  什么是持续交付	192
8.5.2  什么是持续部署	193
8.6  流水线	194
8.6.1  什么是流水线	194
8.6.2  Gitlab流水线	194
8.6.3  Jenkins流水线	196
8.7  代码质量管理工具SonarQube	197
8.7.1  SonarQube安装及基本使用	198
8.7.2  Jenkins集成SonarQube	199
8.8  小结	200
习题	200
第9章  云原生实践	201
9.1  云原生应用实践案例一	201
9.1.1  基本开发环境搭建	201
9.1.2  DevOps环境搭建	202
9.1.3  DevOps平台安装	207
9.1.4  容器环境搭建	208
9.1.5  Istio环境搭建	211
9.1.6  基于DevOps的发布	212
9.1.7  基于服务网格的灰度发布	218
9.1.8  灰度部署原理	221
9.2  云原生应用实践案例二	227
9.2.1  RuoYi-Cloud简介	227
9.2.2  项目环境要求	229
9.2.3  KubeSphere的安装	229
9.2.4  企业空间及项目创建	244
9.2.5  MySQL数据库的部署	245
9.2.6  Redis数据库的部署	260
9.2.7  中间件nacos部署	264
9.2.8  RuoYi系统流水线	272