# istio架构

## 架构

Istio服务网格在逻辑上分为数据平面和控制平面。

* 该数据平面是由一组智能代理(部署为边车的envoy)。这些代理介导并控制微服务之间的所有网络通信。他们还收集并报告所有网状网络流量的遥测。
* 在控制平面管理和配置代理来路由流量。

下图显示了组成每个平面的不同组件:

![](https://preliminary.istio.io/latest/docs/ops/deployment/architecture/arch.svg)

## 组件

以下各节简要概述了Istio的每个核心组件。

### envoy

Istio使用Envoy代理的扩展版本 。Envoy是使用C ++开发的高性能代理,可为服务网格中的所有服务调解所有入站和出站流量。Envoy代理是与数据平面流量交互的唯一Istio组件。

Envoy代理被部署为服务的辅助工具,通过Envoy的许多内置功能在逻辑上增强了服务,例如:

* 动态服务发现
* 负载均衡
* TLS终止
* HTTP/2和gRPC代理
* 断路器
* 健康检查
* 分阶段推出,按百分比分配流量
* 故障注入
* 丰富的指标

这种边车部署使Istio可以执行策略决策并提取丰富的遥测数据,然后将其发送到监视系统以提供有关整个网格行为的信息。

Sidecar代理模型还允许您将Istio功能添加到现有部署中,而无需重新构造或重写代码。

Envoy代理启用的一些Istio功能和任务包括:

* 流量控制功能:使用丰富的路由规则对HTTP,gRPC,WebSocket和TCP流量实施细粒度的流量控制。
* 网络弹性功能:设置重试,故障转移,断路器和故障注入。
* 安全和身份验证功能:强制执行安全策略,并强制执行通过配置API定义的访问控制和速率限制。
* 基于WebAssembly的可插拔扩展模型,允许自定义策略实施和网状流量的遥测生成。

## istiod

Istiod提供服务发现,配置和证书管理。

Istiod将控制交通行为的高级路由规则转换为Envoy特定的配置,并在运行时将其传播到边车。Pilot提取了特定于平台的服务发现机制,并将它们合成为标准格式,任何符合Envoy API的 Sidecar都可以使用。

Istio可以支持针对多个环境(例如Kubernetes或VM)的发现。

您可以使用Istio的 流量管理API 来指示Istiod优化Envoy配置,以对服务网格中的流量进行更精细的控制。

Istiod安全性通过内置的身份和凭据管理实现了强大的服务到服务和最终用户身份验证。您可以使用Istio升级服务网格中的未加密流量。使用Istio,运营商可以基于服务身份而不是相对不稳定的第3层或第4层网络标识符来实施策略。此外,您可以使用Istio的授权功能 来控制谁可以访问您的服务。

Istiod充当证书颁发机构(CA),并生成证书以允许在数据平面中进行安全的mTLS通信。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://rocdu.gitbook.io/deep-understanding-of-istio/2.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
