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

王煒,王振威

  • 出版商: 電子工業
  • 出版日期: 2021-09-01
  • 定價: $648
  • 售價: 8.5$551
  • 語言: 簡體中文
  • 頁數: 428
  • 裝訂: 平裝
  • ISBN: 7121419661
  • ISBN-13: 9787121419669
  • 立即出貨

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

商品描述

本書聚焦於雲原生和多雲環境的持續部署方案,共分13 章,內容涉及聲明式持續部署概述、Spinnaker基礎與實戰、金絲雀發布與灰度發布、部署安全、混沌工程及生產化建議等,結構清晰,循序漸進,深入淺出。在持續部署最佳實踐方面,本書重點介紹瞭如何實施灰度發布、自動金絲雀分析和混沌工程,這些高級部署功能是Netflix 公司實現快速而穩定迭代的核心技術。關於如何落地Spinnaker,本書站在人和組織架構的視角,為遷移團隊提供了指導性的意見,解決了新技術落地難的問題。

作者簡介

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

目錄大綱

目錄
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 重命名流水線 .................................................................................................................. 93
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 .................................................................................................................. 36
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 遷移原則 ................................................................................................................................ 39
13.2.1 #小化變更工作流 ..................................................................................................... 396
13.2.2 利用已有設施 .............................................................................................................. 397
13.2.3 組織架構不變性 .......................................................................................................... 397
13.3 本章小結 ................................................................................................................................ 399