Istio源码分析-部分

Istio 架构概览

Istio 是一个开放平台,用于在微服务之间提供统一的集成方式、管理微服务间的流量、执行策略并聚合遥测数据。它主要由以下几个组件组成:

  1. Envoy:作为每个微服务的 Sidecar 代理,处理集群内服务间以及服务与外部服务之间的进出流量。
  2. Istiod:Istio 的控制平面,提供服务发现、配置和证书管理。
    • Pilot:负责运行时配置代理。
    • Citadel:负责证书的发行和轮换。
    • Galley:负责验证、摄取、聚合、转换和分发 Istio 配置。
  3. Operator:提供用户友好的选项来操作 Istio 服务网格。
Istio is composed of these components:

- **Envoy** - Sidecar proxies per microservice to handle ingress/egress traffic
   between services in the cluster and from a service to external
   services. The proxies form a _secure microservice mesh_ providing a rich
   set of functions like discovery, rich layer-7 routing, circuit breakers,
   policy enforcement and telemetry recording/reporting
   functions.

  > Note: The service mesh is not an overlay network. It
  > simplifies and enhances how microservices in an application talk to each
  > other over the network provided by the underlying platform.

- **Istiod** - The Istio control plane. It provides service discovery, configuration and certificate management. It consists of the following sub-components:

    - **Pilot** - Responsible for configuring the proxies at runtime.

    - **Citadel** - Responsible for certificate issuance and rotation.

    - **Galley** - Responsible for validating, ingesting, aggregating, transforming and distributing config within Istio.

- **Operator** - The component provides user friendly options to operate the Istio service mesh.

Istio 关键功能

Istio Pilot

Pilot 的主要职责是动态配置代理(Envoy sidecars 和 ingress 等)。它通过以下几个步骤实现:

  • 配置摄取:从 Kubernetes、文件或通过 xDS 读取不同的资源,并将它们聚合以构建代理配置。
  • 配置转换:将聚合的数据转换为代理可以理解的配置。
  • 配置服务:通过双向 gRPC 流接受代理客户端的连接,并为它们提供所需的配置。
## Proxy Configuration

Istiod's primary role - and most code - is to dynamically configure proxies (Envoy sidecars and ingress, gRPC, ztunnel, and more). This roughly consists of 3 parts:
1. Config ingestion (inputs to the system)
1. Config translation
1. Config serving (XDS)

Istio Agent

Istio agent 作为 Istiod 和 Envoy 之间的中间代理,主要负责以下功能:

  • 工作负载证书分发:Envoy 通过 SDS 请求向 agent 请求证书,agent 向 CA 提交 CSR。
  • 配置分发:Envoy 通过 ADS 请求向 agent 请求配置,agent 将请求转发给 Istiod。
At a high level, the Istio agent acts as an intermediate proxy between Istiod and Envoy. This is done
at two levels. For distributing workload certificates, Envoy will send [SDS](https://www.envoyproxy.io/docs/envoy/latest/configuration/security/secret)
requests to the agent, causing the agent to submit a CSR to the configured CA (generally Istiod). For other configuration,
Envoy will send [ADS](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/operations/dynamic_configuration#aggregated-xds-ads)
requests to the agent, which will be forwarded to the configured discovery server (general Istiod).

对 Istio 的理解

Istio 通过其控制平面和数据平面的设计,提供了一个强大的服务网格解决方案,使得微服务之间的通信更加安全、可控和高效。通过 Envoy 代理的使用,Istio 能够在运行时动态地管理和配置微服务之间的交互,而无需修改应用程序的代码。此外,Istio 的设计还考虑了易用性和可操作性,通过提供 Istio Operator 和丰富的配置管理功能,简化了服务网格的部署和管理过程。


Istio 组件划分与架构

Istio 主要由以下几个组件组成,每个组件负责不同的功能,组织在不同的文件夹中:

1. Envoy

  • 组件名称: Envoy
  • 功能: 处理微服务之间的进出流量。
  • 文件夹名称: [proxy](file:///d%3A/PythonProj/istio-master/README.md#89%2C81-89%2C81)

2. Istiod

  • 组件名称: Istiod
  • 功能: Istio 的控制平面,负责服务发现、配置和证书管理。
  • 子组件:
    • Pilot: 动态配置代理。
    • Citadel: 证书发行和轮换。
    • Galley: 配置的验证和分发。
  • 文件夹名称: [pilot](file:///d%3A/PythonProj/istio-master/README.md#85%2C8-85%2C8), [security](file:///d%3A/PythonProj/istio-master/README.md#91%2C8-91%2C8)

3. Operator

  • 组件名称: Operator
  • 功能: 提供用户友好的选项来操作 Istio 服务网格。
  • 文件夹名称: [operator](file:///d%3A/PythonProj/istio-master/README.md#82%2C8-82%2C8)

4. Istioctl

  • 组件名称: Istioctl
  • 功能: 命令行工具,用于管理 Istio 服务网格。
  • 文件夹名称: [istioctl](file:///d%3A/PythonProj/istio-master/README.md#79%2C8-79%2C8)

5. Addons

  • 组件名称: Addons
  • 功能: 提供与 Istio 集成的附加服务,如 Prometheus 和 Grafana。
  • 文件夹名称: [samples/addons](file:///d%3A/PythonProj/istio-master/samples/addons/README.md#15%2C18-15%2C18)

组件架构图

以下是 Istio 的组件架构图,展示了各个组件如何相互作用:

+----------------+    +---------+    +----------+
|      Envoy     |    |  Istiod  |    | Operator |
| (Data Plane)   +--->+ (Control +--->+          |
|                |    |  Plane)  |    |          |
+----------------+    +----+-----+    +----------+
                           |
                           v
                     +-----+------+
                     |  Istioctl  |
                     |            |
                     +------------+

每个组件都在 Istio 的 GitHub 仓库中有对应的文件夹,可以在这些文件夹中找到相关的代码和文档。

Istio API GitHub 仓库 中,您可以找到 Istio 项目的 API 定义和常见配置格式。这些定义使用 protobuf 语法指定,涵盖了 Istio 的各个组件级 API 和配置。

主要内容和功能

  1. API 定义:包括网络、安全、遥测等多个方面的 API 定义。
  2. 配置格式:定义了如何配置 Istio 的各种资源,如网关、虚拟服务等。
  3. 生成代码:通过运行 make gen 命令生成相应的 Go、Python 代码和 Kubernetes 自定义资源定义文件。
  4. 向后兼容性:对于向后不兼容的更改,通过 buf breaking 测试来阻止,确保 API 的稳定性。

文件结构

仓库中包含多个目录,每个目录针对不同的 API 部分,例如:

  • networking:包含与网络相关的 API 定义。
  • security:包含与安全相关的 API 定义。
  • telemetry:包含与遥测相关的 API 定义。

使用和贡献

  • 更新 API:更新 protobuf 定义后,需要生成相应的代码文件并在同一个 PR 中提交。
  • 贡献指南:所有对 API 的更改必须符合仓库的 API 指南。

这个仓库是 Istio 项目的核心部分,为 Istio 的配置和扩展提供了基础。如果您是开发者或者对 Istio 的内部工作机制感兴趣,这个仓库是一个宝贵的资源。

  • 22
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值