文档说明
作者:痴者工良
作者博客地址:
https://www.cnblogs.com/whuanle
教程地址:https://docs.whuanle.cn/zh/istio
导读
Istio 是构建在 Kubernetes 之上的服务网格(Service Mesh)基础设施,主要用于解决微服务系统中的流量治理、可观测性、安全通信等问题。
在很多团队里,应用虽然已经运行在 Kubernetes 上,但服务之间的调用治理、链路追踪、灰度发布、访问控制、熔断限流、入口出口流量管理等能力,往往还是散落在代码、SDK、网关配置或各种中间件中。这样做不仅增加了系统复杂度,也会让业务代码背上很多与业务无关的负担。
Istio 的价值就在于:将一部分微服务治理能力下沉到基础设施层。在尽量不改动业务代码的前提下,通过 Sidecar、网关和控制平面的配合,为服务提供统一的治理能力。
本教程围绕 Istio 的常见使用场景展开,尽量用循序渐进的方式带你理解:
- 为什么在微服务系统中需要 Istio;
- Istio 的核心组件和工作原理;
- 如何在 Kubernetes 中部署 Istio;
- 如何通过 Bookinfo 示例快速上手;
- 如何使用 VirtualService、DestinationRule、Gateway 等对象管理流量;
- 如何实现可观测性、金丝雀发布以及服务间认证鉴权。
本教程偏向基础入门 + 实验实践,适合把 Istio 当作服务治理学习入口的读者,也适合已经接触 Kubernetes、想进一步理解服务网格设计思想的读者。
本教程适合哪些读者
- 已经具备 Kubernetes 基础,想继续学习微服务治理;
- 想了解 Service Mesh 是什么、能解决什么问题;
- 希望掌握 Istio 常见资源对象及其使用方法;
- 想通过实验理解灰度发布、流量治理、认证授权等场景;
- 希望从架构角度理解“把治理能力下沉到基础设施层”这件事。
学习前建议
为了更顺畅地阅读本教程,建议你至少具备以下基础:
- 知道 Kubernetes 中 Pod、Deployment、Service、Namespace 的作用;
- 能够使用
kubectl查看和部署资源; - 对微服务、HTTP 调用、网关有基本概念;
- 最好已经有一个可用的 Kubernetes 练习环境。
如果你还没有接触过 Kubernetes,建议先补充基础知识后再学习本教程,这样会更容易理解 Istio 为什么这样设计。
你将学到什么
学习完本教程后,你可以对以下内容建立起整体认识:
- Istio 在微服务体系中的定位,以及它与 Kubernetes 的关系;
- Sidecar、Envoy、数据平面、控制平面的基本概念;
- 使用 Helm 安装和管理 Istio 组件;
- 给命名空间启用 Sidecar 自动注入;
- 使用 Gateway、VirtualService、DestinationRule 控制入口与服务路由;
- 使用 Kiali、Jaeger、Prometheus 等组件观察网格流量;
- 实现基于版本、Header、比例的流量分发;
- 实现超时、故障注入、熔断等流量治理能力;
- 实现 mTLS、请求认证、授权控制等安全能力。
学习路线建议
如果你是第一次接触 Istio,建议按照下面的顺序阅读:
- 先阅读“为什么学习 Istio”,理解 Istio 出现的背景和解决的问题;
- 再完成 Istio 的基础部署,先把环境搭起来;
- 通过 Bookinfo 示例快速上手,建立对 Gateway、VirtualService、Sidecar 的直观认识;
- 接着学习可观测性,观察服务调用关系和链路追踪数据;
- 在此基础上深入学习流量管理、网关和金丝雀发布;
- 最后学习认证与授权,补齐服务网格中的安全能力。
这样阅读,会更容易从“能跑起来”逐步走向“理解原理”和“掌握场景”。
阅读与实践建议
- 建议边看边做实验,不要只停留在概念层面;
- 学习流量治理时,尽量配合 Kiali 一起观察调用拓扑;
- 修改配置后,多使用
kubectl get、kubectl describe、kubectl logs检查运行状态; - 对比“未使用 Istio”和“使用 Istio”两种方式,更容易体会服务网格带来的变化;
- Istio 能力很多,但不必一开始追求全部掌握,先把最常用的入口、路由、观测、安全学扎实即可。
目录
- 1.为啥学习 Istio
- 微服务治理背景、Istio 的价值、核心原理
- 2.部署 Istio
- 使用 Helm 部署基础组件和入口网关
- 3.快速入门 Istio
- 使用 Bookinfo 示例完成第一次实践
- 3.1.可观察性
- 使用 Kiali、Jaeger、Prometheus、Grafana 观察网格状态
- 4.流量管理
- 学习路由、故障注入、超时、熔断、流量比例分配
- 4.1.VirtualService 的定义
- 深入理解 VirtualService 和 DestinationRule
- 5.网关
- 学习入口网关和出口网关的使用方式
- 6.金丝雀发布
- 学习灰度发布和按条件分流
- 7.认证
- 学习认证、授权与服务间安全通信
希望本系列教程能够帮助你不仅学会 Istio 的基础使用方式,也能借此理解微服务治理与服务网格背后的设计思想。