书籍详情
《云原生应用管理原理与实践机械工业》[59M]百度网盘|亲测有效|pdf下载
  • 云原生应用管理原理与实践机械工业

  • 出版社:鸿扬千页图书专营店
  • 出版时间:2020-08
  • 热度:9365
  • 上架时间:2024-06-30 09:08:33
  • 价格:0.0
书籍下载
书籍预览
免责声明

本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正

内容介绍

基本信息

  • 商品名:现货【满48包邮】云原生应用管理原理与实践9787111659495机械工业
  • ISBN:9787111659495
  • 定价:119
  • 出版社:机械工业出版社
  • 作者:陈显鹭,阚俊宝,匡大虎,卢稼奇

参考信息(以实物为准)

  • 出版时间:2020-08-01
  • 印刷时间:2020-07-01
  • 版次:1
  • 印次:1
  • 包装:平装
  • 开本:16开
  • 用纸:胶版纸
  • 页数:458
  • 字数:

产品特色

编辑推荐

(1)4位作者均是来自阿里云容器服务团队的资深技术专家,在云原生应用的开发和管理方面积累了丰富的经验。

(□)本书得到了阿里云容器服务负责人易立、CNCF技术监督委员会成员李响、□□□□高级技术专家李鹏等的推荐

(3)不仅详细讲解了Helm、Kustomize、CNAB、Operator等云原生应用框架的功能、使用,并通过源码分析它们的工作原理

(4)提供大量案例和代码解析,实战性极强


内容简介

这是一部从原理与实践角度讲解云原生应用管理的著作,是阿里云容器服务团队工程师多年云原生应用开发与管理经验的总结。详细讲解了Helm、Kustomize、CNAB、Operator等云原生应用管理框架和工具的应用场景、功能和使用,并通过源码讲解了它们的实现原理,同时提供了大量的案例和代码解析,能帮助读者轻松掌握云原生应用的管理。

全书一共16章,分为4个部分:

□□部分(□□~4章) Helm

首先介绍了Helm的发展历程、适用场景、架构设计、工作机制;然后以Chart为例,讲解了Helm的功能和使用方法;□后通过源代码分析了Helm的实现原理。

第二部分(第5~8章) Kustomize

首先介绍了Kustomize的诞生背景、适用场景、工作机制;然后详细讲解了它的功能和使用方法;□后通过源代码分析了它的实现原理。

第三部分(第9~1□章) CNAB

首先介绍了CNAB的基本概念、原理和规范;然后以Porter为例,详细讲解了它的功能、用法和实战;□后通过源代码分析了Porter的实现原理,同时讲解了mixin的开发。

第四部分(□□3~16章) Operator

首先介绍了Operator的概念、发展和工作原理,然后详细讲解了它的功能、用法、架构、组件和实战,□后通过源代码分析了它的实现原理。


前言序言

Preface 前  言

为什么要写这本书

云原生可谓当下□火热的项目开发技术之一,各种传统应用都在向云原生应用的方向靠拢。但是到底什么是云原生应用,云原生应用的开发标准是什么,至今还没有一个统一的规范与定义。这就造成了云原生社区百家争鸣的局面,各大厂商争先发布自己的云原生应用定义。

我是□014年开始接触容器技术的,□早从Docker镜像入门,当时的使用体验是,Docker镜像能够很好地隔离环境差异,做到一次构建、到处运行,为应用的打包与发布操作带来极大便利。

随着微服务理念的发展,应用开始变得越来越庞大,功能也越来越复杂,这时Docker Compose编排模板便应运而生了。通过它,技术人员可以方便地编辑模板以实现应用的打包与发布。后来随着Kubernetes的诞生与发展,声明式定义又开始风靡技术圈,大家逐渐倾向于使用面向终态的架构设计。现在的Kubernetes基本奠定了容器编排领域的标准。

可是随之而来的问题就是,Kubernetes原生的部署方式比较凌乱,部署资源散落在各处,没办法统一归拢管理,这给应用的发布与部署带来了□□□□的困难。□□个尝试解决这个问题的管理工具就是Helm—一个构建在Kubernetes上的包管理工具,它通过将Kubernetes应用的部署模板统一压缩成包并标明版本号的方式进行管理,是□□能够进行版本管理的云原生应用管理器。

随着Kubernetes 应用的增多,很多复杂的有状态应用也开始部署在集群中,这给Helm运行带来了很大的困难。Helm初期只是用于管理一些简单的无状态应用部署,对于复杂的有状态应用则有些力不从心。鉴于此,又诞生了Operator,Operator赋予应用管理者巨大的权限,可以让管理者自己编写运维脚本,以便管理者能够更好地发布与管理应用。

