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