使用GitOps實現(xiàn)Kubernetes的持續(xù)部署:模式、流程及工具
定 價:119 元
叢書名:云計算與虛擬化技術(shù)叢書
- 作者:[美]比利·袁(Billy Yuen),[美]亞歷山大·馬秋申采夫(Alexander Matyushentsev),[美]托德·?纤固(Todd Ekenstam),[美]杰西·孫(Jesse Suen) 著
- 出版時間:2023/1/1
- ISBN:9787111717157
- 出 版 社:機械工業(yè)出版社
- 中圖法分類:TP393.027
- 頁碼:278
- 紙張:
- 版次:
- 開本:16
本書提供了通過GitOps使用Kubernetes的實用教程,內(nèi)容涵蓋GitOps的實踐、技術(shù)和工具,它們可以簡化Kubernetes來更快地交付企業(yè)級軟件,而不影響安全性。通過閱讀本書,你將了解GitOps在靈活的配置管理、監(jiān)控、健壯性、多環(huán)境支持和安全性等方面的好處,并掌握以獨特的GitOps方式進行管理的技巧。學完本書,你將能夠?qū)崿F(xiàn)和管理一個可伸縮的持續(xù)交付管道,這使得跟蹤更改、回滾錯誤以及清晰地驗證和審計容器部署變得容易。
推薦序
前言
致謝
關(guān)于作者
第一部分 背景
第1章 為什么需要GitOps 2
1.1 GitOps的演進 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 基礎設施即代碼 7
1.2.2 自服務 8
1.2.3 代碼審查 9
1.2.4 Git拉取請求 9
1.3 GitOps帶給運維的好處 10
1.3.1 聲明式 10
1.3.2 可觀測性 12
1.3.3 可審計性和合規(guī)性 13
1.3.4 災難恢復 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 部署應用到Kubernetes 21
2.2 聲明式對象管理與命令式
對象管理 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)境管理簡介 48
3.1.1 環(huán)境的組成 49
3.1.2 命名空間管理 51
3.1.3 網(wǎng)絡隔離 55
3.1.4 非生產(chǎn)集群和生產(chǎn)集群 58
3.2 Git策略 59
3.2.1 單分支(多目錄) 60
3.2.2 多分支 60
3.2.3 多代碼庫與單一代碼庫 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)境與臨時環(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 推動晉級工作 86
4.2.1 代碼、清單和應用配置 86
4.2.2 代碼和鏡像晉級 86
4.2.3 環(huán)境晉級 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基礎知識 96
5.1.1 為什么ReplicaSet不適合
GitOps 97
5.1.2 Deployment如何與ReplicaSet
一起工作 100
5.1.3 流量路由 107
5.1.4 在minikube中配置其他
策略 108
5.2 藍綠部署 109
5.2.1 使用Deployment實現(xiàn)藍綠
部署 109
5.2.2 使用Argo Rollouts實現(xiàn)藍綠
部署 115
5.3 金絲雀部署 119
5.3.1 使用Deployment實現(xiàn)
金絲雀部署 120
5.3.2 使用Argo Rollouts實現(xiàn)
金絲雀部署 124
5.4 漸進式交付 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倉庫訪問 139
6.2.2 Kubernetes RBAC 146
6.2.3 鏡像倉庫訪問 151
6.3 模式 153
6.3.1 完全訪問 153
6.3.2 部署倉庫訪問 153
6.3.3 僅限代碼訪問 155
6.4 安全考量 155
6.4.1 防止從不受信任的鏡像倉庫
拉取鏡像 155
6.4.2 Git倉庫中的集群級資源 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倉庫 162
7.2.3 沒有細粒度的(文件級)
訪問控制 162
7.2.4 不安全的存儲 163
7.2.5 完整的提交歷史 163
7.3 Secret管理策略 163
7.3.1 在Git中存儲Secret 163
7.3.2 燒制Secret到容器鏡像 163
7.3.3 帶外管理 165
7.3.4 外部機密管理系統(tǒng) 165
7.3.5 在Git中加密Secret 166
7.3.6 策略的對比 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章 可觀測性 183
8.1 什么是可觀測性 184
8.1.1 事件日志 184
8.1.2 度量指標 188
8.1.3 追蹤 190
8.1.4 可視化 195
8.1.5 GitOps中可觀測性的
重要性 197
8.2 應用程序健康狀況 197
8.2.1 資源狀況 198
8.2.2 就緒探針和存活探針 202
8.2.3 應用程序監(jiān)控和告警 203
8.3 GitOps的可觀測性 204
8.3.1 GitOps度量指標 204
8.3.2 應用程序同步狀態(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 主要使用場景 217
9.1.2 核心概念 217
9.1.3 同步狀態(tài)和健康狀態(tài) 218
9.1.4 架構(gòu) 220
9.2 部署應用 223
9.2.1 部署第一個應用程序 223
9.2.2 使用用戶界面檢查應用程序 225
9.3 深入了解Argo CD的功能 226
9.3.1 GitOps驅(qū)動的部署 227
9.3.2 資源鉤子 227
9.3.3 部署后驗證 230
9.4 企業(yè)特性 230
9.4.1 單點登錄 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 將項目導入Jenkins X 244
10.3.1 導入項目 244
10.3.2 將發(fā)布晉級到生產(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鏡像倉庫掃描 254
11.1.3 架構(gòu) 256
11.2 簡單的應用部署 257
11.2.1 部署第一個應用程序 257
11.2.2 觀測應用狀態(tài) 258
11.2.3 升級部署鏡像 259
11.2.4 使用Kustomize生成
清單 260
11.2.5 使用GPG確保部署安全 262
11.3 Flux多租戶管理 263
11.4 總結(jié) 264
附錄A 搭建Kubernetes測試
集群 265
附錄B 設置GitOps工具 268
附錄C 配置GPG密鑰 278