本教材目的是使讀者掌握云原生技術(shù)及應(yīng)用實(shí)踐技能。本書分為9章,第1章主要講解云原生的定義、云原生的關(guān)鍵技術(shù)及國(guó)內(nèi)云原生產(chǎn)業(yè)現(xiàn)狀;第2章主要以云原生的技術(shù)全景圖為主線介紹云原生層次關(guān)系及中國(guó)云原生技術(shù)全景;第3章主要講解云原生架構(gòu)定義、架構(gòu)模式演進(jìn)、云原生架構(gòu)原則等;第4章詳細(xì)講解容器技術(shù)背景、容器技術(shù)的基本概念、容器技術(shù)之Docker、Docker的使用及容器技術(shù)之Containerd等。第5章講解容器編排方法及主要工具,著重講解Kubernetes基本原理、Kubernetes的API對(duì)象、Kubernetes的服務(wù)暴露方式等內(nèi)容;第6章主要講解微服務(wù)主要技術(shù)、微服務(wù)框架及微服務(wù)在云原生中的應(yīng)用方法等;第7章主要講解Serverless和Service Mesh 及Service Mesh的具體實(shí)現(xiàn)Istio;第8章主要講解DevOps基本概念、生命周期、IaC和GitOps、源代碼管理、持續(xù)集成、持續(xù)交付、流水線及代碼質(zhì)量管理工具SonarQube;第9章以兩個(gè)案例詳細(xì)講解了如何實(shí)現(xiàn)云原生技術(shù)落地。 本書可以幫助更多的開(kāi)發(fā)人員和IT從業(yè)者了解和掌握云原生技術(shù),促進(jìn)其在國(guó)內(nèi)的普及和應(yīng)用。本書適合作為大中專院校、培訓(xùn)機(jī)構(gòu)的云原生技術(shù)相關(guān)課程的教材。
郭勇,博士,哈爾濱工業(yè)大學(xué)計(jì)算學(xué)部教師,國(guó)家精品數(shù)字課程"編譯原理”主講教師之一。主要研究方向?yàn)檐浖こ、云?jì)算技術(shù)。作為負(fù)責(zé)人和課題骨干參加各類科研項(xiàng)目及省部級(jí)教研項(xiàng)目20余項(xiàng),在國(guó)內(nèi)外期刊發(fā)表論文20余篇,出版教材3部。
目 錄
第1章 緒論 1
1.1 云原生概述 1
1.1.1 云原生的誕生 1
1.1.2 云原生計(jì)算基金會(huì) 1
1.1.3 云原生的定義 2
1.2 云原生的關(guān)鍵技術(shù) 2
1.2.1 容器 2
1.2.2 微服務(wù) 3
1.2.3 Service Mesh及Serverless技術(shù) 3
1.2.4 DevOps 4
1.2.5 CI/CD 5
1.3 國(guó)內(nèi)云原生產(chǎn)業(yè)現(xiàn)狀 6
習(xí)題 8
第2章 云原生的技術(shù)全景圖 9
2.1 云原生技術(shù)全景圖的層次關(guān)系 9
2.2 供應(yīng)層 10
2.2.1 自動(dòng)化與配置 10
2.2.2 容器鏡像庫(kù) 12
2.2.3 安全性與合規(guī)性 13
2.2.4 密鑰和身份管理 14
2.3 運(yùn)行時(shí)層 15
2.3.1 云原生存儲(chǔ) 15
2.3.2 容器運(yùn)行時(shí) 16
2.3.3 云原生網(wǎng)絡(luò) 17
2.4 編排和管理層 18
2.4.1 編排和調(diào)度 18
2.4.2 協(xié)調(diào)和服務(wù)發(fā)現(xiàn) 19
2.4.3 遠(yuǎn)程過(guò)程調(diào)用 19
2.4.4 服務(wù)代理 20
2.4.5 API網(wǎng)關(guān) 20
2.4.6 服務(wù)網(wǎng)格 21
2.5 應(yīng)用程序定義和開(kāi)發(fā)層 22
2.5.1 數(shù)據(jù)庫(kù) 22
2.5.2 流媒體和消息傳遞 24
2.5.3 應(yīng)用程序定義與鏡像構(gòu)建 25
2.5.4 持續(xù)集成和持續(xù)交付/持續(xù)部署 26
2.6 可觀察性和分析 27
2.6.1 監(jiān)視 27
2.6.2 日志 28
2.6.3 跟蹤 29
2.6.4 混沌工程 30
2.7 平臺(tái) 31
2.7.1 發(fā)行版 32
2.7.2 托管 32
2.7.3 安裝程序 33
2.7.4 平臺(tái)即服務(wù) 33
2.8 中國(guó)云原生技術(shù)全景 34
2.9 小結(jié) 35
習(xí)題 35
第3章 云原生架構(gòu) 36
3.1 云原生架構(gòu)定義 36
3.2 架構(gòu)模式演進(jìn) 36
3.2.1 單體架構(gòu) 36
3.2.2 分布式系統(tǒng)架構(gòu) 37
3.2.3 SOA架構(gòu) 38
3.2.4 微服務(wù)架構(gòu) 38
3.2.5 云原生架構(gòu) 39
3.3 云原生架構(gòu)模式 39
3.3.1 服務(wù)化架構(gòu)模式 40
3.3.2 Mesh化架構(gòu)模式 40
3.3.3 Serverless模式 40
3.3.4 存儲(chǔ)計(jì)算分離模式 41
3.3.5 分布式事務(wù)模式 41
3.3.6 可觀測(cè)架構(gòu) 42
3.3.7 事件驅(qū)動(dòng)架構(gòu) 42
3.4 云原生架構(gòu)原則 43
3.4.1 服務(wù)化原則 43
3.4.2 彈性原則 43
3.4.3 可觀測(cè)原則 44
3.4.4 韌性原則 44
3.4.5 過(guò)程自動(dòng)化原則 44
3.4.6 零信任原則 45
3.4.7 持續(xù)演進(jìn)原則 45
3.5 小結(jié) 46
習(xí)題 46
第4章 容器及管理平臺(tái) 47
4.1 容器技術(shù)背景 47
4.1.1 物理機(jī)時(shí)代 47
4.1.2 虛擬化時(shí)代 47
4.1.3 容器化時(shí)代 48
4.1.4 容器技術(shù)帶來(lái)的變化 51
4.2 容器技術(shù)的基本概念 52
4.2.1 什么叫容器 52
4.2.2 容器的規(guī)范 53
4.2.3 容器運(yùn)行時(shí)規(guī)范 53
4.2.4 容器鏡像規(guī)范 54
4.3 容器技術(shù)之Docker 55
4.3.1 什么是Docker 55
4.3.2 Docker與虛擬機(jī)的區(qū)別 56
4.3.3 Docker的架構(gòu) 58
4.3.4 Docker容器原理 61
4.3.5 Docker運(yùn)行流程 63
4.4 Docker的使用 64
4.4.1 Dockerfile命令 64
4.4.2 基于Dockerfile創(chuàng)建鏡像 66
4.4.3 基于已有容器創(chuàng)建鏡像 71
4.4.4 基于本地模板創(chuàng)建鏡像 72
4.4.5 容器操作命令 72
4.5 容器技術(shù)之Containerd 76
4.5.1 什么是Containerd 77
4.5.2 容器運(yùn)行時(shí)接口CRI 77
4.5.3 Containerd的架構(gòu) 78
4.5.4 Containerd與Docker比較 79
4.6 小結(jié) 81
習(xí)題 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的架構(gòu) 93
5.2.2 Kubernetes的設(shè)計(jì)理念 94
5.2.3 MasterNode 96
5.2.4 WorkerNode 98
5.2.5 命令行Kubectl 99
5.2.6 Kubernetes功能擴(kuò)展 101
5.3 Kubernetes的API對(duì)象 101
5.3.1 API對(duì)象 102
5.3.2 Pod 103
5.3.3 復(fù)制控制器及副本集 104
5.3.4 部署(Deployment) 107
5.3.5 服務(wù)(Service) 108
5.3.6 命名空間(Namespace) 109
5.3.7 任務(wù)(Job) 110
5.3.8 后臺(tái)支撐服務(wù)集(DaemonSet) 111
5.3.9 存儲(chǔ)卷(Volume) 112
5.3.10 持久卷 116
5.3.11 有狀態(tài)集StatefulSet 118
5.3.12 ConfigMap和Secret 122
5.4 Kubernetes的服務(wù)暴露 123
5.4.1 ClusterIP服務(wù)暴露 123
5.4.2 NodePort服務(wù)暴露 125
5.4.3 Ingress服務(wù)暴露 126
5.5 小結(jié) 127
習(xí)題 127
第6章 云原生微服務(wù) 128
6.1 微服務(wù)概述 128
6.1.1 微服務(wù)架構(gòu)的演進(jìn) 128
6.1.2 微服務(wù)架構(gòu)的特點(diǎn) 128
6.1.3 微服務(wù)的粒度 129
6.2 微服務(wù)主要技術(shù) 130
6.2.1 服務(wù)注冊(cè)與發(fā)現(xiàn) 131
6.2.2 負(fù)載均衡 131
6.2.3 服務(wù)編排 133
6.2.4 流量管控 133
6.3 微服務(wù)框架 135
6.3.1 高速服務(wù)框架 135
6.3.2 Dubbo 137
6.3.3 Spring Cloud 138
6.4 云原生與微服務(wù) 140
6.4.1 云原生架構(gòu)中的微服務(wù) 140
6.4.2 云容器平臺(tái) 140
6.5 小結(jié) 141
習(xí)題 141
第7章 Serverless及Service Mesh技術(shù) 142
7.1 Serverless概述 142
7.1.1 什么是Serverless 142
7.1.2 Serverless的技術(shù)特點(diǎn) 145
7.1.3 Serverless的應(yīng)用場(chǎng)景 147
7.2 Service Mesh概述 148
7.2.1 Service Mesh定義 149
7.2.2 Service Mesh架構(gòu) 149
7.2.3 Service Mesh特性 150
7.2.4 Service Mesh實(shí)現(xiàn)框架 150
7.3 Istio:Service Mesh最佳實(shí)踐者 155
7.3.1 Istio架構(gòu) 155
7.3.2 流量管理 157
7.3.3 安全 165
7.3.4 可觀測(cè)性 167
7.4 小結(jié) 168
習(xí)題 168
第8章 DevOps 169
8.1 DevOps基本概念 169
8.1.1 什么是DevOps 169
8.1.2 DevOps和應(yīng)用程序生命周期 169
8.1.3 DevOps工具鏈 171
8.1.4 DevOps文化 172
8.1.5 如何更好地實(shí)施DevOps 174
8.2 IaC和GitOps 175
8.2.1 基礎(chǔ)設(shè)施即代碼(IaC) 175
8.2.2 什么是GitOps 176
8.2.3 GitOps優(yōu)勢(shì)與價(jià)值 176
8.2.4 GitOps原理 176
8.2.5 GitOps實(shí)踐 177
8.3 源代碼管理 179
8.3.1 什么是源代碼管理 179
8.3.2 源代碼管理的價(jià)值 179
8.3.3 源代碼管理的最佳做法 180
8.3.4 源代碼管理工具Git 180
8.3.5 源代碼管理平臺(tái) 182
8.3.6 代碼管理平臺(tái)操作 182
8.4 持續(xù)集成 186
8.4.1 什么是持續(xù)集成 186
8.4.2 自動(dòng)構(gòu)建工具介紹 187
8.4.3 制品管理簡(jiǎn)介 190
8.4.4 制品管理的工具 190
8.5 持續(xù)交付 192
8.5.1 什么是持續(xù)交付 192
8.5.2 什么是持續(xù)部署 193
8.6 流水線 194
8.6.1 什么是流水線 194
8.6.2 Gitlab流水線 194
8.6.3 Jenkins流水線 196
8.7 代碼質(zhì)量管理工具SonarQube 197
8.7.1 SonarQube安裝及基本使用 198
8.7.2 Jenkins集成SonarQube 199
8.8 小結(jié) 200
習(xí)題 200
第9章 云原生實(shí)踐 201
9.1 云原生應(yīng)用實(shí)踐案例一 201
9.1.1 基本開(kāi)發(fā)環(huán)境搭建 201
9.1.2 DevOps環(huán)境搭建 202
9.1.3 DevOps平臺(tái)安裝 207
9.1.4 容器環(huán)境搭建 208
9.1.5 Istio環(huán)境搭建 211
9.1.6 基于DevOps的發(fā)布 212
9.1.7 基于服務(wù)網(wǎng)格的灰度發(fā)布 218
9.1.8 灰度部署原理 221
9.2 云原生應(yīng)用實(shí)踐案例二 227
9.2.1 RuoYi-Cloud簡(jiǎn)介 227
9.2.2 項(xiàng)目環(huán)境要求 229
9.2.3 KubeSphere的安裝 229
9.2.4 企業(yè)空間及項(xiàng)目創(chuàng)建 244
9.2.5 MySQL數(shù)據(jù)庫(kù)的部署 245
9.2.6 Redis數(shù)據(jù)庫(kù)的部署 260
9.2.7 中間件nacos部署 264
9.2.8 RuoYi系統(tǒng)流水線 272