Spinnaker實戰:雲原生多雲環境的持續部署方案

Spinnaker實戰:雲原生多雲環境的持續部署方案

《Spinnaker實戰:雲原生多雲環境的持續部署方案》是電子工業出版社出版圖書,作者是王煒,王振威

開創了雲原生多元環境持續部署工具Spinnaker的先例,講解深入。

基本介紹

  • 中文名:Spinnaker實戰:雲原生多雲環境的持續部署方案
  • 作者:王煒、王振威
  • 出版社:電子工業出版社
  • 出版時間:2021年9月
  • 頁數:428 頁
  • 定價:108 元
  • 開本:16 開
  • ISBN:9787121419669
內容簡介,圖書目錄,作者簡介,

內容簡介

重點介紹了如何實施灰度發布、自動金絲雀分析和混沌工程,這些高級部署功能是Netflix 公司實現快速而穩定疊代的技術。

圖書目錄

01 聲明式持續部署概述 1
1.1 持續交付與持續部署 2
1.1.1 為什麼要持續交付 2
1.1.2 持續交付的好處 3
1.1.3 保持隨時可交付 4
1.1.4 解決問題:提高發布頻率 4
1.1.5 自動化持續部署 5
1.2 命令式與聲明式 6
1.2.1 簡單易用的命令式 7
1.2.2 抽象和歸納的聲明式 8
1.3 常見的聲明式系統 9
1.3.1 Kubernetes 9
1.3.2 Terraform 11
1.3.3 Ansible 12
1.4 聲明式與命令式結合:聲明式腳本流水線 13
1.4.1 核心思想 13
1.4.2 代碼即流水線 14
1.4.3 步驟執行 15
1.5 聲明式腳本流水線的意義 16
1.5.1 簡化行為描述 16
1.5.2 降低學習曲線 17
1.5.3 落地持續部署 17
1.5.4 實現自動化 17
1.6 本章小結 18
02 管理雲基礎設施 19
2.1 遷移至雲原生與混合雲的挑戰 20
2.1.1 憑據管理 20
2.1.2 多雲架構 20
2.1.3 跨地域部署 21
2.1.4 自動伸縮 21
2.1.5 不可變的基礎設施和部署製品 22
2.1.6 服務發現 22
2.2 組織雲基礎設施 23
2.2.1 以套用為中心 23
2.2.2 抽象對雲的操作 24
2.2.3 雲模型 26
2.2.4 多雲配置 26
2.3 流量組織形式 27
2.3.1 啟用/不啟用 27
2.3.2 啟用/啟用 27
2.4 持續部署工具對比 27
2.4.1 Tekton 28
2.4.2 Argo CD 31
2.5 本章小結 36
03 Spinnaker 簡介 37
3.1 概念 38
3.2 套用管理 38
3.2.1 套用 39
3.2.2 伺服器組 39
3.2.3 集群 39
3.2.4 負載均衡器 41
3.2.5 防火牆 41
3.3 應用程式部署 42
3.3.1 流水線 42
3.3.2 階段 43
3.3.3 任務 43
3.3.4 部署策略 43
3.4 雲提供商 45
3.5 Spinnaker 架構 46
3.5.1 Deck 48
3.5.2 Gate 50
3.5.3 Clouddriver 50
3.5.4 Orca 51
3.5.5 Echo 52
3.5.6 Front50 53
3.5.7 Igor 54
3.5.8 Fiat 54
3.5.9 Rosco 55
3.5.10 Kayenta 56
3.6 本章小結 57
04 安裝Spinnaker 59
4.1 環境要求 59
4.1.1 Kubernetes 59
4.1.2 Kubectl 62
4.1.3 Jenkins 63
4.1.4 Docker Registery 66
4.2 安裝部署 67
4.2.1 Halyard 命令行工具 67
4.2.2 選擇雲提供商 70
4.2.3 選擇運行環境 71
4.2.4 選擇存儲方式 71
4.2.5 部署 73
4.2.6 升級 78
4.2.7 備份配置 79
4.2.8 常見問題 81
4.3 本章小結 82
05 Spinnaker基本工作流程:流水線 84
5.1 管理流水線 85
5.1.1 創建流水線 85
5.1.2 配置流水線 87
5.1.3 添加自動觸發器 87
5.1.4 添加階段 88
5.1.5 手動運行流水線 89
5.1.6 禁用流水線 91
5.1.7 刪除流水線 91
5.1.8 鎖定流水線 92
5.1.9 重命名流水線 92
5.1.10 通過JSON編輯流水線 93
5.1.11 流水線歷史版本 94
5.2 部署製品 95
5.2.1 在流水線中使用製品 98
5.2.2 自定義觸發器製品 103
5.2.3 Kubernetes Manifest 製品 104
5.2.4 製品類型 108
5.3 啟動參數 108
5.4 階段 109
5.4.1 基礎設施階段 110
5.4.2 集成外部系統階段 112
5.4.3 測試階段 113
5.4.4 流程控制階段 113
5.4.5 自定義階段 114
5.5 觸發器 114
5.5.1 時間型觸發器 115
5.5.2 事件型觸發器 115
5.6 通知 116
5.7 流水線表達式 118
5.7.1 編寫表達式 119
5.7.2 測試表達式 124
5.8 版本控制和審計 125
5.9 動態流水線示例 126
5.10 本章小結 132
06 深入核心概念 133
6.1 虛擬機階段 133
6.1.1 Bake 133
6.1.2 Tag Image 135
6.1.3 Find Image From Cluster 135
6.1.4 Find Image From Tags 136
6.1.5 Deploy 137
6.1.6 Disable Cluster 139
6.1.7 Disable Server Group 140
6.1.8 Enable Server Group 141
6.1.9 Resize Server Group 142
6.1.10 Clone Server Group 143
6.1.11 Rollback Cluster 144
6.1.12 Scale Down Cluster 145
6.2 Kubernetes階段 145
6.2.1 Bake (Manifest) 146
6.2.2 Delete (Manifest) 147
6.2.3 Deploy (Manifest) 148
6.2.4 Find Artifacts From Resource (Manifest) 151
6.2.5 Patch (Manifest) 152
6.2.6 Scale (Manifest) 154
6.2.7 Undo Rollout (Manifest) 155
6.3 集成外部系統階段 156
6.3.1 Jenkins 156
6.3.2 運行 Script 腳本 158
6.3.3 Travis階段 160
6.3.4 Concourse階段 162
6.3.5 Wercker階段 163
6.3.6 Webhook階段 165
6.3.7 自定義 Webhook階段 167
6.4 流程控制階段 170
6.4.1 Wait 171
6.4.2 Manual Judgment 171
6.4.3 Check Preconditions 173
6.4.4 Pipeline 174
6.5 其他階段 175
6.6 部署製品類型 176
6.6.1 Docker 鏡像 176
6.6.2 Base64 178
6.6.3 AWS S3 179
6.6.4 Git Repo 181
6.6.5 GitHub 檔案 182
6.6.6 GitLab 檔案 184
6.6.7 Helm 185
6.6.8 HTTP檔案 188
6.6.9 Kubernetes 對象 189
6.6.10 Maven 190
6.7 配置觸發器 192
6.7.1 Git 192
6.7.2 Docker Registry 194
6.7.3 Helm Chart 196
6.7.4 Artifactory 197
6.7.5 Webhook 198
6.7.6 Jenkins 201
6.7.7 Concourse 202
6.7.8 Travis 202
6.7.9 CRON 203
6.7.10 Pipeline 204
6.7.11 Pub/Sub 204
6.8 使用流水線模板 205
6.8.1 安裝 Spin CLI 206
6.8.2 創建流水線模板 209
6.8.3 渲染流水線模板 211
6.8.4 使用模板創建流水線 211
6.8.5 繼承模板或覆蓋 213
6.9 訊息通知 213
6.9.1 Email 216
6.9.2 Slack 218
6.9.3 SMS 220
6.9.4 企業微信機器人 221
6.9.5 釘釘機器人 223
6.10 本章小結 226
07 自動金絲雀分析 227
7.1 Spinnaker 自動金絲雀發布 227
7.2 安裝組件 229
7.2.1 安裝 Prometheus 229
7.2.2 集成 Minio 232
7.2.3 集成 Prometheus 233
7.3 配置金絲雀 233
7.3.1 創建一個金絲雀配置 234
7.3.2 創建和使用選擇器模板 239
7.3.3 創建金絲雀階段 240
7.4 獲取金絲雀報告 248
7.5 工作原理 250
7.6 最佳實踐 251
7.7 本章小結 253
08 混沌工程 254
8.1 理論基礎 254
8.1.1 概念定義 254
8.1.2 發展歷程 255
8.2 為什麼需要混沌工程 256
8.2.1 與測試的區別 256
8.2.2 與故障注入的區別 256
8.2.3 核心思想 257
8.3 五大原則 257
8.3.1 建立穩定狀態的假設 257
8.3.2 用多樣的現實世界事件做驗證 258
8.3.3 在生產環境中進行測試 258
8.3.4 快速終止和最小爆炸半徑 259
8.3.5 自動化實驗以持續運行 259
8.4 如何實現混沌工程 259
8.4.1 設計實驗步驟 260
8.4.2 確定成熟度模型 260
8.4.3 確定套用度模型 262
8.4.4 繪製成熟度模型 263
8.5 在 Spinnaker 中實施混沌工程 263
8.5.1 Gremlin 264
8.5.2 Chaos Mesh 265
8.6 本章小結 268
09 使部署更加安全 269
9.1 集群部署 269
9.1.1 部署策略 269
9.1.2 回滾策略 278
9.1.3 時間視窗 283
9.2 流水線執行 285
9.2.1 並發 285
9.2.2 鎖定 286
9.2.3 禁用 287
9.2.4 階段條件判斷 288
9.2.5 人工確認 288
9.3 自動驗證階段 295
9.4 審計和可追溯 299
9.4.1 訊息通知 299
9.4.2 流水線變更歷史 300
9.4.3 事件流記錄 301
9.5 本章小結 302
10 最佳實踐 303
10.1 南北流量自動灰度發布:Kubernetes + Nginx Ingress 304
10.1.1 環境準備 304
10.1.2 部署 Nginx Ingress 305
10.1.3 初始化環境 308
10.1.4 創建流水線 309
10.1.5 運行流水線 311
10.1.6 原理分析 317
10.1.7 生產建議 319
10.2 東西流量自動灰度發布:Kubernetes + Service Mesh 319
10.2.1 環境準備 320
10.2.2 安裝 Istio 321
10.2.3 Bookinfo 套用 322
10.2.4 初始化環境 324
10.2.5 創建流水線 326
10.2.6 運行流水線 328
10.2.7 原理分析 332
10.3 本章小結 334
11 生產建議 336
11.1 SSL 336
11.2 認證 341
11.2.1 SAML 342
11.2.2 OAuth 345
11.2.3 LDAP 349
11.2.4 x509 350
11.3 授權 351
11.3.1 YAML 353
11.3.2 SAML 354
11.3.3 LDAP 354
11.3.4 GitHub 355
11.3.5 Service Account 356
11.3.6 流水線許可權 358
11.4 Redis配置最佳化 359
11.5 橫向擴容 360
11.6 使用MySQL 作為存儲系統 363
11.6.1 Front50 366
11.6.2 Clouddriver 367
11.6.3 Orca 369
11.7 監控 372
11.7.1 Prometheus 373
11.7.2 Grafana 378
11.8 本章小結 382
12 擴展 Spinnaker 383
12.1 配置開發環境 383
12.1.1 Kork 383
12.1.2 組件概述 384
12.1.3 環境配置 385
12.2 編寫新階段 386
12.3 本章小結 394
13 遷移到Spinnaker 395
13.1 如何說服團隊 395
13.2 遷移原則 396
13.2.1 最小化變更工作流 396
13.2.2 利用已有設施 397
13.2.3 組織架構不變性 397
13.3 本章小結 399

作者簡介

王煒,騰訊雲CODING高級架構師,CNCF大使,KubeCon評審委員會成員,開源雲原生開發境Nocalhost研發負責人,騰訊雲大學講師。多年來始終從事雲原生架構、Docker、Kubernetes、DevOps及微服務領域的研究與實踐,擅長開源項目治理和運營。
王振威,騰訊雲CODING研發總監,開源雲原生開發環境Nocalhost產品負責人。深耕開發者工具領域,實現了CODING代碼託管、CI/CD等產品從0到1的突破,在Linux、Golang、Java、Kubernetes、Docker等技術領域有所見長。

相關詞條

熱門詞條

聯絡我們