istio 原理简介

前导

由于 istio 自 1.5 版本以后架构上有了较大变化,控制面从多组件变成了单体的 istiod 组件,所以下文会先介绍 1.5 之前的架构,再介绍 1.5 之后的,是一个由繁到简的过程。

istio 1.5 之前架构

istio 原理简介_第1张图片

Istio 的架构分为控制平面和数据平面

  • 数据平面:由一组智能代理(Envoy)以 sidecar 模式部署,协调和控制所有服务之间的网络通信。

  • 控制平面:负责管理和配置代理路由流量,以及在运行时执行的政策。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GZGTSBVw-1637308116914)(https://mmbiz.qpic.cn/mmbiz_jpg/YZibCWq4rxDicG0d4P48YIchbJcrvwoMiayRkp9cFcAoZlliaCTiaO0rwOoe7DHb21ibh4qM1oYMJ9zicDaw45qmIicT4g/640?wx_fmt=jpeg)]

可以看到控制面(control plane )组件众多,下图是 1.1 版本所包含的组件:

istio 原理简介_第2张图片

istio 工作原理

我们先按照 1.5 版本之前的架构描述

Sidecar  注入 (envoy)

istio 原理简介_第3张图片

详细的注入过程可以参考:https://blog.yingchi.io/posts/2020/6/istio-sidecar-injection.html

istio 原理简介_第4张图片

连接 (pilot)

istio 原理简介_第5张图片

控制 && 观测 (mixer telemetry、mixer policy)

istio 原理简介_第6张图片

保护(citadel)

istio 原理简介_第7张图片

配置

Galley 原来仅负责进行配置验证,1.1 后升级为整个控制面的配置管理中心,除了继续提供配置验证功能外,Galley 还负责配置的管理和分发,Galley 使用 网格配置协议 (Mesh Configuration Protocol) 和其他组件进行配置的交互。

提供 istio 中的配置管理服务,验证 Istio 的 CRD 资源的合法性

istio 各组件功能及作用

  • istio-polit: 服务发现,向数据平面下发规则,包括 VirtualService、DestinationRule、Gateway、ServicEntry 等流量治理规则,也包括认证授权等安全规则。

  • istio-telemetry: 专门收集遥测数据的 mixer 服务组件。

  • Istio-policy: 另外一个 mixer 服务,可以对接如配额、授权、黑白名单等不同的控制后端,对服务间的访问进行控制。

  • Istio-citadel: 核心安全组件,提供了自动生成、分发、轮换与撤销秘钥和证书的功能。

  • Istio-galley: 配置管理的组件,验证配置信息的格式和内容的正确性,并将这些配置信息提供给管理面的 Pilot 和 Mixer 使用。

  • Istio-sidecar-injector: 负责自动注入的组件。

  • Istio-proxy: 数据面的轻量代理。

  • Istio-ingressgateway: 入口处的 gateway。

istio 1.5 之后架构

istio 原理简介_第8张图片

之前版本的 istio 对组件进行了很好的解耦,组件们各司其职,当然也带来了组件比较多的问题。可以看到新版本将众多组件包装在了一起叫  istiod

所以新版本 istio 核心组件就只剩下一个:istiod

参考

  • https://www.infoq.cn/article/dtfjv1lu8fifvfqxmseh

  • https://blog.yingchi.io/posts/2020/6/istio-sidecar-injection.html

  • https://istio.io/

小盒子的技术分享

有关编程、技术类知识的分享及生活感悟

86篇原创内容

公众号

你可能感兴趣的:(istio)