系列目录
云原生架构(一)原理概览
云原生架构(二)环境搭建
云原生架构(三)简单样例
云原生架构(四)源码详解
云原生架构(五)总结提高
一、行业现状
云原生架构真正进入大众视野要从2017年Kubernetes一统虚拟和容器技术后,Kubernetes提供了强大的虚拟化基础设施。基于 Kubernetes 之上构筑的服务网格(Service Mesh)是目前最先进的架构风格(服务端架构演进史),即通过中间人流量劫持的方式,以介乎于应用和基础设施之间的边车代理(Sidecar)来做到既让用户代码可以专注业务需求,不必关注分布式的技术,又能实现几乎不亚于Spring Cloud 的那种通过代码来解决分布式问题的可配置、安全和可观测性。本文就从Istio入手,剖析云原生架构。
二、原理概览
2.1 愿景&概念
Istio官网首页一句话概括了Istio的愿景:
Simplify observability, traffic management, security, and policy with the leading service mesh.
使用领先的服务网格简化可观察性、流量管理、安全性和策略。
- 流量管理:Istio 的流量路由规则可以让您很容易的控制服务之间的流量和 API 调用。Istio 简化了服务级别属性的配置,比如熔断器、超时和重试,并且能轻松的设置重要的任务,如 A/B 测试、金丝雀发布、基于流量百分比切分的概率发布等。
-
安全:提供强大的身份,强大的策略,透明的 TLS 加密,认证,授权和审计(AAA)工具来保护你的服务和数据。Istio 安全的目标是:
- 默认安全:应用程序代码和基础设施无需更改
- 深度防御:与现有安全系统集成以提供多层防御
- 零信任网络:在不受信任的网络上构建安全解决方案
- 可观测性:Istio 为网格内所有的服务通信生成详细的遥测数据。这种遥测技术提供了服务行为的可观测性,使运维人员能够排查故障、维护和优化应用程序。Istio 生成以下类型的遥测数据:
- 指标:Istio 基于 4 个监控的黄金标识(延迟、流量、错误、饱和)生成了一系列服务指标。Istio 还为网格控制平面提供了更详细的指标。除此以外还提供了一组默认的基于这些指标的网格监控仪表板。
- 分布式追踪:Istio 为每个服务生成分布式追踪 span,运维人员可以理解网格内服务的依赖和调用流程。
- 访问日志:当流量流入网格中的服务时,Istio 可以生成每个请求的完整记录,包括源和目标的元数据。
2.2 架构
Istio 服务网格从逻辑上分为数据平面和控制平面。
-
数据平面 由一组智能代理(Envoy)组成,被部署为 Sidecar。这些代理负责协调和控制微服务之间的所有网络通信。它们还收集和报告所有网格流量的遥测数据。
-
控制平面 管理并配置代理来进行流量路由。
数据平面Envoy
Istio 使用 Envoy 代理的扩展版本。Envoy 是用 C++ 开发的高性能代理,用于协调服务网格中所有服务的入站和出站流量。Envoy 代理被部署为服务的 Sidecar,在逻辑上为服务增加了 Envoy 的许多内置特性,例如:
- 动态服务发现
- 负载均衡
- TLS 终端
- HTTP/2 与 gRPC 代理
- 熔断器
- 健康检查
- 基于百分比流量分割的分阶段发布
- 故障注入
- 丰富的指标
这种 Sidecar 部署允许 Istio 可以执行策略决策,并提取丰富的遥测数据,接着将这些数据发送到监视系统以提供有关整个网格行为的信息。
Sidecar 代理模型还允许您向现有的部署添加 Istio 功能,而不需要重新设计架构或重写代码。
由 Envoy 代理启用的一些 Istio 的功能和任务包括:
- 流量控制功能:通过丰富的 HTTP、gRPC、WebSocket 和 TCP 流量路由规则来执行细粒度的流量控制。
- 网络弹性特性:重试设置、故障转移、熔断器和故障注入。
- 安全性和身份认证特性:执行安全性策略,并强制实行通过配置 API 定义的访问控制和速率限制。
- 基于 WebAssembly 的可插拔扩展模型,允许通过自定义策略执行和生成网格流量的遥测。
控制平面Istiod
Istiod 提供服务发现、配置和证书管理。
Istiod 将控制流量行为的高级路由规则转换为 Envoy 特定的配置,并在运行时将其传播给 Sidecar。Pilot 提取了特定平台的服务发现机制,并将其综合为一种标准格式,任何符合 Envoy API 的 Sidecar 都可以使用。
Istiod 安全通过内置的身份和凭证管理,实现了强大的服务对服务和终端用户认证。您可以使用 Istio 来升级服务网格中未加密的流量。使用 Istio,运营商可以基于服务身份而不是相对不稳定的第 3 层或第 4 层网络标识符来执行策略。此外,您可以使用 Istio 的授权功能控制谁可以访问您的服务。
Istiod 充当证书授权(CA),并生成证书以允许在数据平面中进行安全的 mTLS 通信。
标签:原生,架构,Envoy,概览,Istio,流量,网格,服务 From: https://www.cnblogs.com/dennyzhangdd/p/16954760.html