在应用管理器层出不穷的时候,应用定义这一领域也没有停下发展的脚步。微软推出的CNAB和□□□□集团推出的Open Application Model(OAM),都旨在定义云原生应用的标准。这些理念□□了Kubernetes的界限,更加抽象和广泛地定义了未来云原生应用的标准与风格。

因此我们想写一本书,介绍目前市面上各大社区与厂商推出的云原生管理工具与理念,让大家对云原生应用目前的状态有一个清晰的认识,从而根据自己的需求来挑选适合自己的云原生应用管理工具。

本书的内容

本书内容从逻辑上主要分为以下四部分。

□□部分Helm(□□~4章)

主要介绍Helm的历史与发展过程。我们将从Chart开始讲解,经过抽丝剥茧,帮助读者厘清Chart的各种写法。同时提供了目前主流社区生产使用的Chart供读者学习。后面将以安装Chart为例,从源码角度介绍Helm的整个安装过程,让读者能够更加深入地理解Helm这个包管理工具的原理及其使用方法。

第二部分 Kustomize(第5~8章)

主要介绍Kustomize诞生的原因。我们将从Kustomize的概念入手,详细了解Kustomize的各个功能,同时结合Kustomize的各个插件来理解其覆盖的领域与功能。□后从源码角度入手,详细讲解Kustomize各个命令的执行过程。

第三部分 CNAB和Porter(第9~1□章)

主要介绍CNAB的概念、CNAB推出的背景与意义。这部分内容从概念入手,详细介绍管理工具Porter是如何实践CNAB概念的。□后从源码角度对Porter进行分析。

第四部分 Operator(□□3~16章)

主要介绍Operator的概念和工作原理,以及Operator Framework目前涵盖的组件。我们将以一个具体示例为模板,详细介绍Operator在有状态应用管理中的作用,□后从源码角度分析各个功能的实现原理。

适用读者

希望深入理解Kubernetes上的应用管理的读者

已经使用过Helm等应用管理工具,希望探查更多细节的读者

希望了解如何使用Go语言编写应用管理工具的程序员

云原生爱好者

如何阅读

本书内容是实战与源码分析相结合,因此仅仅靠阅读是无法体会所有要点的。本书所有分析的源码均是开源项目,希望读者能够根据内容,寻找到对应的源码,边看源码边解析。□好能够根据自己的理解,在本机运行一下,以便了解整个代码的运行流程。

关于勘误

由于写作时间和水平有限,本书难免存在一些纰漏和错误。如果读者发现了问题,请及时与我们联系,我们也会在后面的版本中加以改正,联系邮箱:xianlubird@gmail.com。非常希望与大家共同学习云原生技术。

致谢

□后,向在本书编写过程中给予巨大帮助的人们表示诚挚的感谢。感谢妻子的支持,编写此书期间,恰逢妻子怀孕,感谢她的理解和包容,很多时候忽略了她。希望此书也能作为给未来的新生命的贺礼。

感谢阿里云容器服务团队在本书编写期间给予的理解与包容。

□后,感谢杨福川编辑,在他的帮助与支持下,本书由一个想法变成了实体展现给各位读者;感谢张锡鹏编辑的辛苦付出,帮助我们多次改稿,修复各种低级错误,极大地提升了本书的文字质量。


陈显鹭

□0□0年4月


目录

Contents?目  录

前言

□□章 什么是Helm  1

1.1 Helm的发展历程  1

1.□ Helm的适用场景  □

1.3 Helm的社区和生态  3

1.4 Helm的架构设计与工作原理  4

1.4.1 Helm Client  4

1.4.□ Tiller  5

1.5 本章小结  5

第□章 Chart  7

□.1 Chart文件结构  7

□.1.1 Chart.yaml  8

□.1.□ Chart license, README notes  9

□.1.3 Chart Dependences  10

□.1.4 template和values  14

□.□ Helm功能初体验  18

□.□.1 前置条件  18

□.□.□ Helm的三大基本概念  18

□.□.3 安装Helm  18

□.□.4 安装□□个Chart  19

□.□.5 查看当前安装实例  □1

□.□.6 删除安装的实例  □1

□.□.7 Helm后端存储  □□

□.3 helm install  □3

□.4 Helm 更新与回滚  □5

□.4.1 helm upgrade  □5

□.4.□ helm history  □5

□.4.3 helm rollback  □6

□.4.4 一些有用的更新参数  □6

□.5 helm repo  □6

□.6 创建自己的Chart  □8

□.7 Helm Hooks  □9

□.7.1 Helm支持的Hooks种类  30

□.7.□ Hooks 与Release 生命周期的关系  30

□.7.3 简单的Hooks示例  31

□.7.4 使用crd-install来定义一个CRD  33

□.7.5 自动删除先前版本的Hooks  33

□.8 Helm插件  34

□.9 Chart测试  36

□.10 Chart模板开发高阶介绍  38

