Kubernetes 編程 (Programming Kubernetes: Developing Cloud Native Applications)

Michael Hausenblas , Stefan Schimanski 著 李凡希 , 任震宇 譯

買這商品的人也買了...

商品描述

如果你打算開發原生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層。

作者簡介

Michael Hausenblas

是Amazon Web Service容器開發領域的倡導者。
他擁有大規模數據處理和容器編排方面的經驗,
在倡導和實施W3C和IETF標準化方面有著豐富的經驗。


Stefan Schimanski

是Red Hat的Go、Kubernetes和Open-Shift首席軟件工程師,
他專注於Kubernetes API服務器及其在自定義資源定義、
API Machinery方面的實現,以及Kubernetes預發布倉庫的管理

目錄大綱

目錄
前言.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