《使用GitOps實現Kubernetes的持續部署:模式、流程及工具》是2023年機械工業出版社出版的圖書。
基本介紹
- 中文名:使用GitOps實現Kubernetes的持續部署:模式、流程及工具
- 出版時間:2023年2月1日
- 出版社:機械工業出版社
- ISBN:9787111717157
內容簡介,圖書目錄,
內容簡介
本書提供了通過GitOps使用Kubernetes的實用教程,內容涵蓋GitOps的實踐、技術和工具,它們可以簡化Kubernetes來更快地交付企業級軟體,而不影響安全性。通過閱讀本書,你將了解GitOps在靈活的配置管理、監控、健壯性、多環境支持和安全性等方面的好處,並掌握以獨特的GitOps方式進行管理的技巧。學完本書,你將能夠實現和管理一個可伸縮的持續交付管道,這使得跟蹤更改、回滾錯誤以及清晰地驗證和審計容器部署變得容易。
圖書目錄
推薦序
前言
致謝
關於作者
第一部分 背景
第1章 為什麼需要GitOps 2
1.1 GitOps的演進 2
1.1.1 傳統Ops 3
1.1.2 DevOps 4
1.1.3 GitOps 5
1.2 GitOps帶給開發者的好處 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 可審計性和合規性 13
1.3.4 災難恢復 15
1.4 總結 15
第2章 Kubernetes與GitOps 17
2.1 Kubernetes介紹 17
2.1.1 Kubernetes是什麼 18
2.1.2 其他容器編排系統 19
2.1.3 Kubernetes架構 19
2.1.4 部署套用到Kubernetes 21
2.2 聲明式對象管理與命令式
對象管理 26
2.3 控制器架構 32
2.3.1 控制器委派 32
2.3.2 控制器模式 32
2.3.3 NGINX Operator 34
2.4 Kubernetes和GitOps的關係 38
2.5 CI/CD入門 38
2.5.1 基本的GitOps Operator 38
2.5.2 持續集成流水線 41
2.6 總結 44
第二部分 模式和流程
第3章 環境管理 48
3.1 環境管理簡介 48
3.1.1 環境的組成 49
3.1.2 命名空間管理 51
3.1.3 網路隔離 55
3.1.4 非生產集群和生產集群 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 小結 72
3.4 持久環境與臨時環境 73
3.5 總結 73
第4章 流水線 75
4.1 CI/CD流水線中的階段 75
4.1.1 GitOps持續集成 76
4.1.2 GitOps持續交付 82
4.2 推動晉級工作 86
4.2.1 代碼、清單和套用配置 86
4.2.2 代碼和鏡像晉級 86
4.2.3 環境晉級 88
4.2.4 匯總 89
4.3 其他流水線 90
4.3.1 回滾 91
4.3.2 合規流水線 93
4.4 總結 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實現藍綠
部署 109
5.2.2 使用Argo Rollouts實現藍綠
部署 115
5.3 金絲雀部署 119
5.3.1 使用Deployment實現
金絲雀部署 120
5.3.2 使用Argo Rollouts實現
金絲雀部署 124
5.4 漸進式交付 125
5.5 總結 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 總結 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 外部機密管理系統 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 總結 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 應用程式監控和告警 203
8.3 GitOps的可觀測性 204
8.3.1 GitOps度量指標 204
8.3.2 應用程式同步狀態 205
8.3.3 配置漂移 209
8.3.4 GitOps變更日誌 210
8.4 總結 213
第三部分 工具
第9章 Argo CD 216
9.1 Argo CD是什麼 216
9.1.1 主要使用場景 217
9.1.2 核心概念 217
9.1.3 同步狀態和健康狀態 218
9.1.4 架構 220
9.2 部署套用 223
9.2.1 部署第一個應用程式 223
9.2.2 使用用戶界面檢查應用程式 225
9.3 深入了解Argo CD的功能 226
9.3.1 GitOps驅動的部署 227
9.3.2 資源鉤子 227
9.3.3 部署後驗證 230
9.4 企業特性 230
9.4.1 單點登錄 230
9.4.2 訪問控制 233
9.4.3 聲明式管理 235
9.5 總結 237
第10章 Jenkins X 238
10.1 Jenkins X是什麼 238
10.2 探索Prow、Jenkins X流水線