kubernetes-handbook/usecases/istio.md

5.4 KiB
Raw Blame History

Istio简介

Istio是由Google、IBM和Lyft开源的微服务管理、保护和监控框架。Istio为希腊语意思是”起航“。关于Istio的详细信息请参考Istio官方文档Istio中文文档

TL;DR 关于Istio中的各个组件和一些关键信息请参考下面的mindmap。

Istio的mindmap

简介

使用istio可以很简单的创建具有负载均衡、服务间认证、监控等功能的服务网络而不需要对服务的代码进行任何修改。你只需要在部署环境中例如Kubernetes的pod里注入一个特别的sidecar proxy来增加对istio的支持用来截获微服务之间的网络流量。

目前版本的istio只支持kubernetes未来计划支持其他其他环境。

另外Istio的前身是IBM开源的Amalgam8,追本溯源,我们来看下它的特性。

Amalgam8

Amalgam8的网站上说它是一个Content-based Routing Fabric for Polyglot Microservices,简单、强大且开源。

Amalgam8是一款基于内容和版本的路由布局用于集成多语言异构体微服务。 其control plane API可用于动态编程规则用于在正在运行的应用程序中跨微服务进行路由和操作请求。

以内容/版本感知方式路由请求的能力简化了DevOps任务如金丝雀和红/黑发布A/B Test和系统地测试弹性微服务。

可以使用Amalgam8平台与受欢迎的容器运行时如DockerKubernetesMarathon / Mesos或其他云计算提供商如IBM BluemixGoogle Cloud Platform或Amazon AWS

特性

使用istio的进行微服务管理有如下特性

  • 流量管理控制服务间的流量和API调用流使调用更可靠增强不同环境下的网络鲁棒性。
  • 可观测性:了解服务之间的依赖关系和它们之间的性质和流量,提供快速识别定位问题的能力。
  • 策略实施通过配置mesh而不是以改变代码的方式来控制服务之间的访问策略。
  • 服务识别和安全提供在mesh里的服务可识别性和安全性保护。

未来将支持多种平台不论是kubernetes、Mesos、还是云。同时可以集成已有的ACL、日志、监控、配额、审计等。

架构

下面是Istio的架构图。

Istio架构图

下图是Istio中控制平面与数据平面的交互流程图。

Istio的控制平面和数据平面

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

  • 数据平面由一组智能代理Envoy作为sidecar部署协调和控制所有microservices之间的网络通信。
  • 控制平面:负责管理和配置代理路由流量,以及在运行时执行的政策。

Envoy

Istio使用Envoy代理的扩展版本该代理是以C++开发的高性能代理用于调解service mesh中所有服务的所有入站和出站流量。 Istio利用了Envoy的许多内置功能例如动态服务发现负载平衡TLS终止HTTP/2gRPC代理断路器运行状况检查基于百分比的流量拆分分阶段上线故障注入和丰富指标。

Envoy在kubernetes中作为pod的sidecar来部署。 这允许Istio将大量关于流量行为的信号作为属性提取出来这些属性又可以在Mixer中用于执行策略决策并发送给监控系统以提供有关整个mesh的行为的信息。 Sidecar代理模型还允许你将Istio功能添加到现有部署中无需重新构建或重写代码。 更多信息参见设计目标

Mixer

Mixer负责在service mesh上执行访问控制和使用策略并收集Envoy代理和其他服务的遥测数据。代理提取请求级属性发送到mixer进行评估。有关此属性提取和策略评估的更多信息请参见Mixer配置。 混音器包括一个灵活的插件模型使其能够与各种主机环境和基础架构后端进行接口从这些细节中抽象出Envoy代理和Istio管理的服务。

Istio Manager

Istio-Manager用作用户和Istio之间的接口收集和验证配置并将其传播到各种Istio组件。它从Mixer和Envoy中抽取环境特定的实现细节为他们提供独立于底层平台的用户服务的抽象表示。 此外流量管理规则即通用4层规则和七层HTTP/gRPC路由规则可以在运行时通过Istio-Manager进行编程。

Istio-auth

Istio-Auth提供强大的服务间和最终用户认证使用相互TLS内置身份和凭据管理。它可用于升级service mesh中的未加密流量并为运营商提供基于服务身份而不是网络控制的策略的能力。 Istio的未来版本将增加细粒度的访问控制和审计以使用各种访问控制机制包括属性和基于角色的访问控制以及授权hook来控制和监控访问你服务、API或资源的人员。

参考

Istio开源平台发布Google、IBM和Lyft分别承担什么角色

Istio用于微服务的服务啮合层

Istio Overview