Istio分步指南(一):Istio简介
原文地址 https://medium.com/faun/istio-step-by-step-part-01-introduction-to-istio-b9fd0df30a9e
什么是 Istio?
如今,微服务已成为公司使用的大趋势。开发人员使用微服务来构建可移植性,而运维人员则管理超大型混合和多云部署。 Istio 是开发人员用来降低其部署复杂性的最新技术之一。
Istio 是一个开源服务网格,可透明地分层部署到现有的分布式应用程序上。
Istio 的各种功能集使您能够成功,高效地运行分布式微服务体系结构,并提供统一的方式来保护,连接和监视微服务。
那么,“什么是服务网格呢?” 服务网格是组成应用程序及其之间的交互的微服务网络。服务网格需要处理:
- 服务发现
- 负载均衡
- 故障恢复
- 指标
- 监控
- A / B 测试
- 金丝雀发布
- 限速
- 访问控制
- 端到端认证
为何 Istio 如此重要?
Istio 通过负载平衡,服务到服务的身份验证,监视等功能,可以轻松创建已部署服务的网络。 Istio 通过在整个环境中部署特殊的 Sidecar 代理来支持服务,以拦截微服务之间的所有网络通信,然后使用 “控制平面” 功能配置和管理 Istio,其中包括:
-
HTTP,gRPC,WebSocket 和 TCP 通信的自动负载均衡。
gRPC — 可在任何环境中运行的现代开源高性能 RPC 框架
- 通过丰富的路由规则,重试,故障转移和故障注入对流量行为进行细粒度控制
- 可插拔的策略层和配置 API,支持访问控制,速率限制和配额。
-
集群内所有流量的自动度量,日志和跟踪,包括集群的入口和出口。
集群入口-允许入站连接到达集群服务的一组规则。 集群出口-允许出站连接到达集群服务的一组规则。
- 通过强大的基于身份的身份验证和授权,确保群集中服务之间的通信安全。
让我们看看 Istio 的核心功能
主要有如下 5 个核心功能:
- 流量管理
- 安全
- 可观察性
- 平台支持
- 集成和定制
我将在以后的教程中更深入地讨论上述核心功能。
现在,我们来看看 Istio 服务网格的体系结构。
Istio 服务网格由数据平面和控制平面两部分组成。
- 数据平面:由名为 Envoy 的一组智能代理组成,这些代理被部署为 Sidecar。这些代理与 Mixer(通用遥测集线器)一起调解和控制微服务之间的所有网络通信。
- 控制平面:管理和配置代理以路由流量。另外,它还配置 Mixer 以执行策略并收集遥测。
下面我们来看下有关该架构的一些最重要的组件。
第一个是Envoy。 Envoy 是使用 C ++开发的高性能代理,可为服务网格中的所有服务调解所有入站和出站流量。一些内置功能:
- 动态服务发现
- 负载均衡
- TLS 终止
- HTTP / 2 和 gRPC 代理
- 断路器
- 健康检查
- 分阶段推出,按百分比分配流量
- 故障注入
- 丰富的指标
Envoy 被部署为同一 Kubernetes 容器中相关服务的辅助工具。通过这种部署,Istio 可以提取有关流量行为的大量信号作为属性。
属性:Istio 策略和遥测功能的基本概念。属性是一小部分数据,用于描述特定服务请求或环境请求的单个属性。例如:属性可以指定特定请求的大小,操作的响应代码,请求来自的 IP 地址等。每个属性都有一个名称和一个类型。类型定义属性保存的数据类型。
本质上,Mixer 是属性处理机。Envoy Sidecar 为每个请求调用 Mixer,为 Mixer 提供了一组描述请求和请求周围环境的属性。根据其配置和给定的特定属性集,Mixer 生成对各种基础架构后端的调用。
接下来是 Mixer。Mixer 是独立于平台的组件,可访问整个服务网格的控制和使用策略,并从 Envoy 和其他服务收集遥测数据。代理提取请求级别属性,并将其发送到 Mixer 进行评估。
这包括一个灵活的插件模型。该模型使 Istio 可以与各种主机环境和基础架构后端交互。因此,Istio 从这些细节中抽象了 Envoy 代理和 Istio 管理的服务。
Pilot 为 Envoy 边车提供服务发现,智能路由(A / B 测试,金丝雀部署等)的流量管理功能和弹性(超时,重试,断路器等)。 Pilot 将控制流量行为的高级路由规则转换为特定于 Envoy 的配置,并在运行时将其传播到 Sidecar。 Pilot 提取了特定于平台的服务发现机制,并将其合成为标准格式,任何符合 Envoy 数据平面 API 的 Sidecar 都可以使用。这种松散的耦合使 Istio 可以在 Kubernetes,Consul 或 Nomad 等多种环境中运行,同时为流量管理保留相同的操作界面。
Citadel Istio 服务网格的主要组件之一。它通过内置的身份和凭据管理提供强大的服务到服务和最终用户身份验证。这可用于升级服务网格中的未加密流量。使用 Citadel,运维人员可以根据服务身份而非网络控制来实施策略。
最后一个是 Galley。它负责验证用户编写的 Istio API 配置。随着时间的推移,Galley 将接任 Istio 的顶级配置接收,处理和分发组件的职责。
以上所有这些都是 Istio 的介绍。我希望你现在对 Istio 以及为什么它如此重要有个了解。下一个教程将是《 Istio 入门》。保持关注,有什么想法可以评论哦。