《Kubernetes Operator開發進階》是2023年機械工業出版社出版的圖書。
基本介紹
- 中文名:Kubernetes Operator開發進階
- 出版時間:2023年1月1日
- 出版社:機械工業出版社
- ISBN:9787111716150
內容簡介,圖書目錄,
內容簡介
本書詳細講解Operator開發過程中所涉及的各個知識點,從簡單的Operator示例套用入手,幫助讀者快速上手Operator的開發流程,接著深入分析client-go、Deployment控制器等的源碼,通過一個進階套用的開發過程詳細介紹Operator開發的各方面知識。通過本書的學習,讀者能夠輕鬆掌握Operator的開發技巧,深入理解Operator的底層原理,進而在日常工作中更好地利用Operator實現各種複雜的套用治理邏輯的開發。
圖書目錄
推薦序1
推薦序2
前言
第一篇 入 門
第1章 了解Kubernetes 2
1.1 初識Kubernetes 2
1.2 Kubernetes集群的部署 3
1.2.1 Docker的安裝 4
1.2.2 Kind工具介紹 6
1.2.3 使用Kind快速搭建Kubernetes環境 6
1.2.4 使用Kind搭建多節點Kubernetes集群環境 7
1.2.5 Kind用法進階 10
1.3 Kubernetes集群的基本操作 12
1.3.1 示例項目介紹 12
1.3.2 基礎操作演示 13
1.3.3 小結 18
1.4 Kubernetes的核心概念 18
1.4.1 節點 18
1.4.2 命名空間 19
1.4.3 容器組 21
1.4.4 副本集 22
1.4.5 部署 23
1.4.6 服務 24
1.5 Kubernetes的發展歷史 26
1.6 本章小結 27
第2章 開始Operator開發 28
2.1 理解控制器模式 28
2.1.1 生活中的控制器 28
2.1.2 Kubernetes中的控制器 29
2.2 理解Operator模式 30
2.3 Operator開發環境準備 31
2.4 Kubebuilder的安裝配置 31
2.5 從Application Operator Demo開始 32
2.5.1 創建項目 33
2.5.2 添加API 35
2.5.3 CRD實現 38
2.5.4 CRD部署 39
2.5.5 CR部署 40
2.5.6 Controller實現 41
2.5.7 啟動Controller 42
2.5.8 部署Controller 44
2.5.9 資源清理 46
2.6 Operator的發展歷史 46
2.6.1 Operator概念的提出 46
2.6.2 第一個Operator程式 47
2.6.3 Operator的崛起 47
2.7 本章小結 48
第二篇 進 階
第3章 Kubernetes API介紹 50
3.1 認識Kubernetes API 50
3.2 使用Kubernetes API 50
3.2.1 Curl方式訪問API 50
3.2.2 kubectl raw方式訪問API 53
3.3 理解GVK:組、版本與類型 54
3.4 本章小結 54
第4章 理解client-go 55
4.1 client-go項目介紹 55
4.1.1 client-go的代碼庫 55
4.1.2 client-go的包結構 56
4.1.3 client-go的版本規則 56
4.1.4 獲取client-go 57
4.2 client-go使用示例 57
4.2.1 client-go集群內認證配置 57
4.2.2 client-go集群外認證配置 60
4.2.3 client-go操作Deployment 63
4.3 本章小結 67
第5章 client-go源碼分析 68
5.1 client-go源碼概覽 68
5.1.1 關於client-go源碼版本 68
5.1.2 client-go模組概覽 69
5.2 WorkQueue源碼分析 71
5.2.1 普通佇列Queue的實現 71
5.2.2 延時佇列DelayingQueue的實現 74
5.2.3 限速佇列RateLimitingQueue的實現 79
5.2.4 小結 82
5.3 DeltaFIFO源碼分析 83
5.3.1 Queue接口與DeltaFIFO的實現 83
5.3.2 queueActionLocked()方法的邏輯 85
5.3.3 Pop()方法和Replace()方法的邏輯 86
5.4 Indexer和ThreadSafeStore 89
5.4.1 Indexer接口和cache的實現 89
5.4.2 ThreadSafeStore的實現 91
5.4.3 各種Index方法的實現 94
5.5 ListerWatcher 95
5.5.1 ListWatch對象的初始化 95
5.5.2 ListerWatcher接口 97
5.5.3 List-Watch與HTTP chunked 98
5.6 Reflector 102
5.6.1 Reflector的啟動過程 102
5.6.2 核心方法:Reflector.ListAndWatch() 102
5.6.3 核心方法:Reflector.watchHandler() 106
5.6.4 Reflector的初始化 108
5.6.5 小結 108
5.7 Informer 109
5.7.1 Informer就是Controller 109
5.7.2 SharedIndexInformer對象 113
5.7.3 sharedProcessor對象 116
5.7.4 關於SharedInformerFactory 119
5.7.5 小結 121
5.8 本章小結 122
第6章 項目核心依賴包分析 123
6.1 API項目 123
6.2 apimachinery項目 124
6.3 controller-runtime項目 125
6.4 本章小結 126
第7章 Operator開發進階 127
7.1 進階項目設計 127
7.2 準備application-operator項目 127
7.2.1 創建新項目 127
7.2.2 項目基礎結構分析 128
7.3 定義Application資源 132
7.3.1 添加新API 132
7.3.2 自定義新API 133
7.4 實現Application Controller 134
7.4.1 實現主調諧流程 134
7.4.2 實現Deployment調諧流程 137
7.4.3 實現Service調諧流程 140
7.4.4 設定RBAC許可權 142
7.4.5 過濾調諧事件 146
7.4.6 資源別名 150
7.5 使用Webhook 151
7.5.1 Kubernetes API訪問控制 151
7.5.2 Admission Webhook介紹 152
7.5.3 Admission Webhook的實現 152
7.5.4 cert-manager部署 154
7.5.5 Webhook部署運行 155
7.5.6 Webhook測試 157
7.6 API多版本支持 159
7.6.1 實現V2版本API 159
7.6.2 多版本API部署