Istio:初识Istio
文章内容大部分来自Istio官网,这里属于学习的记录。
随着技术发展,应用从单体服务架构向微服务转变,从单点部署拆分成了数量众多的微服务分布式部署,在给开发带来便利的同时,也带来了许多挑战。
我们需要对微服务平台做许多额外的事情:
- 微服务之间的依赖关系
- 微服务之间的认证授权
- 微服务之间的流量管理
- 日志、追踪、监控
而这些内容,可以说是与业务开发无关的,如果加在应用层,抵消掉的,是拆分微服务所得到的好处。
Istio应运而生
Istio由Google、IBM 和 Lyft 团队协作开发,是完全开源的Service Mesh,可以安装在Kubernetes之上(也可以是其他),对应用程序透明,只需对应用代码进行一点改动甚至无需改动。
Istio通过部署sidecar代理,拦截微服务间的所有网络请求,可以做到:
- HTTP、gRPC、WebSocket 和 TCP 流量的自动负载均衡。
- 通过丰富的路由规则、重试、故障转移和故障注入,可以对流量行为进行细粒度控制。
- 可插入的策略层和配置 API,支持访问控制、速率限制和配额。
- 对出入集群入口和出口中所有流量的自动度量指标、日志记录和追踪。
- 通过强大的基于身份的验证和授权,在集群中实现安全的服务间通信。
理念
Istio生于云计算时代,需要满足混合和多云部署,它有几个关键的设计目标:
- 最大化透明度:使用Istio,运维和开发人员只需要付出很少的代价。通过代理流量,无需对应用程序进行修改。与此同时,Istio提供的功能增加的资源开销很小。
- 可扩展性:被运维和开发人员依赖后,势必会有许多其他的策略或控制来源,Istio策略运行时支持标准扩展机制以便插入到其他服务中。
- 可移植性:Istio不单单可以运行在Kubernetes之上,它应该以最少的代价运行在任何云火预置环境中。
- 策略一致性:有些资源并非在API级别,策略作为独特的服务来维护,拥有自己的API,不是放入代理/sidecar中,可以允许服务根据需要与其集成。
核心功能
- 流量管理:在控制流量上,Istio让我们可以轻松的配置各种部署场景,比如A/B测试、金丝雀部署、流量分割,也拥有服务熔断、超时、重试等服务级别的功能。
- 安全:Istio可以管理服务通讯的认证、授权和加密,不需要应用程序做改动。
- 可观察性:通过Istio,我们拥有了强大的监控功能,包括:服务追踪、监控、日志记录。让我们对所有服务一目了然,能知道服务间是如何影响的。
架构
在逻辑上,Istio由两部分组成: data plane 和 control plane。
- data plane:由 Envoy 作为sidecar部署而成的一组智能代理,协调控制所有微服务和 Mixer 间的网络通信,是一个通用的策略和遥测中心。
- control plane:管理配置着代理来路由流量,配置 Mixer 实施策略和遥测数据。
下面是来自Istio官网的一张架构图:
Istio的架构中,有几个重要的模块,分别是 Envoy, Mixer, Pilot, Citadel, Galley,下面为它们做做介绍。
Envoy
Envoy在Istio架构中作为sidecar部署,代理所有服务的流量,它和业务服务部署在同一个Kubernetes Pod中。它可以完成下面这些功能:
- 动态服务发现
- 负载均衡
- TLS 终止
- HTTP/2 & gRPC 代理
- 熔断器
- 健康检查、基于百分比流量拆分的灰度发布
- 故障注入
- 丰富的度量指标
Mixer
Mixer是一个独立于平台的组件。它在Service Mesh中执行访问控制和使用策略,同时收集Envoy和其他服务的遥测数据。
Mixer包含一个灵活组件模型,使得Istio能接入各种类型的主机环境和基础设施后端,从中抽象出Envoy代理和Istio管理的服务。
Pilot
控制流量行为的高级路由配置通过 Pilot 可以转换为Envoy特定的配置,并在运行时传播到sidecar中。
它可以为Envoy sidecar提供服务发现功能,为智能路由(例如 A/B 测试、金丝雀部署等)和弹性(超时、重试、熔断器等)提供流量管理功能。
Citadel
Citadel为Istio提供服务之间和终端用户身份认证。在Service Mesh中可以升级未加密的流量。
Galley
Galley是Istio进行配置验证、提取、加工和分发的组件。其它组件可以通过Galley,从底层平台(比如Kubernetes)获取用户配置,达到其它组件和平台的解耦。
参考
- 本文链接:https://keepmoving.ren/istio/know-about-istio/
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!