书籍详情
Knative实战:基于Kubernetes的无服务器架构实践
作者:李志伟,游杨 著
出版社:机械工业出版社
出版时间:2021-04-01
ISBN:9787111675587
定价:¥89.00
购买这本书可以去
内容简介
本书从架构设计、功能、原理、开发、运维5个维度对Knative进行了全面的剖析,系统地讲解了基于Knative的无服务器架构解决方案。作者融合了在Kubernetes、Serverless领域的工程实践,详细介绍了Knative在服务管理、事件驱动、自动化构建部署方面的核心概念、架构设计及应用实践。同时,通过大量的示例展示了Knative管理无服务器应用的过程。 全书共9章,分为4个部分: 第一部分 准备篇(第1~2章) 首先介绍了Serverless和Knative的概念和基础知识,然后讲解了Knative的架构设计和工作环境搭建; 第二部分 基础篇(第3~5章) 首先分析了Knative的服务管理组件和事件驱动组件的功能和工作原理,然后讲解了如何如何通过Tekton实现无服务器应用的CI/CD; 第三部分 实战篇(第6章) 通过多个案例讲解了如何基于Knative完成云原生应用的设计实现; 第四部分 扩展篇(第7~9章) 详细讲解了Knative平台的运维,包括Serving组件的扩展配置、日志中心解决方案以及监控报警平台的实现。
作者简介
作者简介 李志伟 某网云原生实验室负责人,容器云领域专家。在Kubernetes、Istio、Serverless、DevOps工具等领域有深入的研究和实践。热心于云原生技术的应用与推广,曾荣获“K8sMeetup中国社区”最受欢迎讲师奖项。 游杨 某网云原生实验室高级运维开发工程师。先后参与Kubernetes和Knative项目的落地与实施工作,拥有丰富的容器平台实践经验,聚焦于Kubernetes、Serverless、CI/CD技术领域。
目录
前言
准备篇
第1章全面认识Knative 2
1.1Serverless的前世今生 2
1.1.1Serverless简介 2
1.1.2Serverless的主要特征 3
1.1.3Serverless的优缺点 3
1.1.4Serverless的发展现状 4
1.1.5Serverless的使用场景 4
1.2什么是Knative 4
1.2.1Knative的产生背景及发展历程 5
1.2.2Knative的架构设计 5
1.2.3Knative的主要受众群 6
1.2.4Knative的商业托管服务产品 7
1.3Knative开发运维需要具备的基础知识 7
1.3.1容器 7
1.3.2Kubernetes 8
1.3.3Istio 9
1.4本章小结 10
第2章搭建Knative运行环境 11
2.1在Kubernetes平台上安装Knative 11
2.1.1Istio平台的安装 12
2.1.2安装Knative Serving组件 13
2.1.3安装Knative Eventing组件 14
2.1.4安装可观察性组件 14
2.2部署HelloWorld应用 15
2.2.1Serving Hello World范例 15
2.2.2Eventing Hello World范例 16
2.3本章小结 19
基础篇
第3章Knative的服务管理组件Serving 22
3.1Serving的架构设计 22
3.2Knative相关的Kubernetes Service 23
3.3Autoscaler的工作流程 24
3.4Queue Proxy 25
3.5本章小结 26
第4章Knative的事件驱动组件Eventing 27
4.1Eventing的架构设计 27
4.1.1总体设计目标 28
4.1.2Eventing的基础概念 28
4.1.3事件传递方式 29
4.2关于CloudEvent 30
4.2.1CloudEvent简介 30
4.2.2术语 30
4.2.3上下文属性 32
4.2.4事件数据 34
4.2.5大小限制 34
4.2.6隐私与安全 35
4.2.7示例 35
4.3事件源 35
4.3.1核心事件源 35
4.3.2社区贡献的事件源 36
4.3.3Google Cloud Source 36
4.4Broker/Trigger事件模型 36
4.4.1工作原理 37
4.4.2默认代理配置 37
4.4.3Broker/Trigger模型范例 38
4.5事件注册表 39
4.5.1事件发现 39
4.5.2事件订阅 40
4.5.3 填充事件注册表 42
4.6 事件流控制 43
4.6.1 Sequence 43
4.6.2 Parallel 44
4.7 事件通道 45
4.7.1 当前可用的通道 45
4.7.2 默认通道设置 45
4.8 本章小结 46
第5章 基于Tekton的CI/CD平台 47
5.1 Tekton概述 47
5.1.1 Tekton的优势 47
5.1.2 Tekton的组件构成 48
5.1.3 Tekton的资源对象 48
5.2 Tekton的概念模型 49
5.2.1 Step、Task和Pipeline 49
5.2.2 输入与输出资源 50
5.2.3 TaskRun与PipelineRun 51
5.2.4 Tekton的运作方式 51
5.3 Tekton Pipeline资源对象详解 52
5.3.1 Task 52
5.3.2 TaskRun 66
5.3.3 Pipeline 74
5.3.4 PipelineRun 97
5.3.5 条件资源 111
5.3.6 变量替换 113
5.3.7 基于Git与Docker Registry的身份验证 117
5.3.8 基于Kubectl向Kubernetes集群持续部署 124
5.4 Trigger 126
5.4.1 TriggerTemplate 126
5.4.2 TriggerBinding 128
5.4.3 EventListener 131
5.4.4 将EventListener暴露给外部 138
5.4.5 ClusterTriggerBinding 138
5.4.6 CEL表达式扩展 139
5.5 Dashborad简介 140
5.5.1 Dashboard主要支持功能 140
5.5.2 Dashboard常用功能示例 141
5.6 安装Tekton Pipeline及相关组件 143
5.6.1 Tekton Pipeline安装 143
5.6.2 Tekton Dashborad安装 145
5.6.3 Tekton Trigger安装 145
5.7 应用CI/CD配置示例 146
5.7.1 Java语言配置示例 146
5.7.2 PHP语言配置示例 151
5.8 本章小结 155
实战篇
第6章 基于Knative的云原生应用的设计实现 158
6.1 云原生应用的设计原则 158
6.2 使用Knative的服务管理组件管理应用 160
6.2.1 部署一个Knative Service 161
6.2.2 更新Knative Service Configuration 164
6.2.3 流量分发到不同版本 166
6.2.4 蓝绿部署与灰度发布 167
6.2.5 Knative Service的弹性伸缩配置 170
6.3 使用事件驱动组件解耦服务依赖 172
6.3.1 部署一个Knative事件驱动应用 172
6.3.2 使用通道与订阅方式传递事件 175
6.3.3 与Apache Kafka集成 177
6.3.4 ContainerSource事件源 180
6.3.5 PingSource事件源 182
6.3.6 Parallel 183
6.3.7 Sequence 187
6.3.8 SinkBinding 190
6.3.9 GitHub事件源 191
6.4 本章小结 194
扩展篇
第7章 Serving组件的扩展配置 196
7.1 自动扩缩容的配置 196
7.1.1 全局或修订版范围设置 196
7.1.2 Class 197
7.1.3 度量指标 198
7.1.4 目标值 198
7.1.5 缩放边界 202
7.1.6 KPA特性设置 203
7.2 路由管理 208
7.2.1 定制Knative服务的主域名 208
7.2.2 DNS泛域名解析配置 211
7.2.3 服务的可见范围控制 212
7.3 网络与安全 213
7.3.1 证书管理工具cert-manager 213
7.3.2 手动配置TLS证书 214
7.3.3 自动配置TLS证书 216
7.4 运维相关配置 220
7.4.1 从私有容器镜像仓库部署应用 220
7.4.2 组件高可用配置 221
7.5 本章小结 222
第8章 日志中心 223
8.1 基于EFK的日志中心解决方案 223
8.1.1 EFK基础功能介绍 223
8.1.2 应用日志格式说明 223
8.1.3 添加Fluentd配置 224
8.1.4 配置Kibana索引模式 225
8.1.5 数据搜索展示 225
8.1.6 创建可视化图表 225
8.1.7 创建仪表盘 227
8.2 本章小结 229
第9章 监控报警平台 230
9.1 基于Prometheus和Grafana的监控报警平台 230
9.1.1 Prometheus 230
9.1.2 Grafana 233
9.2 Knative仪表盘 233
9.3 本章小结 238
附录 239
准备篇
第1章全面认识Knative 2
1.1Serverless的前世今生 2
1.1.1Serverless简介 2
1.1.2Serverless的主要特征 3
1.1.3Serverless的优缺点 3
1.1.4Serverless的发展现状 4
1.1.5Serverless的使用场景 4
1.2什么是Knative 4
1.2.1Knative的产生背景及发展历程 5
1.2.2Knative的架构设计 5
1.2.3Knative的主要受众群 6
1.2.4Knative的商业托管服务产品 7
1.3Knative开发运维需要具备的基础知识 7
1.3.1容器 7
1.3.2Kubernetes 8
1.3.3Istio 9
1.4本章小结 10
第2章搭建Knative运行环境 11
2.1在Kubernetes平台上安装Knative 11
2.1.1Istio平台的安装 12
2.1.2安装Knative Serving组件 13
2.1.3安装Knative Eventing组件 14
2.1.4安装可观察性组件 14
2.2部署HelloWorld应用 15
2.2.1Serving Hello World范例 15
2.2.2Eventing Hello World范例 16
2.3本章小结 19
基础篇
第3章Knative的服务管理组件Serving 22
3.1Serving的架构设计 22
3.2Knative相关的Kubernetes Service 23
3.3Autoscaler的工作流程 24
3.4Queue Proxy 25
3.5本章小结 26
第4章Knative的事件驱动组件Eventing 27
4.1Eventing的架构设计 27
4.1.1总体设计目标 28
4.1.2Eventing的基础概念 28
4.1.3事件传递方式 29
4.2关于CloudEvent 30
4.2.1CloudEvent简介 30
4.2.2术语 30
4.2.3上下文属性 32
4.2.4事件数据 34
4.2.5大小限制 34
4.2.6隐私与安全 35
4.2.7示例 35
4.3事件源 35
4.3.1核心事件源 35
4.3.2社区贡献的事件源 36
4.3.3Google Cloud Source 36
4.4Broker/Trigger事件模型 36
4.4.1工作原理 37
4.4.2默认代理配置 37
4.4.3Broker/Trigger模型范例 38
4.5事件注册表 39
4.5.1事件发现 39
4.5.2事件订阅 40
4.5.3 填充事件注册表 42
4.6 事件流控制 43
4.6.1 Sequence 43
4.6.2 Parallel 44
4.7 事件通道 45
4.7.1 当前可用的通道 45
4.7.2 默认通道设置 45
4.8 本章小结 46
第5章 基于Tekton的CI/CD平台 47
5.1 Tekton概述 47
5.1.1 Tekton的优势 47
5.1.2 Tekton的组件构成 48
5.1.3 Tekton的资源对象 48
5.2 Tekton的概念模型 49
5.2.1 Step、Task和Pipeline 49
5.2.2 输入与输出资源 50
5.2.3 TaskRun与PipelineRun 51
5.2.4 Tekton的运作方式 51
5.3 Tekton Pipeline资源对象详解 52
5.3.1 Task 52
5.3.2 TaskRun 66
5.3.3 Pipeline 74
5.3.4 PipelineRun 97
5.3.5 条件资源 111
5.3.6 变量替换 113
5.3.7 基于Git与Docker Registry的身份验证 117
5.3.8 基于Kubectl向Kubernetes集群持续部署 124
5.4 Trigger 126
5.4.1 TriggerTemplate 126
5.4.2 TriggerBinding 128
5.4.3 EventListener 131
5.4.4 将EventListener暴露给外部 138
5.4.5 ClusterTriggerBinding 138
5.4.6 CEL表达式扩展 139
5.5 Dashborad简介 140
5.5.1 Dashboard主要支持功能 140
5.5.2 Dashboard常用功能示例 141
5.6 安装Tekton Pipeline及相关组件 143
5.6.1 Tekton Pipeline安装 143
5.6.2 Tekton Dashborad安装 145
5.6.3 Tekton Trigger安装 145
5.7 应用CI/CD配置示例 146
5.7.1 Java语言配置示例 146
5.7.2 PHP语言配置示例 151
5.8 本章小结 155
实战篇
第6章 基于Knative的云原生应用的设计实现 158
6.1 云原生应用的设计原则 158
6.2 使用Knative的服务管理组件管理应用 160
6.2.1 部署一个Knative Service 161
6.2.2 更新Knative Service Configuration 164
6.2.3 流量分发到不同版本 166
6.2.4 蓝绿部署与灰度发布 167
6.2.5 Knative Service的弹性伸缩配置 170
6.3 使用事件驱动组件解耦服务依赖 172
6.3.1 部署一个Knative事件驱动应用 172
6.3.2 使用通道与订阅方式传递事件 175
6.3.3 与Apache Kafka集成 177
6.3.4 ContainerSource事件源 180
6.3.5 PingSource事件源 182
6.3.6 Parallel 183
6.3.7 Sequence 187
6.3.8 SinkBinding 190
6.3.9 GitHub事件源 191
6.4 本章小结 194
扩展篇
第7章 Serving组件的扩展配置 196
7.1 自动扩缩容的配置 196
7.1.1 全局或修订版范围设置 196
7.1.2 Class 197
7.1.3 度量指标 198
7.1.4 目标值 198
7.1.5 缩放边界 202
7.1.6 KPA特性设置 203
7.2 路由管理 208
7.2.1 定制Knative服务的主域名 208
7.2.2 DNS泛域名解析配置 211
7.2.3 服务的可见范围控制 212
7.3 网络与安全 213
7.3.1 证书管理工具cert-manager 213
7.3.2 手动配置TLS证书 214
7.3.3 自动配置TLS证书 216
7.4 运维相关配置 220
7.4.1 从私有容器镜像仓库部署应用 220
7.4.2 组件高可用配置 221
7.5 本章小结 222
第8章 日志中心 223
8.1 基于EFK的日志中心解决方案 223
8.1.1 EFK基础功能介绍 223
8.1.2 应用日志格式说明 223
8.1.3 添加Fluentd配置 224
8.1.4 配置Kibana索引模式 225
8.1.5 数据搜索展示 225
8.1.6 创建可视化图表 225
8.1.7 创建仪表盘 227
8.2 本章小结 229
第9章 监控报警平台 230
9.1 基于Prometheus和Grafana的监控报警平台 230
9.1.1 Prometheus 230
9.1.2 Grafana 233
9.2 Knative仪表盘 233
9.3 本章小结 238
附录 239
猜您喜欢