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