Kubernetes編程

Kubernetes編程

《Kubernetes編程》是2021年中國電力出版社出版的圖書,作者是麥可·豪森布拉斯。本書介紹了Kubernetes API的基礎知識並深入講解API伺服器的內部結構。學習Go語言的Kubernetes編程接口,包括Kubernetes API對象。學習自定義資源,它是Kubernetes生態系統中核心的擴展工具。

基本介紹

  • 書名:Kubernetes編程
  • 作者:麥可·豪森布拉斯
  • 出版社:中國電力出版社 
  • ISBN:9787519854799 
內容簡介,圖書目錄,作者簡介,

內容簡介

如果你打算開發原生Kubernetes套用,《Kubernetes編程》將成為你的嚮導。該書面向開發者和套用運維管理員介紹如何構建原生Kubernetes應用程式,這類套用可直接通過API伺服器查詢或更新資源的狀態。AWS開發倡導者Michael Hausenblas和Red Hat首席軟體工程師Stefan Schimanski將介紹這類套用的特性並向你展示如何編寫Kubernetes程式來構建它們。你將學到Kubernetes的基礎構件,包括client-go API庫以及自定義資源。你只需要具備一些初級的開發知識和系統管理工具和實踐經驗(包括包管理、Go語言和Git)即可上手。介紹了Kubernetes API的基礎知識並深入講解API伺服器的內部結構。學習Go語言的Kubernetes編程接口,包括Kubernetes API對象。學習自定義資源,它是Kubernetes生態系統中核心的擴展工具。使用代碼標籤控制Kubernetes代碼生成器為自定義資源生成代碼時的行為。編寫自定義的控制器和Operator,並為部署到生產環境中做好準備。通過自定義API伺服器,擴展Kubernetes的API層。

圖書目錄

