失效链接处理 |
云原生服务网格Istio:原理、实践、架构与源码解析 PDF 下载
整理下载:
版权归出版社和原作者所有,链接已删除,请购买正版
用户下载说明:
电子版仅供预览,下载后24小时内务必删除,支持正版,喜欢的请购买正版书籍:
http://product.china-pub.com/8060406
相关截图:
![]()
资料简介:
本书分为原理篇、实践篇、架构篇和源码篇,由浅入深地将Istio项目庖丁解牛并呈现给读者。原理篇介绍了服务网格技术与Istio项目的技术背景、设计理念与功能原理,能够帮助读者了解服务网格这一云原生领域的标志性技术,掌握Istio流量治理、策略与遥测和安全功能的使用方法。实践篇从零开始搭建Istio运行环境并完成一个真实应用的开发、交付、上线监控与治理的完整过程,能够帮助读者熟悉Istio的功能并加深对Istio的理解。架构篇剖析了Istio项目的三大核心子项目Pilot、Mixer、Citadel的详细架构,帮助读者熟悉Envoy、Galley、Pilot-agent等相关项目,并挖掘Istio代码背后的设计与实现思想。源码篇对Istio各个项目的代码结构、文件组织、核心流程、主要数据结构及各主要代码片段等关键内容都进行了详细介绍,读者只需具备一定的Go语言基础,便可快速掌握Istio各部分的实现原理,并根据自己的兴趣深入了解某一关键机制的完整实现。本书提供源码下载,参见http://github.com/cloudnativebooks/cloud-native-istio。无论是对于刚入门Istio的读者,还是对于已经在产品中使用Istio的读者,本书都极具参考价值。
资料目录:
原 理 篇 第1章 你好,Istio. 2 1.1 Istio是什么... 2 1.2 通过示例看看Istio能做什么... 4 1.3 Istio与服务治理... 6 1.3.1 关于微服务... 6 1.3.2 服务治理的三种形态... 8 1.3.3 Istio不只解决了微服务问题... 10 1.4 Istio与服务网格... 11 1.4.1 时代选择服务网格... 11 1.4.2 服务网格选择Istio. 14 1.5 Istio与Kubernetes 15 1.5.1 Istio,Kubernetes的好帮手... 16 1.5.2 Kubernetes,Istio的好基座... 18 1.6 本章总结... 20 第2章 Istio架构概述... 21 2.1 Istio的工作机制... 21 2.2 Istio的服务模型... 23 2.2.1 Istio的服务... 24
2.2.2 Istio的服务版本... 26
2.2.3 Istio的服务实例... 28 2.3 Istio的主要组件... 30 2.3.1 istio-pilot 30 2.3.2 istio-telemetry. 32 2.3.3 istio-policy. 33 2.3.4 istio-citadel 34 2.3.5 istio-galley. 34 2.3.6 istio-sidecar-injector 35 2.3.7 istio-proxy. 35 2.3.8 istio-ingressgateway. 36 2.3.9 其他组件... 37 2.4 本章总结... 37 第3章 非侵入的流量治理... 38 3.1 Istio流量治理的原理... 38 3.1.1 负载均衡... 39 3.1.2 服务熔断... 41 3.1.3 故障注入... 48 3.1.4 灰度发布... 49 3.1.5 服务访问入口... 54 3.1.6 外部接入服务治理... 56 3.2 Istio路由规则配置:VirtualService. 59 3.2.1 路由规则配置示例... 59 3.2.2 路由规则定义... 60 3.2.3 HTTP路由(HTTPRoute)... 63 3.2.4 TLS路由(TLSRoute)... 78 3.2.5 TCP路由(TCPRoute)... 81 3.2.6 三种协议路由规则的对比... 83 3.2.7 VirtualService的典型应用... 84 3.3 Istio目标规则配置:DestinationRule. 89 3.3.1 DestinationRule配置示例... 90 3.3.2 DestinationRule规则定义... 90 3.3.3 DestinationRule的典型应用.... 103 3.4 Istio服务网关配置:Gateway. 107 3.4.1 Gateway配置示例... 108 3.4.2 Gateway规则定义... 109 3.4.3 Gateway的典型应用... 112 3.5 Istio外部服务配置:ServiceEntry. 120 3.5.1 ServiceEntry配置示例... 120 3.5.2 ServiceEntry规则的定义和用法... 121 3.5.3 ServiceEntry的典型应用... 123 3.6 Istio代理规则配置:Sidecar 126 3.6.1 Sidecar配置示例... 126 3.6.2 Sidecar规则定义... 126 3.7 本章总结... 129 第4章 可扩展的策略和遥测... 131 4.1 Istio策略和遥测的原理... 131 4.1.1 应用场景... 131 4.1.2 工作原理... 136 4.1.3 属性... 137 4.1.4 Mixer的配置模型... 140 4.2 Istio遥测适配器配置... 147 4.2.1 Prometheus适配器... 148 4.2.2 Fluentd适配器... 155 4.2.3 StatsD适配器... 159 4.2.4 Stdio适配器... 161 4.2.5 Zipkin适配器... 163 4.2.6 厂商适配器... 168 4.3 Istio策略适配器配置... 169 4.3.1 List适配器... 169 4.3.2 Denier适配器... 171 4.3.3 Memory Quota适配器... 172 4.3.4 Redis Quota适配器.... 175 4.4 Kubernetes Env适配器配置... 178 4.5 本章总结... 181 第5章 可插拔的服务安全... 182 5.1 Istio服务安全的原理... 182 5.1.1 认证... 185 5.1.2 授权... 189 5.1.3 密钥证书管理... 192 5.2 Istio服务认证配置... 193 5.2.1 认证策略配置示例... 193 5.2.2 认证策略的定义... 194 5.2.3 TLS访问配置... 196 5.2.4 认证策略的典型应用... 200 5.3 Istio服务授权配置... 202 5.3.1 授权启用配置... 202 5.3.2 授权策略配置... 203 5.3.3 授权策略的典型应用... 207 5.4 本章总结... 210 第6章 透明的Sidecar机制... 211 6.1 Sidecar注入... 211 6.1.1 Sidecar Injector自动注入的原理... 214 6.1.2 Sidecar注入的实现... 216 6.2 Sidecar流量拦截... 219 6.2.1 iptables的基本原理... 220 6.2.2 iptables的规则设置... 223 6.2.3 流量拦截原理... 224 6.3 本章总结... 228 第7章 多集群服务治理... 230 7.1 Istio多集群服务治理... 230 7.1.1 Istio多集群的相关概念... 230 7.1.2 Istio多集群服务治理现状... 231 7.2 多集群模式1:多控制面... 232 7.2.1 服务DNS解析的原理... 233 7.2.2 Gateway连接的原理... 237 7.3 多集群模式2:VPN直连单控制面... 238 7.4 多集群模式3:集群感知服务路由单控制面... 240 7.5 本章总结... 246 实 践 篇 第8章 环境准备... 248 8.1 在本地搭建Istio环境... 248 8.1.1 安装Kubernetes集群... 248 8.1.2 安装Helm.. 249 8.1.3 安装Istio. 250 8.2 在公有云上使用Istio. 253 8.3 尝鲜Istio命令行... 255 8.4 应用示例... 257 8.4.1 Weather Forecast简介... 257 8.4.2 Weather Forecast部署... 258 8.5 本章总结... 259 第9章 流量监控... 260 9.1 预先准备:安装插件... 260 9.2 调用链跟踪... 261 9.3 指标监控... 265 9.3.1 Prometheus. 265 9.3.2 Grafana. 268 9.4 服务网格监控... 273 9.5 本章总结... 277 第10章 灰度发布... 278 10.1 预先准备:将所有流量都路由到各个服务的v1版本... 278 10.2 基于流量比例的路由... 279 10.3 基于请求内容的路由... 283 10.4 组合条件路由... 284 10.5 多服务灰度发布... 286 10.6 TCP服务灰度发布... 288 10.7 自动化灰度发布... 290 10.7.1 正常发布... 291 10.7.2 异常发布... 294 第11章 流量治理... 296 11.1 流量负载均衡... 296 11.1.1 ROUND_ROBIN模式... 296 11.1.2 RANDOM模式... 298 11.2 会话保持... 299 11.2.1 实战目标... 300 11.2.2 实战演练... 300 11.3 故障注入... 301 11.3.1 延迟注入... 301 11.3.2 中断注入... 303 11.4 超时... 304 11.5 重试... 306 11.6 HTTP重定向... 308 11.7 HTTP重写... 309 11.8 熔断... 310 11.9 限流... 313 11.9.1 普通方式... 314 11.9.2 条件方式.... 315 11.10 服务隔离... 317 11.10.1 实战目标... 317 11.10.2 实战演练... 317 11.11 影子测试... 319 11.12 本章总结... 322 第12章 服务保护... 323 12.1 网关加密... 323 12.1.1 单向TLS网关... 323 12.1.2 双向TLS网关... 326 12.1.3 用SDS加密网关... 328 12.2 访问控制... 331 12.2.1 黑名单... 331 12.2.2 白名单... 332 12.3 认证... 334 12.3.1 实战目标... 334 12.3.2 实战演练... 334 12.4 授权... 336 12.4.1 命名空间级别的访问控制... 336 12.4.2 服务级别的访问控制... 339 12.5 本章总结... 341 第13章 多集群管理... 342 13.1 实战目标... 342 13.2 实战演练... 342 13.3 本章总结... 350 架 构 篇 第14章 司令官Pilot 352 14.1 Pilot的架构... 352 14.1.1 Istio的服务模型... 354 14.1.2 xDS协议... 356 14.2 Pilot的工作流程... 360 14.2.1 Pilot的启动与初始化... 361 14.2.2 服务发现... 363 14.2.3 配置规则发现... 368 14.2.4 Envoy的配置分发... 376 14.3 Pilot的插件... 383 14.3.1 安全插件... 385 14.3.2 健康检查插件... 390 14.3.3 Mixer插件... 391 14.4 Pilot的设计亮点... 392 14.4.1 三级缓存优化... 392 14.4.2 去抖动分发... 393 14.4.3 增量EDS. 394 14.4.4 资源隔离... 395 14.5 本章总结... 396 第15章 守护神Mixer 397 15.1 Mixer的整体架构... 397 15.2 Mixer的服务模型... 398 15.2.1 Template. 399 15.2.2 Adapter 401 15.3 Mixer的工作流程... 403 15.3.1 启动初始化... 403 15.3.2 用户配置信息规则处理... 409 15.3.3 访问策略的执行... 416 15.3.4 无侵入遥测... 421 15.4 Mixer的设计亮点... 423 15.5 如何开发Mixer Adapter 424 15.5.1 Adapter实现概述... 424 15.5.2 内置式Adapter的开发步骤... 425 15.5.3 独立进程式Adapter的开发步骤... 430 15.5.4 独立仓库式Adapter的开发步骤... 437 15.6 本章总结... 438 第16章 安全碉堡Citadel 439 16.1 Citadel的架构... 439 16.2 Citadel的工作流程... 441 16.2.1 启动初始化... 441 16.2.2 证书控制器... 442 16.2.3 gRPC服务器... 444 16.2.4 证书轮换器... 445 16.2.5 SDS服务器... 446 16.3 本章总结... 449 第17章 高性能代理Envoy. 450 17.1 Envoy的架构... 450 17.2 Envoy的特性... 451 17.3 Envoy的模块结构... 452 17.4 Envoy的线程模型... 453 17.5 Envoy的内存管理... 455 17.5.1 变量管理... 455 17.5.2 Buffer管理... 456 17.6 Envoy的流量控制... 456 17.7 Envoy与Istio的配合... 457 17.7.1 部署与交互... 457 17.7.2 Envoy API 458 17.3 本章总结... 459 第18章 代理守护进程Pilot-agent 460 18.1 为什么需要Pilot-agent 461 18.2 Pilot-agent的工作流程... 461 18.2.1 Envoy的启动... 462 18.2.2 Envoy的热重启... 465 18.2.3 守护Envoy. 466 18.2.4 优雅退出... 467 18.3 本章总结... 468 第19章 配置中心Galley. 469 19.1 Galley的架构... 469 19.1.1 MCP. 470 19.1.2 MCP API 470 19.2 Galley的工作流程... 471 19.2.1 启动初始化... 471 19.2.2 配置校验... 476 19.2.3 配置聚合与分发... 479 19.3 本章总结... 482 源 码 篇 第20章 Pilot源码解析... 484 20.1 进程启动流程... 484 20.2 关键代码分析... 486 20.2.1 ConfigController 486 20.2.2 ServiceController 490 20.2.3 xDS异步分发... 495 20.2.4 配置更新预处理... 503 20.2.5 xDS配置的生成及分发... 509 20.3 本章总结... 514 第21章 Mixer源码解析... 515 21.1 进程启动流程... 515 21.1.1 runServer通过newServer新建Server对象... 517 21.1.2 启动Mixer gRPC Server 520 21.2 关键代码分析... 520 21.2.1 监听用户的配置... 520 21.2.2 构建数据模型... 524 21.2.3 Check接口... 533 21.2.4 Report接口... 536 21.2.5 请求分发... 539 21.2.6 协程池... 541 21.3 本章总结... 543 第22章 Citadel源码解析... 544 22.1 进程启动流程... 544 22.2 关键代码分析... 548 22.2.1 证书签发实体IstioCA.. 548 22.2.2 SecretController的创建和核心原理... 551 22.2.3 CA Server的创建和核心原理... 556 22.3 本章总结... 558 第23章 Envoy源码解析... 559 23.1 Envoy的初始化... 559 23.1.1 启动参数bootstrap的初始化... 559 23.1.2 Admin API的初始化... 560 23.1.3 Worker的初始化... 562 23.1.4 CDS的初始化... 562 23.1.5 LDS的初始化... 563 23.1.6 GuardDog的初始化... 564 23.2 Envoy的运行和建立新连接... 564 23.2.1 启动worker 565 23.2.2 Listener的加载... 565 23.2.3 接收连接... 566 23.3 Envoy对数据的读取、接收及处理... 567 23.3.1 读取数据... 568 23.3.2 接收数据... 568 23.3.3 处理数据... 569 23.4 Envoy发送数据到服务端... 570 23.4.1 匹配路由... 571 23.4.2 获取连接池... 572 23.4.3 选择上游主机... 572 23.5 本章总结... 573 第24章 Galley源码解析... 574 24.1 进程启动流程... 574 24.1.1 RunServer的启动流程... 577 24.1.2 RunValidation Server的启动流程... 578 24.2 关键代码分析... 580 24.2.1 配置校验... 580 24.2.2 配置监听... 584 24.2.3 配置分发... 585 24.3 本章总结... 589 结语... 590 附录A 源码仓库介绍... 592 附录B 实践经验和总结... 598 |