□.10.1 创建□□个template文件  39

□.10.□ 给template添加动态变量  41

□.10.3 模板函数与管道  4□

□.10.4 逻辑控制  45

□.10.5 变量  51

□.10.6 自定义模板  53

□.10.7 在模板中引用文件  58

□.10.8 创建一个NOTES.txt文件  60

□.11 本章小结  61

第3章 使用Helm部署Wordpress实战  63

3.1 下载Wordpress Chart  63

3.□ Chart.yaml  64

3.3 requirements.yaml  64

3.4 Charts文件夹  65

3.5 template文件夹  65

3.5.1 helper文件  66

3.5.□ NOTES.txt  68

3.5.3 其他文件  69

3.5.4 tests文件  71

3.6 README.md  7□

3.7 values.yaml  7□

3.8 安装  73

3.9 本章小结  76

第4章 Helm 源码分析  77

4.1 helm install  77

4.1.1 locateChartPath  78

4.1.□ ensureHelmClient  81

4.1.3 InstallCmd Run  81

4.1.4 installReleaseFromChart  83

4.1.5 setupConnection  84

4.1.6 Helm Client install Function  85

4.1.7 返回Release状态信息  87

4.□ Helm Install Server  88

4.□.1 prepareRelease  89

4.□.□ performRelease  90

4.3 Helm update  93

4.3.1 update 命令的定义  93

4.3.□ Update 服务端的实现  94

4.4 helm ls  96

4.4.1 Client 端实现  96

4.4.□ Server端实现  98

4.5 Helm Rollback  100

4.6 Helm delete  10□

4.7 Helm 3简介  104

4.8 本章小结  108

第5章 Kustomize入门  109

5.1 Kustomize介绍  109

5.□ Kustomize原理介绍  111

5.3 Kustomize快速入门  113

5.3.1 安装Kustomize  113

5.3.□ 通过Kustomize部署helloworld  114

5.4 本章小结  117

第6章 Kustomize详解  118

6.1 Kustomize术语  118

6.□ Kustomize配置详解  1□1

6.□.1 资源  1□1

6.□.□ 生成器  1□□

6.□.3 转换器  1□4

6.3 命令行使用方法  1□8

6.3.1 命令行使用  1□8

6.3.□ kustomize build  130

6.3.3 kustomize edit  136

6.3.4 kustomize create  141

6.3.5 kustomize conf?ig  143

6.4 基本用法  147

6.4.1 使用conf?igGeneration  147

6.4.□ 使用generatorOptions  149

6.4.3 配置转换器  150

6.4.4 使用变量  153

6.4.5 镜像替换  154

6.4.6 补丁  156

6.5 Kustomize插件  161

6.5.1 插件介绍  16□

6.5.□ Exec类型插件  163

6.5.3 Go库文件插件  165

6.6 工作流  169

6.6.1 创建配置仓库  169

6.6.□ 配置下发  170

6.6.3 使用共享配置  170

6.7 本章小结  17□

第7章 Kustomize实战  173

7.1 示例介绍  173

7.1.1 基础配置  174

7.1.□ 测试环境  177

7.1.3 生产环境  180

7.1.4 配置管理  185

7.□ 通过插件实现不同环境下部署不同的模板  186

7.□.1 项目介绍  187

7.□.□ 插件实现  188

7.□.3 运行插件  191

7.3 本章小结  193

第8章 Kustomize源码分析  194

8.1 Kustomize 执行流程介绍  194

8.□ kustomize build命令解析  196

8.□.1 NewCmdBuild函数解析  197

8.□.□ NewCmdBuildPrune函数详解  198

8.□.3 RunBuild函数详解  199

8.□.4 AccumulateTarget 解析  □03

8.□.5 addHashesToNames函数  □10

8.□.6 ResolveVars函数  □11

8.□.7 computeInventory函数  □1□

8.3 kustomize edit命令分析  □14

8.4 add子命令  □15

8.5 set子命令  □□5

8.6 Fix子命令  □□8

8.7 remove子命令  □□9

8.8 kustomize create 命令分析  □30

8.9 本章小结  □33

第9章 走近CNAB  □34

9.1 什么是CNAB  □34

9.□ CNAB 基本概念和原理  □36

9.3 CNAB规范  □38

9.3.1 bundle.json文件格式  □39

9.3.□ 调用镜像  □45

9.3.3 应用包运行规范  □46

9.3.4 包格式规范  □47

9.4 Duffle和Porter  □48

9.4.1 使用Duffle打包Wordpress  □48

9.4.□ 使用Porter打包Wordpress  □50

9.4.3 使用Duffle还是Porter  □51

9.5 本章小结  □51

□□0章 Porter使用详解  □5□

10.1 Porter快速上手  □5□

10.1.1 安装Porter  □5□

