使用GitOps實(shí)現(xiàn)Kubernetes的持續(xù)部署:模式、流程及工具
定 價(jià):119 元
叢書名:云計(jì)算與虛擬化技術(shù)叢書
- 作者:[美]比利·袁(Billy Yuen),[美]亞歷山大·馬秋申采夫(Alexander Matyushentsev),[美]托德·?纤固(Todd Ekenstam),[美]杰西·孫(Jesse Suen) 著
- 出版時(shí)間:2023/1/1
- ISBN:9787111717157
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP393.027
- 頁(yè)碼:278
- 紙張:
- 版次:
- 開本:16
本書提供了通過GitOps使用Kubernetes的實(shí)用教程,內(nèi)容涵蓋GitOps的實(shí)踐、技術(shù)和工具,它們可以簡(jiǎn)化Kubernetes來更快地交付企業(yè)級(jí)軟件,而不影響安全性。通過閱讀本書,你將了解GitOps在靈活的配置管理、監(jiān)控、健壯性、多環(huán)境支持和安全性等方面的好處,并掌握以獨(dú)特的GitOps方式進(jìn)行管理的技巧。學(xué)完本書,你將能夠?qū)崿F(xiàn)和管理一個(gè)可伸縮的持續(xù)交付管道,這使得跟蹤更改、回滾錯(cuò)誤以及清晰地驗(yàn)證和審計(jì)容器部署變得容易。
推薦序
前言
致謝
關(guān)于作者
第一部分 背景
第1章 為什么需要GitOps 2
1.1 GitOps的演進(jìn) 2
1.1.1 傳統(tǒng)Ops 3
1.1.2 DevOps 4
1.1.3 GitOps 5
1.2 GitOps帶給開發(fā)者的好處 7
1.2.1 基礎(chǔ)設(shè)施即代碼 7
1.2.2 自服務(wù) 8
1.2.3 代碼審查 9
1.2.4 Git拉取請(qǐng)求 9
1.3 GitOps帶給運(yùn)維的好處 10
1.3.1 聲明式 10
1.3.2 可觀測(cè)性 12
1.3.3 可審計(jì)性和合規(guī)性 13
1.3.4 災(zāi)難恢復(fù) 15
1.4 總結(jié) 15
第2章 Kubernetes與GitOps 17
2.1 Kubernetes介紹 17
2.1.1 Kubernetes是什么 18
2.1.2 其他容器編排系統(tǒng) 19
2.1.3 Kubernetes架構(gòu) 19
2.1.4 部署應(yīng)用到Kubernetes 21
2.2 聲明式對(duì)象管理與命令式
對(duì)象管理 26
2.3 控制器架構(gòu) 32
2.3.1 控制器委派 32
2.3.2 控制器模式 32
2.3.3 NGINX Operator 34
2.4 Kubernetes和GitOps的關(guān)系 38
2.5 CI/CD入門 38
2.5.1 基本的GitOps Operator 38
2.5.2 持續(xù)集成流水線 41
2.6 總結(jié) 44
第二部分 模式和流程
第3章 環(huán)境管理 48
3.1 環(huán)境管理簡(jiǎn)介 48
3.1.1 環(huán)境的組成 49
3.1.2 命名空間管理 51
3.1.3 網(wǎng)絡(luò)隔離 55
3.1.4 非生產(chǎn)集群和生產(chǎn)集群 58
3.2 Git策略 59
3.2.1 單分支(多目錄) 60
3.2.2 多分支 60
3.2.3 多代碼庫(kù)與單一代碼庫(kù) 61
3.3 配置管理 61
3.3.1 Helm 62
3.3.2 Kustomize 65
3.3.3 Jsonnet 69
3.3.4 小結(jié) 72
3.4 持久環(huán)境與臨時(shí)環(huán)境 73
3.5 總結(jié) 73
第4章 流水線 75
4.1 CI/CD流水線中的階段 75
4.1.1 GitOps持續(xù)集成 76
4.1.2 GitOps持續(xù)交付 82
4.2 推動(dòng)晉級(jí)工作 86
4.2.1 代碼、清單和應(yīng)用配置 86
4.2.2 代碼和鏡像晉級(jí) 86
4.2.3 環(huán)境晉級(jí) 88
4.2.4 匯總 89
4.3 其他流水線 90
4.3.1 回滾 91
4.3.2 合規(guī)流水線 93
4.4 總結(jié) 95
第5章 部署策略 96
5.1 Deployment基礎(chǔ)知識(shí) 96
5.1.1 為什么ReplicaSet不適合
GitOps 97
5.1.2 Deployment如何與ReplicaSet
一起工作 100
5.1.3 流量路由 107
5.1.4 在minikube中配置其他
策略 108
5.2 藍(lán)綠部署 109
5.2.1 使用Deployment實(shí)現(xiàn)藍(lán)綠
部署 109
5.2.2 使用Argo Rollouts實(shí)現(xiàn)藍(lán)綠
部署 115
5.3 金絲雀部署 119
5.3.1 使用Deployment實(shí)現(xiàn)
金絲雀部署 120
5.3.2 使用Argo Rollouts實(shí)現(xiàn)
金絲雀部署 124
5.4 漸進(jìn)式交付 125
5.5 總結(jié) 132
第6章 訪問控制與安全 133
6.1 訪問控制介紹 133
6.1.1 什么是訪問控制 134
6.1.2 確保什么 134
6.1.3 GitOps的訪問控制 137
6.2 訪問限制 139
6.2.1 Git倉(cāng)庫(kù)訪問 139
6.2.2 Kubernetes RBAC 146
6.2.3 鏡像倉(cāng)庫(kù)訪問 151
6.3 模式 153
6.3.1 完全訪問 153
6.3.2 部署倉(cāng)庫(kù)訪問 153
6.3.3 僅限代碼訪問 155
6.4 安全考量 155
6.4.1 防止從不受信任的鏡像倉(cāng)庫(kù)
拉取鏡像 155
6.4.2 Git倉(cāng)庫(kù)中的集群級(jí)資源 156
6.5 總結(jié) 156
第7章 Secret 158
7.1 Kubernetes Secret 158
7.1.1 為什么使用Secret 159
7.1.2 如何使用Secret 159
7.2 GitOps與Secret 162
7.2.1 不加密 162
7.2.2 分布式Git倉(cāng)庫(kù) 162
7.2.3 沒有細(xì)粒度的(文件級(jí))
訪問控制 162
7.2.4 不安全的存儲(chǔ) 163
7.2.5 完整的提交歷史 163
7.3 Secret管理策略 163
7.3.1 在Git中存儲(chǔ)Secret 163
7.3.2 燒制Secret到容器鏡像 163
7.3.3 帶外管理 165
7.3.4 外部機(jī)密管理系統(tǒng) 165
7.3.5 在Git中加密Secret 166
7.3.6 策略的對(duì)比 167
7.4 工具 168
7.4.1 HashiCorp Vault 168
7.4.2 Vault Agent Sidecar Injector 171
7.4.3 Sealed Secrets 175
7.4.4 Kustomize Secret generator
插件 179
7.5 總結(jié) 182
第8章 可觀測(cè)性 183
8.1 什么是可觀測(cè)性 184
8.1.1 事件日志 184
8.1.2 度量指標(biāo) 188
8.1.3 追蹤 190
8.1.4 可視化 195
8.1.5 GitOps中可觀測(cè)性的
重要性 197
8.2 應(yīng)用程序健康狀況 197
8.2.1 資源狀況 198
8.2.2 就緒探針和存活探針 202
8.2.3 應(yīng)用程序監(jiān)控和告警 203
8.3 GitOps的可觀測(cè)性 204
8.3.1 GitOps度量指標(biāo) 204
8.3.2 應(yīng)用程序同步狀態(tài) 205
8.3.3 配置漂移 209
8.3.4 GitOps變更日志 210
8.4 總結(jié) 213
第三部分 工具
第9章 Argo CD 216
9.1 Argo CD是什么 216
9.1.1 主要使用場(chǎng)景 217
9.1.2 核心概念 217
9.1.3 同步狀態(tài)和健康狀態(tài) 218
9.1.4 架構(gòu) 220
9.2 部署應(yīng)用 223
9.2.1 部署第一個(gè)應(yīng)用程序 223
9.2.2 使用用戶界面檢查應(yīng)用程序 225
9.3 深入了解Argo CD的功能 226
9.3.1 GitOps驅(qū)動(dòng)的部署 227
9.3.2 資源鉤子 227
9.3.3 部署后驗(yàn)證 230
9.4 企業(yè)特性 230
9.4.1 單點(diǎn)登錄 230
9.4.2 訪問控制 233
9.4.3 聲明式管理 235
9.5 總結(jié) 237
第10章 Jenkins X 238
10.1 Jenkins X是什么 238
10.2 探索Prow、Jenkins X流水線Operator和Tekton 240
10.3 將項(xiàng)目導(dǎo)入Jenkins X 244
10.3.1 導(dǎo)入項(xiàng)目 244
10.3.2 將發(fā)布晉級(jí)到生產(chǎn)環(huán)境 250
10.4 總結(jié) 252
第11章 Flux 253
11.1 Flux是什么 253
11.1.1 Flux能做些什么 254
11.1.2 Docker鏡像倉(cāng)庫(kù)掃描 254
11.1.3 架構(gòu) 256
11.2 簡(jiǎn)單的應(yīng)用部署 257
11.2.1 部署第一個(gè)應(yīng)用程序 257
11.2.2 觀測(cè)應(yīng)用狀態(tài) 258
11.2.3 升級(jí)部署鏡像 259
11.2.4 使用Kustomize生成
清單 260
11.2.5 使用GPG確保部署安全 262
11.3 Flux多租戶管理 263
11.4 總結(jié) 264
附錄A 搭建Kubernetes測(cè)試
集群 265
附錄B 設(shè)置GitOps工具 268
附錄C 配置GPG密鑰 278