《Istio实战指南》 by 马若飞 2019年9月第1版
---
索引
核心控件:Envoy、Pilot、Mixer、Citadel、Galley
Istio追求尽可能的透明,通过 各种解耦设计 让系统对内对外都没有依赖,还提供 高度的扩展性。
Istio 应用的增长和服务的增多,扩展策略系统 是 最主要的需求,以增量的方式进行扩展。
数据平面、控制平面分离
各个组件都成为插件
开放和包容的设计思路
核心控件:Envoy、Pilot、Mixer、Citadel、Galley
1、Envoy
Istio数据平面 就是 代理。
Envoy作为 Sidecar代理。
一个为面向服务的框架而设计的7层代理和 通信总线,基于C++11。
将流量行为和数据提取出来发送给Mixer组件。
主要功能:
http 7层路由
grpc、http/2
服务发现 和 动态配置
健康检查
高级负载均衡
英文:n. 使节,使者; 代表;
2、Pilot
实现流量管理的核心组件。
主要作用:配置和管理envoy代理。
设置代理之间特定的流量规则,配置超时、重试、熔断等。
流量行为的路由规则 转换为 envoy配置 广播到envoy
把服务发现机制抽象出来 并转换成API分发给envoy
主要任务:
从平台(如K8S)获取服务信息,完成服务发现;
获取istio的各项配置,转换成envoy代理可读的格式并分发。
Rules API
流量规则
Envoy API
动态更新LB 和 路由表的API
3、Mixer
主要功能:提供策略控制,并从envoy代理 收集 遥测数据。
每次网络通信时,envoy代理 都会向 mixer发出 预检要求,用来监测调用者的合法性。
调用后,envoy代理 会发送 遥测数据 提供mixer收集。
一般情况下 Sidecar代理 会缓存数据。
适配器 是 重要组成部分,插件模型。
部分适配器API:日志后端、限额后端、授权后端、遥测后端
自定义适配器
4、Citadel
与安全相关的组件,主要负责 密钥和证书管理。
提供 服务间和终端用户的身份认证,
加密服务网格中的流量。
英文:n. 城堡,要塞; 大本营,根据地,避难所; (军舰上的)炮廓;
5、Galley
2019年3月发布的1.1版本中。
istio主要的 配置管理组件,负责 配置的获取、处理和分发。
MCP(Mesh Configuration Protocol,网格配置协议)
英文:n. 单层甲板大帆船; 军舰舰长用的大划艇; (船舰,飞机上的)厨房; 活版盘,长条校样;
---
1、流量管理
服务间通信》流量管理
金丝雀发布
传统:LB、Nginx、权重、对流量的管理和基础设施绑定到一起、难以维护
istio:轻松实现 各种维度的流量控制
Pilot + Envoy组件实现:将流量 和 基础设施解耦
pilot配置规则
envoy按照规则执行各种流量管理功能
功能:动态请求路由、超时、重试、熔断,故障注入-测试容错
具体功能:请求路由、入口网关(Ingress)和出口网关(Egress)、服务发现和LB、故障处理、故障注入
K8S提供了 服务注册的能力,Istio基于平台实现服务发现和LB。
envoy一整套故障处理机制:超时、重试、限流、熔断(限额呢?)
故障注入:在系统中认为地设置一些故障,来测试系统的稳定性和系统恢复的能力。Istio支持2种:延迟、中断。
Envoy的LB池
2、策略和遥测
策略:限流(调用频率、速率限制)、白名单和黑名单
Istio依靠 mixer完成。
预先检查
指标数据的采集和和汇总——遥测功能
遥测:Telemetry,从远程设备中收集数据
各种指标(metric)数据,BI数据分析
Envoy代理 发送数据给 Mixer
接入不同的后端设置作为适配器:日志分析系统、监控系统
3、可视化
没有完备的、可观察的监控系统就无法保障系统的稳定性。
监控、追踪工具
Grafana监控工具:Prometheus,指标数据
Jaeger作为追踪系统:调用链跟踪
Kibana系统:日志
4、安全
多个组件协同
Ctadel:密钥和证书管理
Pilot:授权策略等信息分发给Envoy代理
Envoy:根据策略实现服务间安全通信
Mixer:负责管理授权等工作
认证:istio的2种类型的身份认证——传输认证(服务间)、来源认证(最终用户认证,验证终端用户或设备,JWT(JSON Web Token)实现)
授权:沿用K8S的授权方式RBAC(Role-Based Access Control),不同级别的访问控制(命名空间级别、服务级别、方法级别)
Pilot + Envoy代理
---
Istio:
开源的S.M.产品,提供了统一的方式 管理流量、设置安全和监控等服务治理的能力。
数据平面、控制平面。各个组件充分解耦》优雅。第二代。
注:
书中第2章。