Kubernetes API Server源碼分析與擴展開發(微課視頻版)

張海龍

  • 出版商: 清華大學
  • 出版日期: 2024-08-01
  • 售價: $534
  • 貴賓價: 9.5$507
  • 語言: 簡體中文
  • ISBN: 7302670153
  • ISBN-13: 9787302670155
  • 相關分類: Kubernetes
  • 立即出貨 (庫存 < 4)

  • Kubernetes API Server源碼分析與擴展開發(微課視頻版)-preview-1
  • Kubernetes API Server源碼分析與擴展開發(微課視頻版)-preview-2
  • Kubernetes API Server源碼分析與擴展開發(微課視頻版)-preview-3
Kubernetes API Server源碼分析與擴展開發(微課視頻版)-preview-1

相關主題

商品描述

"本書第一主題為解析 Kubernetes API Server 源代碼;第二主題是結合源碼知識進行擴展開發。全書分為3篇12章。 第一篇為基礎篇(第1章和第2章)。第1章簡介Kubernetes及其組件,並迅速切入API Server,統一全書使用的概念名詞,介紹其主要設計模式。第2章介紹Kubernetes項目組織和社區治理。組織結構對系統的設計有著直接影響,這部分幫助讀者理解代碼背後的人和組。在第2章讀者也會看到如何參與Kubernetes項目,特別是貢獻代碼的過程。 第二篇為源碼篇(第3~8章)是本書的核心篇章。第3章宏觀展示API Server源代碼的組織,總體架構設計等,其中關於啟動流程的源碼部分與本篇後續章節銜接緊密;第4章聚焦整個系統核心對象——Kubernetes API,本章將API分為幾大類並講解為API進行的代碼生成;第5章到第8章分別解析API Server 的各個子 Server 源碼,它們是GenericServer、主Server、擴展Server、聚合器與聚合Server。 第三篇為實戰篇(第9~12章)講解三種主流API Server擴展方式。作為輔助理解源碼的手段之一,第9章不借助腳手架開發一個聚合Server;第10章為後兩章基礎,聚焦API Server Builder和Kubebuilder兩款官方開發腳手架;第11章用 API Server Builder重寫第9章的聚合Server;第12章用Kubebuilder開發一個操作器(Operator)。 本書適合Kubernetes系統運維人員、擴展開發人員、使用Go的開發者及希望提升設計水平的軟件從業人員閱讀,需具備Go語言和Kubernetes基礎知識。 "

目錄大綱

目錄

第一篇基礎篇

第1章Kubernetes與API Server概要(30min)3

1.1Kubernetes組件3

1.1.1控制面上的組件3

1.1.2節點上的組件6

1.2Kubernetes API 基本概念8

1.2.1API和API對象8

1.2.2API種類9

1.2.3API組和版本10

1.2.4API資源10

1.3API Server11

1.3.1一個Web Server11

1.3.2服務於API13

1.3.3請求過濾鏈與準入控制16

1.4聲明式API和控制器模式17

1.4.1聲明式API17

1.4.2控制器和控制器模式20

1.5本章小結26

第2章Kubernetes項目(17min)27

2.1Kubernetes社區治理27

2.1.1特別興趣組 29

2.1.2SIG內的子項目組30

2.1.3工作組30

2.2開發人員如何貢獻代碼31

2.2.1開發流程31

2.2.2代碼提交與合並流程32

2.3源代碼下載與編譯33

2.3.1下載33

2.3.2本地編譯與運行34

2.4本章小結35

第二篇源碼篇

第3章API Server(46min)39

3.1Kubernetes工程結構39

3.1.1頂層目錄39

3.1.2staging目錄40

3.1.3pkg目錄43

3.2Cobra44

3.2.1命令的格式規範45

3.2.2用Cobra寫命令行應用46

3.3整體結構49

3.3.1子Server49

3.3.2再談聚合器51

3.4API Server的創建與啟動51

3.4.1創建Cobra命令52

3.4.2命令的核心邏輯54

3.4.3CreateServerChain()函數56

3.4.4總結與展望58

3.5本章小結59

第4章Kubernetes API(44min)60

4.1Kubernetes API源代碼61

4.1.1內部版本和外部版本62

4.1.2API的屬性64

4.1.3API的方法與函數68

4.1.4API定義與實現的約定73

4.2內置API75

4.3核心API77

4.4代碼生成80

4.4.1代碼生成工作原理80

4.4.2代碼生成舉例91

4.4.3觸發代碼生成93

4.5本章小結95

第5章Generic Server(83min)96

5.1Go語言實現Web Server96

5.2gorestful 99

5.2.1gorestful簡介99

5.2.2gorestful中的核心概念100

5.2.3使用gorestful102

5.3OpenAPI102

5.3.1什麽是OpenAPI102

5.3.2Kubernetes使用OpenAPI規格說明103