目錄
前言 .1
第1 章 概論 .7
1.1 什麼是Kubernetes 編程? .7
1.2 一個實際的例子 10
1.3 擴展模式 11
1.4 控制器和Operator 12
1.4.1 控制循環. 13
1.4.2 事件 14
1.4.3 邊沿觸發與水平觸發 17
1.4.4 改變集群對象或外部系統狀態 20
1.4.5 樂觀並發. 23
1.4.6 Operator 26
1.5 小結 28
第2 章 Kubernetes API 基礎 .30
2.1 API 伺服器 30
2.1.1 API 伺服器的HTTP 接口 31
2.1.2 API 術語 . 33
2.1.3 Kubernetes API 版本 . 36
2.1.4 聲明式狀態管理 . 37
2.2 通過命令行使用API . 38
2.3 API 伺服器是如何處理請求的 43
2.4 小結 47
第3 章 client-go 基礎 49
3.1 代碼倉庫 49
3.1.1 客戶端庫. 49
3.1.2 Kubernetes API 類型 . 51
3.1.3 API Machinery . 52
3.1.4 創建並使用客戶端對象 53
3.1.5 版本與兼容性 56
3.1.6 API 版本與兼容性保證 59
3.2 Go 語言中的Kubernetes 對象 62
3.2.1 TypeMeta 63
3.2.2 ObjectMeta 67
3.2.3 規格與狀態 68
3.3 客戶端集合 . 68
3.3.1 狀態子資源:UpdateStatus 71
3.3.2 列表與刪除 71
3.3.3 Watch 72
3.3.4 客戶端擴展 73
3.3.5 客戶端選項 73
3.4 Informer 和快取 75
3.5 深入API Machinery 83
3.5.1 型別 83
3.5.2 資源 83
3.5.3 REST 映射 . 84
3.5.4 Scheme 86
3.6 Vendor 機制 88
3.6.1 glide 88
3.6.2 dep . 89
3.6.3 Go 模組 90
3.7 小結 92
第4 章 使用自定義資源 93
4.1 服務發現信息 95
4.2 類型定義 97
4.3 自定義資源的高級功能 . 100
4.3.1 自定義資源合法性驗證 100
4.3.2 短名字與類別 103
4.3.3 列印列 104
4.3.4 子資源 106
4.4 開發者眼中的自定義資源 . 111
4.4.1 動態客戶端 . 112
4.4.2 強類型客戶端 114
4.4.3 Operator SDK 和Kubebuilder 的controller-runtime 客戶端 121
4.5 小結 . 123
第5 章 自動代碼生成 124
5.1 為何需要代碼生成器 124
5.2 調用代碼生成器 125
5.3 通過標籤控制代碼生成器行為 127
5.3.1 全局標籤 128
5.3.2 局部標籤 129
5.3.3 deepcopy-gen 標籤 131
5.3.4 runtime.Object 與DeepCopyObject 131
5.3.5 client-gen 標籤 133
5.3.6 informer-gen 和lister-gen 135
5.4 小結 . 136
第6 章 編寫Operator 的方案 137
6.1 準備工作 138
6.2 基於sample-controller 138
6.2.1 引導 139
6.2.2 業務邏輯 140
6.3 Kubebuilder . 148
6.3.1 引導 149
6.3.2 業務邏輯 155
6.4 Operator SDK . 160
6.4.1 引導 161
6.4.2 業務邏輯 163
6.5 其他方案 167
6.6 套用和未來的方向 168
6.7 小結 . 169
第7 章 發布控制器和Operator 170
7.1 生命周期管理和打包 170
7.1.1 打包:挑戰 . 171
7.1.2 Helm 172
7.1.3 Kustomize 174
7.1.4 其他打包方法 176
7.1.5 打包的最佳實踐 177
7.1.6 生命周期管理 178
7.2 準生產部署 179
7.2.1 將許可權設定正確 179
7.2.2 自動構建與測試 183
7.2.3 自定義控制器和可觀測性 184
7.3 小結 . 187
第8 章 自定義API 伺服器 . 189
8.1 自定義API 伺服器的適用場景 189
8.2 示例:一個披薩店 192
8.3 架構:聚合 193
8.3.1 API 服務 195
8.3.2 自定義API 伺服器的內部結構 198
8.3.3 委託身份認證和信任機制 200
8.3.4 委託授權 201
8.4 開發自定義API 伺服器 . 204
8.4.1 選項、配置模式和啟動基礎設施 204
8.4.2 第一次啟動 . 213
8.4.3 內部類型和轉換 214
8.4.4 編寫API 類型 218
8.4.5 轉換 220
8.4.6 默認值處理 . 224
8.4.7 雙程測試 226
8.4.8 驗證 228
8.4.9 註冊表與策略 231
8.4.10 安裝API 237
8.4.11 準入 . 242
8.5 部署自定義API 伺服器 . 253
8.5.1 部署清單檔案 254
8.5.2 設定RBAC . 257
8.5.3 不安全地運行自定義API 伺服器 259
8.5.4 證書與信任 . 262
8.5.5 共享etcd 265
8.6 小結 . 266
第9 章 自定義資源進階 . 268
9.1 自定義資源版本 268
9.1.1 改進披薩餐廳 269
9.1.2 轉換Webhook 架構 273
9.1.3 實現轉換Webhook . 277
9.1.4 搭建HTTPS 伺服器 278
9.1.5 部署轉換Webhook . 285
9.1.6 觀察實際轉換過程 286
9.2 準入Webhook . 290
9.2.1 餐館示例中的準入需求 291
9.2.2 準入Webhook 架構 292
9.2.3 註冊準入Webhook . 295
9.2.4 實現準入Webhook . 296
9.2.5 準入Webhook 實戰 302
9.3 結構化Schema 與CRD 的未來 . 304
9.3.1 結構化Schema . 305
9.3.2 剪裁或保留不能識別的欄位 307
9.3.3 控制剪裁 308
9.3.4 IntOrString 和RawExtensions 310
9.3.5 默認值 311
9.4 小結 . 313
附錄 資源 . 315
作者介紹 319
封面介紹 319

作者簡介

Michael Hausenblas是Amazon Web Service容器開發領域的倡導者。他擁有大規模數據處理和容器編排方面的經驗,在倡導和實施W3C和IETF標準化方面有著豐富的經驗。Stefan Schimanski是Red Hat的Go、Kubernetes和Open-Shift首席軟體工程師,他專注於Kubernetes API伺服器及其在自定義資源定義、API Machinery方面的實現,以及Kubernetes預發布倉庫的管理。

相關詞條

熱門詞條

聯絡我們