本書聚焦于云原生和多云環(huán)境的持續(xù)部署方案,共分13 章,內容涉及聲明式持續(xù)部署概述、Spinnaker基礎與實戰(zhàn)、金絲雀發(fā)布與灰度發(fā)布、部署安全、混沌工程及生產化建議等,結構清晰,循序漸進,深入淺出。在持續(xù)部署實踐方面,本書重點介紹了如何實施灰度發(fā)布、自動金絲雀分析和混沌工程,這些高級部署功能是Netflix 公司實現(xiàn)快速而穩(wěn)定迭代的核心技術。關于如何落地Spinnaker,本書站在人和組織架構的視角,為遷移團隊提供了指導性的意見,解決了新技術落地難的問題。
1.本書開創(chuàng)了云原生多元環(huán)境持續(xù)部署工具Spinnaker的先例,講解深入。
2.本書案例基于大廠一線工程師的實際工作,具有非常好的指導性和實踐性。
3.本書提供豐富的圖片資源和實踐源碼,幫助讀者快速上手。
前言
在環(huán)境支持方面,Spinnaker支持云原生多云環(huán)境的持續(xù)部署,例如AWS、Azure、Google 等云提供商,以及國內三大云提供商騰訊云(TKE 和 EKS)、阿里云(ACK 和 ASK)、華為云(CCE)等標準公有云均提供支持,此外虛擬機部署場景也正在被完善。
Spinnaker 支持集成觸發(fā)器來監(jiān)聽事件,從而實現(xiàn)自動觸發(fā)和自動部署。此外,其內置持續(xù)部署的實踐(例如藍綠部署和金絲雀部署),并提供了開箱即用的方法。
本書通過對Spinnaker抽絲剝繭,帶領讀者學習如何構建科學的持續(xù)部署流水線,并通過實戰(zhàn)和案例進一步介紹了在微服務及 Service Mesh 環(huán)境下持續(xù)部署的實踐。本書還拋開技術層面,站在人和團隊的角度,分享了作者關于如何將應用遷移至 Spinnaker的實際落地經驗。
本書內容
本書共分13章,其中每章的內容簡介如下。
第1章 聲明式持續(xù)部署概述
本章將介紹持續(xù)交付與持續(xù)部署的概念,明確命令式與聲明式的差異,聚焦于聲明式持續(xù)部署,講解常見的聲明式系統(tǒng)、聲明式腳本流水線的概念及使用意義。
第2章 管理云基礎設施
本章將介紹在云原生和多云環(huán)境的背景下如何管理云基礎設施,主要內容包括將應用遷移至云原生環(huán)境及混合云環(huán)境所面臨的挑戰(zhàn)、對云基礎設施的組織、流量組織形式,以及持續(xù)部署工具的對比。
第3章 Spinnaker簡介
本章將初步介紹Spinnaker相關內容,主要內容包括Spinnaker的基本概念、應用管理、應用程序部署、云提供商簡介,以及Spinnaker架構。
第4章 安裝Spinnaker
本章將介紹在不同的系統(tǒng)環(huán)境下如何安裝Spinnaker。首先介紹安裝Spinnaker的環(huán)境要求,然后介紹正式安裝部署Spinnaker涉及的流程,包括選擇云提供商、運行環(huán)境、存儲方式等。
第5章 Spinnaker基本工作流程:流水線
本章將介紹Spinnaker的核心流水線的組成和基本操作,主要內容包括流水線的管理、部署制品、啟動參數(shù)、不同階段、觸發(fā)器、通知,以及流水線表達式、版本控制和審計等,還將輔以動態(tài)流水線具體示例進行說明。
第6章 深入核心概念
本章將詳細介紹 Spinnaker流水線的配置及不同的階段類型,主要內容包括虛擬機階段、Kubernetes階段、集成外部系統(tǒng)階段、流程控制階段等,還會介紹部署制品類型、配置觸發(fā)器、流水線模板、消息通知等內容。本章涉及的內容非常多,讀者可以有針對性地選擇閱讀。
第7章 自動金絲雀分析
本章將介紹 Spinnaker的高級部署功能自動金絲雀分析,主要內容包括自動金絲雀發(fā)布概述、安裝組件、配置金絲雀、獲取金絲雀報告等,還會通過一個實踐案例進行輔助講解。
第8章 混沌工程
本章將介紹如何在 Spinnaker中實施自動化混沌工程,主要內容包括為什么要引入混沌工程概念,以及混沌工程的理論基礎、五大原則、實踐方法等。
第9章 使部署更加安全
本章將介紹如何使用Spinnaker內置的功能讓生產部署更加安全,主要內容包括集群部署、流水線執(zhí)行、自動驗證階段相關知識點、審計和可追溯。
第10章 實踐
本章將介紹在 Kubernetes環(huán)境下實現(xiàn)南北流量、東西流量自動灰度部署的流程,這兩個實例的流程基本是一致的。
第11章 生產建議
本章將介紹在生產環(huán)境下使用Spinnaker時需要注意的事項,比如與SSL、認證、授權、Redis配置優(yōu)化、橫向擴容、MySQL、監(jiān)控相關的內容。
第12章 擴展 Spinnaker
本章將介紹如何對 Spinnaker進行二次開發(fā),主要內容包括開發(fā)環(huán)境的配置,以及在實際開發(fā)過程中編寫新階段的注意事項。
第13章 遷移到 Spinnaker
本章將從人和組織架構的角度介紹如何將應用遷移到Spinnaker,以及遷移過程中需要遵循的原則。經過本章的學習,讀者可以嘗試將Spinnaker實踐應用到實際項目中。
目標讀者
本書的目標讀者有以下幾類。
- 云原生、Docker和Kubernetes研發(fā)工程師。
- SRE工程師。
- 微服務架構下的開發(fā)人員和架構師。
- 行業(yè)解決方案架構師。
- 研發(fā)效能和研發(fā)質量管理人員。
王煒,騰訊云CODING高級架構師,CNCF大使,KubeCon評審委員會成員,開源云原生開發(fā)境Nocalhost研發(fā)負責人,騰訊云大學講師。多年來始終從事云原生架構、Docker、Kubernetes、DevOps及微服務領域的研究與實踐,擅長開源項目治理和運營。
王振威,騰訊云CODING研發(fā)總監(jiān),開源云原生開發(fā)環(huán)境Nocalhost產品負責人。深耕開發(fā)者工具領域,實現(xiàn)了CODING代碼托管、CI/CD等產品從0到1的突破,在Linux、Golang、Java、Kubernetes、Docker等技術領域有所見長。
目 錄
01 聲明式持續(xù)部署概述 1
1.1 持續(xù)交付與持續(xù)部署 2
1.2 命令式與聲明式 6
1.3 常見的聲明式系統(tǒng) 9
1.4 聲明式與命令式結合:聲明式腳本流水線 13
1.5 聲明式腳本流水線的意義 16
1.6 本章小結 18
02 管理云基礎設施 19
2.1 遷移至云原生與混合云的挑戰(zhàn) 20
2.2 組織云基礎設施 23
2.3 流量組織形式 27
2.4 持續(xù)部署工具對比 27
2.5 本章小結 36
03 Spinnaker 簡介 37
3.1 概念 38
3.2 應用管理 38
3.3 應用程序部署 42
3.4 云提供商 45
3.5 Spinnaker 架構 46
3.6 本章小結 57
04 安裝Spinnaker 59
4.1 環(huán)境要求 59
4.2 安裝部署 67
4.3 本章小結 82
05 Spinnaker基本工作流程:流水線 84
5.1 管理流水線 85
5.2 部署制品 95
5.3 啟動參數(shù) 108
5.4 階段 109
5.5 觸發(fā)器 114
5.6 通知 116
5.7 流水線表達式 118
5.8 版本控制和審計 125
5.9 動態(tài)流水線示例 126
5.10 本章小結 132
06 深入核心概念 133
6.1 虛擬機階段 133
6.2 Kubernetes階段 145
6.3 集成外部系統(tǒng)階段 156
6.4 流程控制階段 170
6.5 其他階段 175
6.6 部署制品類型 176
6.7 配置觸發(fā)器 192
6.8 使用流水線模板 205
6.9 消息通知 213
6.10 本章小結 226
07 自動金絲雀分析 227
7.1 Spinnaker 自動金絲雀發(fā)布 227
7.2 安裝組件 229
7.3 配置金絲雀 233
7.4 獲取金絲雀報告 248
7.5 工作原理 250
7.6 實踐 251
7.7 本章小結 253
08 混沌工程 254
8.1 理論基礎 254
8.2 為什么需要混沌工程 256
8.3 五大原則 257
8.4 如何實現(xiàn)混沌工程 259
8.5 在 Spinnaker 中實施混沌工程 263
8.6 本章小結 268
09 使部署更加安全 269
9.1 集群部署 269
9.2 流水線執(zhí)行 285
9.3 自動驗證階段 295
9.4 審計和可追溯 299
9.5 本章小結 302
10 實踐 303
10.1 南北流量自動灰度發(fā)布:Kubernetes Nginx Ingress 304
10.2 東西流量自動灰度發(fā)布:Kubernetes Service Mesh 319
10.3 本章小結 334
11 生產建議 336
11.1 SSL 336
11.2 認證 341
11.3 授權 351
11.4 Redis配置優(yōu)化 359
11.5 橫向擴容 360
11.6 使用MySQL 作為存儲系統(tǒng) 363
11.7 監(jiān)控 372
11.8 本章小結 382
12 擴展 Spinnaker 383
12.1 配置開發(fā)環(huán)境 383
12.2 編寫新階段 386
12.3 本章小結 394
13 遷移到Spinnaker 395
13.1 如何說服團隊 395
13.2 遷移原則 396
13.3 本章小結 399