10.1.□ 创建应用包  □53

10.1.3 部署应用  □54

10.1.4 更新和卸载应用  □55

10.□ 创建应用包  □55

10.□.1 应用包元数据  □57

10.□.□ mixin  □57

10.□.3 参数  □58

10.□.4 输出  □59

10.□.5 校验规则  □60

10.□.6 凭据  □60

10.□.7 应用包操作  □61

10.□.8 自定义操作  □63

10.□.9 依赖  □63

10.□.10 镜像  □63

10.□.11 自定义Dockerf?ile  □64

10.3 mixin  □65

10.3.1 安装mixin  □66

10.3.□ 常用mixin介绍  □66

10.4 Porter命令详解  □70

10.5 OCI仓库与应用分发  □76

10.6 使用Porter分发CNAB应用  □78

10.6.1 发布应用包  □78

10.6.□ □□应用包  □80

10.6.3 导出应用包  □81

10.7 本章小结  □8□

□□1章 Porter实战  □83

11.1 创建基本的应用框架  □83

11.1.1 环境准备  □83

11.1.□ 创建基本的应用框架  □84

11.□ 支持参数和输出  □88

11.3 定义多个操作步骤  □91

11.4 发布应用包  □95

11.5 使用应用包依赖  □98

11.6 本章小结  300

□□□章 Porter mixin开发和源码解析  301

1□.1 mixin实现原理  301

1□.1.1 mixin调用机制  301

1□.1.□ mixin API  30□

1□.□ mixin开发  306

1□.□.1 创建mixin项目  306

1□.□.□ mixin代码概览  308

1□.□.3 实现build命令  31□

1□.□.4 定义JSON Schema  313

1□.□.5 实现参数组装逻辑  316

1□.3 Porter build源码解析  3□0

1□.4 Porter install源码解析  3□9

1□.4.1 准备应用包  330

1□.4.□ 准备和执行依赖  33□

1□.4.3 执行主应用包操作  336

1□.4.4 Docker驱动的运行过程  339

1□.5 Porter运行时源码解析  34□

1□.6 本章小结  346

□□3章 全面了解Operator  347

13.1 初识Operator  348

13.1.1 什么是Operator  348

13.1.□ Operator的发展  349

13.1.3 Operator的社区与生态   351

13.□ Operator Framework  35□

13.3 Operator 工作原理  354

13.4 本章小结  357

□□4章 Operator Framework功能详解  358

14.1 Operator SDK  358

14.1.1 安装Operator SDK CLI  358

14.1.□ 使用Operator SDK CLI  360

14.1.3 Operator的作用域  363

14.1.4 Operator SDK生成的代码框架  365

14.1.5 controller-runtime  367

14.1.6 使用Predicates过滤事件  381

14.1.7 Operator SDK的架构演进  383

14.□ Operator Lifecycle Manager  387

14.□.1 OLM组件模型定义  387

14.□.□ OLM结构介绍   389

14.□.3 OLM的安装  390

14.□.4 依赖解析和升级管理  39□

14.□.5 operator-registry  395

14.3 Operator Metering  398

14.3.1 Operator Metering基本架构  398

14.3.□ Operator Metering核心组件  400

14.4 本章小结  407

□□5章 Operator实战  408

15.1 基于Operator SDK构建Operator  408

15.1.1 生成□□个Operator项目  408

15.1.□ 创建自定义资源定义  409

15.1.3 创建Controller  410

15.1.4 Operator的构建和运行  416

15.□ 使用Operator Lifecycle Manager  419

15.□.1 构建一个CSV  419

15.□.□ 基于Operator Lifecycle Manager测试Operator  4□3

15.3 部署和使用Operator Metering  4□5

15.3.1 安装Operator Metering  4□6

15.3.□ 定制化Prometheus Report Queries  4□6

15.4 本章小结  43□

□□6章 Operator示例:cert-manager源码解析  433

16.1 cert-manager基本介绍  433

16.□ cert-manager组件架构解析  434

16.3 基于controller-runtime的cainjector架构解析  441

16.3.1 cainjector的启动流程  441

16.3.□ cainjector的Reconcile函数  446

16.4 本章小结  448


作者简介

陈显鹭

阿里云容器服务技术专家, CNCF基金会下多个项目的贡献者和维护者,专注于容器技术的编排与基础环境研究。爱好折腾源代码,热爱开源文化并积极参与社区开源项目的研发。

阚俊宝

阿里云容器服务技术专家,专注Kubernetes、Docker、云存储,是阿里云CSI存储核心维护者。

匡大虎

阿里云容器服务技术专家,专注云原生安全,是阿里云容器服务云原生安全核心成员。

卢稼奇

阿里云容器服务高级开发工程师,专注Kubernetes、云原生应用编排、前端技术开发。