注册 | 登录读书好,好读书,读好书!
读书网-DuShu.com
当前位置: 首页出版图书科学技术计算机/网络软件与程序设计Kubernetes API Server源码分析与扩展开发(微课视频版)

Kubernetes API Server源码分析与扩展开发(微课视频版)

Kubernetes API Server源码分析与扩展开发(微课视频版)

定 价:¥89.00

作 者: 张海龙
出版社: 清华大学出版社
丛编项:
标 签: 暂缺

购买这本书可以去


ISBN: 9787302670155 出版时间: 2024-08-01 包装: 平装-胶订
开本: 16开 页数: 字数:  

内容简介

  本书第一主题为解析 Kubernetes API Server 源代码;第二主题是结合源码知识进行扩展开发。全书分为3篇12章。第一篇为基础篇(第1章和第2章)。第1章简介Kubernetes及其组件,并迅速切入API Server,统一全书使用的概念名词,介绍其主要设计模式。第2章介绍Kubernetes项目组织和社区治理。组织结构对系统的设计有着直接影响,这部分帮助读者理解代码背后的人和组。在第2章读者也会看到如何参与Kubernetes项目,特别是贡献代码的过程。第二篇为源码篇(第3~8章)是本书的核心篇章。第3章宏观展示API Server源代码的组织,总体架构设计等,其中关于启动流程的源码部分与本篇后续章节衔接紧密;第4章聚焦整个系统核心对象——Kubernetes API,本章将API分为几大类并讲解为API进行的代码生成;第5章到第8章分别解析API Server 的各个子 Server 源码,它们是GenericServer、主Server、扩展Server、聚合器与聚合Server。第三篇为实战篇(第9~12章)讲解三种主流API Server扩展方式。作为辅助理解源码的手段之一,第9章不借助脚手架开发一个聚合Server;第10章为后两章基础,聚焦API Server Builder和Kubebuilder两款官方开发脚手架;第11章用 API Server Builder重写第9章的聚合Server;第12章用Kubebuilder开发一个操作器(Operator)。本书适合Kubernetes系统运维人员、扩展开发人员、使用Go的开发者及希望提升设计水平的软件从业人员阅读,需具备Go语言和Kubernetes基础知识。

作者简介

  张海龙,复旦大学软件工程硕士、数学学士。从事企业管理软件开发16年,专注于软件生命周期管理领域。参与、管理大型云原生软件开发项目多年,具有丰富的大型单体软件微服务化经验。现任外企软件开发团队经理,拥有十多年团队管理经验。

图书目录

第一篇基础篇
第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

本目录推荐