SideCar 解释的参考文档 Qcon2017 实录 | Service Mesh:下一代微服务
Istio 服务网格被逻辑的区分为数据层和控制层。html
下图展现了组成每层的不一样组件。c++
SideCar解释git
Sidecar 这个词中文翻译为边车,或者车斗,也有一个乡土气息浓重的翻译叫作边三轮。Sidecar 这个东西出现的时间挺长的,它在原有的客户端和服务端之间加多了一个代理。github
Istio 使用 Envoy 代理的扩展版本,一个使用 c++开发的高性能代理,为了调节在服务网格中全部服务的进出流量。Istio 利用了Envoy的许多内建特性,好比动态服务发现,负载均衡,TLS终止,HTTP/2 & gRPC 代理,断路器,健康检查,分阶段的基于百分比的流量分配,故障注入和丰富的度量。后端
Envoy 做为一个 SideCar 部署与相关服务部署在相同的Kubernetes pod。这容许Istio提取大量流量行为的信号如Istio 属性,反过来能够在Mixer使用执行策略决定,并被发送到监控系统来提供关于整个网格行为的信息。sidecar 代理模型容许你添加Istio能力到一个已经存在的部署而不须要从新构建或从新写代码。你能够在咱们的设计目标中阅读关于为何咱们选择这种方式的更多的信息api
Mixer 是一个平台无关的组件,负责执行访问控制,跨服务网格使用策略,以及收集从Envoy代理和其余服务自动探测到的数据。代理提取请求等级属性,被发送给Mixer用于计算。这个属性提取更多的信息能够在Mixer 配置中找到,Mixer包含一个很是灵活的插件模型使其可以和各类主机环境和后端基础架构交互,从这些细节中抽象出Envoy代理和Istio管理的服务。网络
Pilot为Envoy sidecar 提供了服务发现功能,为智能路由提供了流量管理能力(好比A/B测试,金丝雀发布等等),以及弹性(超时控制,重试,断路器等等)。它转换高级路由规则,将流量行为控制在Envoy特定的配置中,而且在运行期把他们传播到sidecars。Pilot抽象特定平台的服务发现方法,并将他们合成为可被任何sidecar消费的标准格式,其符合Envoy 数据层 API。这种松散的耦合容许Istio运行在多个环境中(好比,Kubernetes, Consul/Nomad等等),然而只须要维护相同操做接口进行流量管理。架构
Pilot 的架构图负载均衡
Istio 的流量管理:ide
Istio-Auth使用 mutual TLS提供强大的服务到服务的和终端用户的身份认证,具备内置的身份和凭证管理。它能够用于升级在服务网格中未加密的流量,提供基于服务身份策略而不是网络控制的执行能力。Istio 的将来版本将增长细粒度的访问控制,审计控制以及监控谁访问了你的服务、API或者资源,使用各类访问控制机制,包括属性和基于角色的访问控制以及受权钩子。