5.3.3生成API OpenAPI規格說明105

5.3.4Generic Server與OpenAPI108

5.4Scheme機制110

5.4.1註冊表的內容111

5.4.2註冊表的構建112

5.5Generic Server的構建119

5.5.1準備Server運行配置119

5.5.2創建Server實例120

5.5.3構建請求處理鏈121

5.5.4添加啟動和關閉鉤子函數128

5.6Generic Server的啟動129

5.6.1啟動準備129

5.6.2啟動130

5.7API 的註入與請求響應138

5.7.1註入處理流程139

5.7.2WebService及其Route生成過程142

5.7.3響應對Kubernetes API的HTTP請求146

5.8準入控制機制153

5.8.1什麽是準入控制153

5.8.2準入控制器155

5.8.3動態準入控制159

5.9一個HTTP請求的處理過程163

5.10本章小結165

第6章主Server(54min)166

6.1主Server的實現166

6.1.1填充註冊表167

6.1.2準備Server運行配置168

6.1.3創建主Server171

6.2主Server的幾個控制器174

6.2.1ReplicaSet 控制器175

6.2.2Deployment 控制器177

6.2.3StatefulSet 控制器180

6.2.4Service Account 控制器182

6.3主Server的準入控制186

6.3.1運行選項和命令行參數186

6.3.2從運行選項到運行配置188

6.3.3從運行配置到Generic Server190

6.4API Server的登錄驗證機制191

6.4.1API Server登錄驗證基礎192

6.4.2API Server的登錄驗證策略195

6.4.3API Server中構建登錄認證機制199

6.5本章小結204

第7章擴展Server(34min)205

7.1CustomResourceDefinition介紹205

7.1.1CRD的屬性206

7.1.2客制化API屬性的定義與校驗209

7.1.3啟用Status和Scale子資源212

7.1.4版本轉換的Webhook213

7.2擴展Server的實現215

7.2.1獨立模塊215

7.2.2準備Server運行配置216

7.2.3創建擴展Server217

7.2.4啟動擴展Server226

7.3擴展Server中控制器的實現228

7.3.1發現控制器228

7.3.2名稱控制器231

7.3.3非結構化規格控制器232

7.3.4API審批控制器234

7.3.5CRD 清理控制器235

7.4本章小結236

第8章聚合器和聚合Server(32min)237

8.1聚合器與聚合Server介紹237

8.1.1背景與目的237

8.1.2再談API Server結構238

8.2聚合器的實現240

8.2.1APIService簡介241

8.2.2準備Server運行配置 243

8.2.3創建聚合器243

8.2.4啟動聚合器247

8.2.5聚合器代理轉發HTTP請求256

8.3聚合器中控制器的實現258

8.3.1自動註冊控制器與CRD註冊控制器258

8.3.2APIService註冊控制器260

8.3.3APIService狀態監測控制器264

8.4聚合Server266

8.4.1最靈活的擴展方式267

8.4.2聚合Server的結構269

8.4.3委派登錄認證270

8.4.4委派權限認證273

8.5本章小結277

第三篇實戰篇

第9章開發聚合Server(32min) 281

9.1目標281

9.2聚合Server的開發282

9.2.1創建工程283

9.2.2設計API284

9.2.3生成代碼287

9.2.4填充註冊表291

9.2.5資源存取293

9.2.6編寫準入控制299

9.2.7添加Web Server301

9.2.8部署與測試307

9.3相關控制器的開發317

9.3.1設計318

9.3.2實現318

9.3.3如何啟動322

9.3.4測試324

9.4本章小結325

第10章API Server Builder與Kubebuilder(14min)326

10.1controllerruntime 326

10.1.1核心概念326

10.1.2工作機制328

10.2API Server Builder329

10.2.1概覽330

10.2.2Builder用法331

10.3Kubebuilder334

10.3.1概覽334

10.3.2功能335

10.3.3開發步驟335

10.4本章小結339

第11章API Server Builder開發聚合Server(17min)340

11.1目標340

11.2聚合Server的開發341

11.2.1工程初始化341

11.2.2創建v1alpha1版API並實現342

11.2.3添加v1版本API並實現346

11.3相關控制器的開發349

11.4部署與測試350

11.4.1準備工作350

11.4.2製作鏡像351

11.4.3向集群提交353

11.4.4測試353

11.5本章小結356

第12章Kubebuilder開發Operator(15min)357

12.1目標357

12.2定義CRD357

12.2.1項目初始化357

12.2.2添加客制化API358

12.3相關控制器的開發360

12.3.1實現控制器360

12.3.2本地測試控制器361

12.4準入控制Webhook的開發362

12.4.1引入準入控制Webhook362

12.4.2實現控制邏輯363

12.5部署至集群並測試364

12.5.1製作鏡像364

12.5.2部署certmanager365

12.5.3部署並測試366

12.6本章小結367