底層都完全了解 - Kubernetes API Server 原始程式分析

張海龍 著

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

相關主題

商品描述

►Kubernetes 控制面與節點組件的功能與結構

►Kubernetes API 的組、版本及資源定義

►宣告式 API 與控制器模式的運作機制

►Kubernetes 社區治理與貢獻開發流程

►API Server 的結構、原理與原始碼解析

►Kubernetes API 的屬性、方法與定義規範

►Generic Server 與主 Server 的建構與運行邏輯

►CRD 的定義、屬性驗證及版本轉換

►聚合 Server 的設計、實現及功能擴展

►聚合 Server 的部署、測試與問題排查方法

►API Server Builder 的開發步驟與應用實例

►使用 Kubebuilder 開發與測試 Kubernetes Operator

 

【內容簡介】

本書分為三大部分,從基礎概念到原始碼解析,再到實戰開發,逐步帶領讀者深入了解Kubernetes的運作原理與開發實踐。第一部分聚焦基礎知識,介紹Kubernetes的控制面與節點組件、API資源與版本管理,以及API Server的核心運作機制,包括請求過濾鏈、認證控制和控制器模式等關鍵內容,並涵蓋Kubernetes社區治理與開發流程,幫助讀者掌握如何參與開源專案。第二部分深入解析Kubernetes原始碼,涵蓋API Server的架構、命令列應用的實現,並詳細講解Generic Server與主Server的建構邏輯,包括Server啟動、配置、請求處理鏈的實現及認證控制,還探索了CRD定義、Webhook應用和API擴展的實現方法,揭示Kubernetes高度可擴展性的核心技術。第三部分則著重於實戰應用,展示如何開發聚合Server和Operator,並運用API Server Builder與Kubebuilder等工具完成從專案初始化到部署測試的完整流程,結合實際案例說明設計與實現Kubernetes自定義功能的高效方法

作者簡介

張海龍

復旦大學軟體工程碩士、數學學士。從事企業管理軟體發展16年,專注於軟體生命週期管理領域。參與、管理大型雲原生軟體發展專案多年,具有豐富的大型單體軟體微服務化經驗。現任外企軟體發展團隊經理,擁有十多年團隊管理經驗。

目錄大綱

基礎篇

1 Kubernetes 與API Server 概要

▌1.1 Kubernetes 組件

1.1.1 控制面上的組件

1.1.2 節點上的組件

▌1.2 Kubernetes API 基本概念

1.2.1 API 和API 物件

1.2.2 API 種類

1.2.3 API 組和版本

1.2.4 API 資源

▌1.3 API Server

1.3.1 一個Web Server

1.3.2 服務於API

1.3.3 請求過濾鏈與認證控制

▌1.4 宣告式API 和控制器模式

1.4.1 宣告式API

1.4.2 控制器和控制器模式

▌1.5 本章小結

 

2 Kubernetes 專案

▌2.1 Kubernetes 社區治理

2.1.1 特別興趣組

2.1.2 SIG 內的子專案小組

2.1.3 工作群組

▌2.2 開發人員如何貢獻程式

2.2.1 開發流程

2.2.2 程式提交與合併流程

▌2.3 原始程式碼下載與編譯

2.3.1 下載

2.3.2 本地編譯與運行

▌2.4 本章小結

 

原始程式篇

3 API Server

▌3.1 Kubernetes 的專案結構

3.1.1 頂層目錄

3.1.2 staging 目錄

3.1.3 pkg 目錄

▌3.2 Cobra

3.2.1 命令的格式規範

3.2.2 用Cobra 寫命令列應用

▌3.3 整體結構

3.3.1 子Server

3.3.2 再談聚合器

▌3.4 API Server 的建立與啟動

3.4.1 建立Cobra 命令

3.4.2 命令的核心邏輯

3.4.3 CreateServerChain() 函數

3.4.4 總結與展望

▌3.5 本章小結

 

4 Kubernetes API

▌4.1 Kubernetes API 原始程式碼

4.1.1 內部版本和外部版本

4.1.2 API 的屬性

4.1.3 API 的方法與函數

4.1.4 API 定義與實現的約定

▌4.2 內建 API

▌4.3 核心 API

▌4.4 程式生成

4.4.1 程式生成工作原理

4.4.2 程式生成範例

4.4.3 觸發程式生成

▌4.5 本章小結

 

5 Generic Server

▌5.1 Go 語言實現Web Server

▌5.2 go-restful

5.2.1 go-restful 簡介

5.2.2 go-restful 中的核心概念

5.2.3 使用go-restful

▌5.3 OpenAPI

5.3.1 什麼是OpenAPI

5.3.2 Kubernetes 使用OpenAPI 規格說明

5.3.3 生成API OpenAPI 規格說明

5.3.4 Generic Server 與OpenAPI

▌5.4 Scheme 機制

