王者的诞生:为何Istio有如此高的呼声?
什么是 Istio?安全
- 官方定义:它是一个彻底开源的服务网格,做为透明的一层接入到现有的分布式应用中。它也是一个平台,能够与任何日志、遥测和策略系统进行集成。Istio 多样化的特性让你可以成功且高效地运行微服务架构,并提供保护、链接和监控微服务的统一方法。
- Service Mesh 的新形态:增长控制平面
为何 Istio 能 C 位出镜?网络
- 出击及时(2017 年 5 月发布 0.1版本)
- 三巨头光环加身
- 第二代 Service Mesh
- Envoy 的加入让 Istio 如虎添翼
- 功能强大
- 各大平台、厂商的支持
为何使用 Istio?架构
- 优点
- 功能强大

Istio 的核心功能

Istio 的发布历程

Istio的自我救赎:为何Istio发生了两次重大的架构变动?
架构变动路线
app
架构 1.0 版本

###架构 1.1 版本
负载均衡
Istio 的架构之殇

MVP理论(最小可用产品)告诉咱们产品迭代的每一个阶段都应是可以让用户可用的:
分布式
回归单体 - Istio 的自我救赎ide
- 原有架构的复杂性
- “复杂是万恶之源,学会中止焦虑,爱上单体” —— Istio 开发团队
架构 1.5 版本

核心功能之流量控制:Istio是如何实现流量控制功能的?
Istio 的流量控制能力
主要功能:微服务
核心资源(CRD):性能
- 虚拟服务(Virtual Service)
- 目标规则(Destination Rule)
- 网关(Gateway)
- 服务入口(Service Entry)
- Sidecar

虚拟服务(Virtual Service)

- 将流量路由到给定目标地址
- 请求地址与真实的工做负载解耦
- 包含一组路由规则
- 一般和目标规则(Destination Rule)成对出现
- 丰富的路由匹配规则
目标规则(Destination Rule)

- 定义虚拟服务路由目标地址的真实地址,即子集(subset)
- 设置负载均衡的方式
网关(Gateway)

服务入口(Service Entry)

Sidecar

- 调整 Envoy 代理接管的端口和协议
- 限制 Envoy 代理可访问的服务
网络弹性和测试
弹性能力:测试
测试能力:
服务的可观察性:如何理解服务可视化的重要性?
什么是可观察性?
- 可观察性 ≠ 监控
- 从开发者的角度探究系统的状态
- 组成:指标、日志、追踪

指标(Metrics)
- 以聚合的方式监控和理解系统行为
- Istio 中的指标分类:
- 代理级别的指标(Proxy-level)
- 服务级别的指标(Service-level)
- 控制平面指标(Control plane)
代理级别的指标
- 收集目标:Sidecar 代理
- 资源粒度上的网格监控
- 允许指定收集的代理(针对性的调试)

服务级别的指标
- 用于监控服务通讯
- 四个基本的服务监控需求:延迟、流量、错误、饱和
- 默认指标导出到 Prometheus(可自定义和更改)
- 可根据需求开启或关闭

控制平面指标
- 对自身组件行为的监控
- 用于了解网格的健康状况

访问日志(Access logs)
- 经过应用产生的事件来了解系统
- 包括了完整的元数据信息(目标、源)
- 生成位置可选(本地、远端,如 filebeat)
- 日志内容
- 应用日志
- Envoy 日志
$ kubectl logs -l app=demo -c istio-proxy
分布式追踪(Distributed tracing)

- 经过追踪请求,了解服务的调用关系
- 经常使用于调用链的问题排查、性能分析等
- 支持多种追踪系统(Jeager、Zipkin、Datadog)
分布式追踪示例

保卫你的网格:Istio是如何设计安全架构的?
Istio 的安全架构

认证

认证方式
- 对等认证(Peer authentication)
- 用于服务间身份认证
- Mutual TLS(mTLS)
- 请求认证(Request authentication)
- 用于终端用户身份认证
- JSON Web Token(JWT)
认证策略

受权

受权策略

- 经过建立 AuthorizationPolicy 实现
- 组成部分
- 选择器(Selector)
- 行为(Action)
- 规则列表(Rules)
- 来源(from)
- 操做(to)
- 匹配条件(when)
受权策略的设置
