使用 GitOps 實現 Kubernetes 的持續部署:模式、流程及工具 GitOps and Kubernetes: Continuous Deployment with Argo CD, Jenkins X, and Flux

Yuen, Billy, Matyushentsev, Alexander, Ekenstam, Todd

買這商品的人也買了...

商品描述

本書提供了通過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流水線