*【1】Istio介绍*
Istio解决了开发人员和运营商在分布式或微服务体系结构中面临的挑战。无论您是从头开始构建还是将现有应用程序迁移到云本地,Istio都能提供帮助。
Istio 提供一种简单的方式来为已部署的服务建立网络,该网络具有负载均衡、服务间认证、监控等功能,而不需要对服务的代码做任何改动。
*1、什么是serve mesh(服务网格)*
现代应用程序通常被设计为微服务的分布式集合,每个微服务集合执行一些离散的业务功能。服务网格是可以添加到应用程序中的专用基础结构层。它允许您透明地添加功能,例如可观察性,流量管理和安全性,而无需将其添加到自己的代码中。术语“服务网格”既描述了用于实现此模式的软件的类型,也描述了在使用该软件时创建的安全性或网络域。
随着分布式服务的部署(例如在基于Kubernetes的系统中)的规模和复杂性不断增长,它变得越来越难以理解和管理。它的要求可以包括发现,负载平衡,故障恢复,指标和监视。服务网格通常还满足更复杂的操作要求,例如A / B测试,金丝雀部署,速率限制,访问控制,加密和端到端身份验证。
服务到服务的通信使分布式应用成为可能。随着服务数量的增长,在应用程序集群内和跨应用程序集群路由此通信变得越来越复杂。Istio帮助减少了这种复杂性,同时减轻了开发团队的压力。
• 治理能力独立(Sidecar)
• 应用程序无感知
• 服务通信的基础设施层
*2、什么是Istio*
Istio是一个开放源代码服务网格,可以透明地分层到现有分布式应用程序上。Istio的强大功能提供了一种统一且更有效的方式来保护,连接和监视服务。Istio是负载平衡,服务到服务身份验证和监视的途径,几乎不需要更改服务代码。其强大的控制平面带来了重要的功能,包括:
· 使用TLS加密,强大的基于身份的身份验证和授权在群集中进行安全的服务间通信
· 自动为HTTP,gRPC,WebSocket和TCP流量进行负载平衡
· 通过丰富的路由规则,重试,故障转移和故障注入对流量行为进行细粒度控制
· 可插拔的策略层和配置API,支持访问控制,速率限制和配额
· 群集内所有流量的自动指标,日志和跟踪,包括群集的入口和出口
Istio专为可扩展性而设计,可以满足多种部署需求。Istio的控制平面在Kubernetes上运行,您可以将部署在该群集中的应用程序添加到网格中,将网格扩展到其他群集,甚至连接在Kubernetes外部运行的VM或其他终结点。
广泛的贡献者,合作伙伴,集成和发行者生态系统扩展了Istio并在多种情况下利用了Istio。您可以自己安装Istio,或者许多供应商提供的产品都可以集成Istio并为您管理它。
*3、Istio架构【旧】*
*Istio具有两个组件:********数据面********和********控制面********。*
****数据面****是服务之间的通信。如果没有服务网格,网络将无法理解正在发送的流量,并且无法根据流量是什么类型或流量是谁来决定。
服务网格使用代理来拦截您的所有网络流量,从而根据您设置的配置提供广泛的应用程序感知功能。
Envoy代理与您在群集中启动的每个服务一起部署,或与VM上运行的服务一起运行。
****控制面****采用您所需的配置及其服务视图,并对代理服务器进行动态编程,并在规则或环境更改时对其进行更新。
*Envoy概念:*
https://www.envoyproxy.io/docs/envoy/latest/intro/what_is_envoy
Envoy是一个L7代理和通信总线设计的大型现代面向服务的体系结构。该项目诞生于以下目的:
网络应该对应用程序透明。当网络和应用程序出现问题时,应该很容易确定问题的根源。
在实践中,实现上述目标是非常困难的。Evnoy试图通过提供以下高级功能来做到这一点。
Istio架构图
*4、核心组件【旧】😗
*Pilot*
*Telemetry*
*Policy*
*Citadel*
*Sidecar-injector*
*Proxy*
*Ingressgateway*
*5、Istio架构【新】*
Envoy Proxy通过sidecar的方式挂载到每一个服务上,同时允许您将Istio功能添加到现有部署中,而无需重新构造或重写代码。Envoy Proxy启用的一些Istio功能和任务包括:
流量控制功能:使用丰富的路由规则对HTTP,gRPC,WebSocket和TCP流量实施细粒度的流量控制。
网络弹性功能:设置重试,故障转移,断路器和故障注入。
安全和身份验证功能:强制执行安全策略,并强制执行通过配置API定义的访问控制和速率限制。
基于WebAssembly的可插拔扩展模型,允许自定义策略实施和网状流量的遥测生成。
Istiod提供服务发现,配置和证书管理。