Istio 0 到 60 研究报告总结
问题背景
现代分布式架构导致企业无法一致地监控、连接、管理和保障服务。主要问题包括:
- 监控:缺乏工具了解实际部署情况
- 连接:服务间网络服务发现、弹性重试、异常检测等
- 管理:细粒度流量控制(L7)、安全控制(身份验证、速率限制等)
服务网格解决方案
服务网格(Service Mesh)将监控、连接和管理功能从应用程序中分离,实现分工明确和易于更改。Istio 是一个平台,用于监视、安全、连接和管理始终如一的服务。
Istio 架构
- 控制平面:由 Istiod 管理,包括 Galley(配置验证)、Pilot(配置分发)、Citadel(SPIFFE 身份分配)
- 数据平面:由 Envoy 代理(Sidecar 部署)组成,负责请求拦截、路由、验证和安全
核心功能
入口网关
- Ingress Pod 运行在等位系统命名空间
- 使用网关(Gateway)和虚拟服务(VirtualService)自定义资源进行路由配置
- Lab:入口网关配置
可观察性
- Prometheus 指标
- Zipkin 追踪
- 访问日志服务
- Lab:可观察性配置
安全
- 身份认证:
- Kubernetes 服务账户映射到 Istio 身份
- SPIFFE 规范(命名方案 + X.509 认证)
- 对等身份验证(Permissive/Strict)
- 用户身份验证(JWT 令牌)
- 授权:
- 使用 AuthorizationPolicy 控制已验证主体的访问
- 规则基于来源(Peer/Request)、目标(主机/端口/方法/路径)和条件(请求属性)
- Lab:安全配置
交通管理
- 目标规则(DestinationRule):
- 配置特定服务的交通政策
- 连接池设置(TCP/HTTP)
- 异常值检测(错误处理)
- 虚拟服务(VirtualService):
- 路由规则(基于标头操作)
- 重定向、重写、超时、重试和故障注入
- Lab:交通换档配置
实验室环境
- BYOK(自带 Kubernetes):优先推荐
- 回退方案:谷歌云平台(GCP)提供 Kubernetes 集群(数量有限)
- 提供 GitHub 资源链接: