图书目录

目录

第一篇基础篇

第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