我的新开源书籍 - 《Istio & Envoy 内幕》,刚刚达到了一个里程碑,同时中英版本文同步完成。所以我想介绍一下。
Istio & Envoy Insider English Edition on Amazon.com
《Istio & Envoy 内幕》发布于 salttiger.com
本书概述
本书名为《Istio & Envoy 内幕》,英文名《Istio & Envoy Insider》。这是一本编写中的书,现在草稿阶段。
本书是什么
本书内容包括:Envoy 源码分析、深入 Envoy 基本原理解构与分析 、 Istio 基本原理分析。但不是一本传统的《深入 xyz 源码》类型的书。甚至可以说,我尽了最大的努力少在书中直接贴源码。看源码是掌握实现细节必须的一步,但在书中浏览源码的体验一般非常糟糕,本书更多使用源码导航图来让读者了解实现的全流程,而非迷失于碎片式的源码片段细节当中而忘记全貌。
本书中,我尝试以设计与实现角度,尽量系统地去思考:
- Envoy 的设计与实现细节
- Istio 为什么是现在的样子
- 那些魔术配置背后的真相: Linux + Envoy
- 流量是如何用 Linux 的 netfilter 技术,被拦截到 Envoy 的
- istiod 是如何编程 Envoy 去完成
服务网格
的流量策略的
- Istio 将来可能是什么样子
书里说的,只是在我研究与使用了 Istio 一段时间后,的思考与记录。我只是排查过一些 Istio/Envoy 相关的功能与性能问题,浏览和 Debug 过一些 Istio/Envoy 的代码。
在研究 Istio 过程中。发现网上是有很多非常有价值的资讯。但是,要么主要是从使用者出发,没说实现机理;要么就是说了机理,也说得很好,但内容缺少系统化和连贯性。
本书不是什么
本书不是一本使用手册。更不是从使用者角度,教如何深入浅出学习 Istio。不会布道 Istio 有如何如何强大之功能,更不会教如何使用 Istio。这方面网上已经有太多非常优秀的书、文章、文档了。
🤷 : Yet, another Istio User Guide?
🙅 : No!
读者对象
本书主要讲 Istio/Envoy 的设计、实现机制。假设读者已经有一定的 Istio 使用经验。并有兴趣进一步研究其实现机理。
书的访问地址
关于作者
我叫 Mark Zhu,一个中年且头发少的程序员。我不是 Istio 专家,更不是 Istio Committer。连互联网大厂员工也不是。
为什么水平有限还学人家写书?因为这句话:
你不需要很厲害才能開始,但你需要開始才會很厲害。
Blog: https://blog.mygraphql.com/
为方便读者关注 Blog 与本书的更新,开了个同步的 微信公众号:Mark的滿紙方糖言
微信公众号: Mark的滿紙方糖言
参与编写
如果你也对编写本书有兴趣,欢迎联系我。本书的出发点不是刷简历,也没这个能力。而且,这样的非短平快
且 TL;DR
书籍注定是小众货。
感谢提出 Issue 的同学 🌻
- 使众行者:对阅读体验和排版提出很多非常好的意见。
Dedication 💞
First, to my dear parents, for showing me how to live a happy
and productive life. To my dear wife and our amazing kid – thanks for all your love and patience.
Copyleft 声明
无论是文字还是图片,如果转载或修改,请注明原出处。
意见反馈
由于自称是开源交互图书,读者的反馈当然非常重要。如果你发现书中的错误,或者有更好的建议,不妨来这里提 Issue:
https://github.com/labilezhu/istio-insider/issues
English version
There is an English version: https://istio-insider.mygraphql.com/en/latest/
目录
- 阅读互动图书
- Istio 组件架构
- Istio 整体架构
- Service Mesh 的一些基础概念
- Istio 端口 与 组件
- Istio 数据面架构
- Istio 整体架构
- Envoy 内幕
- 原生的可编程代理
Envoy Proxy
架构 - 目录
- Istio 下 Envoy 配置举例
- 实验环境
- Inbound 数据流 “推断”
- Outbound 数据流 “推断”
- 用 bpftrace 检查数据流
- Envoy 抽象主流程与概念
- 架构
- 源码设计
- 事件驱动与线程模型
- Listener
- Network Filter
- http connection manager
- Router
- HTTP/1.1 Stream(草稿)
- 流控 - Flow Control
- Envoy 请求与响应调度
- 请求与响应调度
- 请求与响应调度时序线
- 总结
- 一些有趣的扩展阅读
- HTTP 连接生命周期管理
- Circuit Breaking(草稿)
- Istio 与 Envoy 指标
- Istio 与 Envoy 指标概述
- Istio 下 Envoy 配置举例
- 原生的可编程代理
- Istio/Envoy 性能
- Disruptions - 异常处理
- Observability - 可观察性
- Troubleshooting - 问题排查
- Decrypt and Dump TLS Traffic - 解密与监听 TLS 流量
- TLS key log feature
- Envoy Key Log 配置
- Decryption Tools
- Key Log Format
- Ref
- TLS key log feature
- TCP Proxy half-closed connection leak for 1 hour in some scenarios
- Base knowledge
- Environment
- socket leak & occupy on FIN_WAIT2
- App outbound connecting timed out because App selected a ephemeral port which collisions with the existing socket on 15001(outbound) listener
- Base knowledge
- Environment
- New connection timeout
- App build connection on the same ephemeral port
- Skills
- Decrypt and Dump TLS Traffic - 解密与监听 TLS 流量
- Istio 开发
- Istio Data Plane
- istio-proxy
- 调试 Istio 网格中运行的 Envoy sidecar C++ 代码
- 调试与观察 istio-proxy Envoy sidecar 的启动过程
- istio-proxy
- Istio Control Plane
- Debug Istiod
- Istio 开发入门参考列表
- Istio Data Plane
附录
附录
- 实验环境总述
- 基础环境安装
- 安装工具服务
- 配置 Shell 环境
- 实验环境列表
- 简单分层实验环境
- 安装过程
- 简单分层实验环境