5.4.1 登錄檔的內容

5.4.2 登錄檔的建構

▌5.5 Generic Server 的建構

5.5.1 準備Server 運行配置

5.5.2 建立Server 實例

5.5.3 建構請求處理鏈

5.5.4 增加啟動和關閉鉤子函數

▌5.6 Generic Server 的啟動

5.6.1 啟動準備

5.6.2 啟動

▌5.7 API 的注入與請求回應

5.7.1 注入處理流程

5.7.2 WebService 及其Route 生成過程

5.7.3 回應對Kubernetes API 的HTTP 請求

▌5.8 認證控制機制

5.8.1 什麼是認證控制

5.8.2 認證控制器

5.8.3 動態認證控制

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

▌5.10 本章小結

 

6 主Server

▌6.1 主Server 的實現

6.1.1 填充登錄檔

6.1.2 準備Server 運行配置

6.1.3 建立主Server

▌6.2 主Server 的幾個控制器

6.2.1 ReplicaSet 控制器

6.2.2 Deployment 控制器

6.2.3 StatefulSet 控制器

6.2.4 Service Account 控制器

▌6.3 主Server 的認證控制

6.3.1 運行選項和命令列參數

6.3.2 從運行選項到運行配置

6.3.3 從運行配置到Generic Server

▌6.4 API Server 的登入驗證機制

6.4.1 API Server 登入驗證基礎

6.4.2 API Server 的登入驗證策略

6.4.3 API Server 中建構登入認證機制

▌6.5 本章小結

 

7 擴充Server

▌7.1 CustomResourceDefinition 介紹

7.1.1 CRD 的屬性

7.1.2 客製化API 屬性的定義與驗證

7.1.3 啟用Status 和Scale 子資源

7.1.4 版本轉換的Webhook

▌7.2 擴充Server 的實現

7.2.1 獨立模組

7.2.2 準備Server 運行配置

7.2.3 建立擴充Server

7.2.4 啟動擴充Server

▌7.3 擴充Server 中控制器的實現

7.3.1 發現控制器

7.3.2 名稱控制器

7.3.3 非結構化規格控制器

7.3.4 API 審核控制器

7.3.5 CRD 清理控制器

▌7.4 本章小結

 

8 聚合器和聚合Server

▌8.1 聚合器與聚合Server 介紹

8.1.1 背景與目的

8.1.2 再談API Server 結構

▌8.2 聚合器的實現

8.2.1 APIService 簡介

8.2.2 準備Server 運行配置

8.2.3 建立聚合器

8.2.4 啟動聚合器

8.2.5 聚合器代理轉發HTTP 請求

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

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

8.3.2 APIService 註冊控制器

8.3.3 APIService 狀態監測控制器

▌8.4 聚合Server

8.4.1 最靈活的擴充方式

8.4.2 聚合Server 的結構

8.4.3 委派登入認證

8.4.4 委派許可權認證

▌8.5 本章小結

 

實戰篇

9 開發聚合 Server

▌9.1 目標

▌9.2 聚合Server 的開發

9.2.1 建立專案

9.2.2 設計API

9.2.3 生成程式

9.2.4 填充登錄檔

9.2.5 資源存取

9.2.6 撰寫認證控制

9.2.7 增加Web Server

9.2.8 部署與測試

▌9.3 相關控制器的開發

9.3.1 設計

9.3.2 實現

9.3.3 如何啟動

9.3.4 測試

▌9.4 本章小結

 

10 API Server Builder 與Kubebuilder

▌10.1 controller-runtime

10.1.1 核心概念

10.1.2 工作機制

▌10.2 API Server Builder

10.2.1 概覽

10.2.2 Builder 用法

▌10.3 Kubebuilder

10.3.1 概覽

10.3.2 功能

10.3.3 開發步驟

▌10.4 本章小結

 

11 API Server Builder 開發聚合Server

▌11.1 目標

▌11.2 聚合Server 的開發

11.2.1 專案初始化

11.2.2 建立v1alpha1 版API 並實現

11.2.3 增加v1 版本API 並實現

▌11.3 相關控制器的開發

▌11.4 部署與測試

11.4.1 準備工作

11.4.2 製作鏡像

11.4.3 向叢集提交

11.4.4 測試

▌11.5 本章小結

 

12 Kubebuilder 開發Operator

▌12.1 目標

▌12.2 定義CRD

12.2.1 專案初始化

12.2.2 增加客製化API

▌12.3 相關控制器的開發

12.3.1 實現控制器

12.3.2 本地測試控制器

▌12.4 認證控制Webhook 的開發

12.4.1 引入認證控制Webhook

12.4.2 實現控制邏輯

▌12.5 部署至叢集並測試

12.5.1 製作鏡像

12.5.2 部署cert-manager

12.5.3 部署並測試

▌12.6 本章小結