Istio

概述

Istio 是一种功能全面、可自定义且可扩展的服务网格。

体系结构

Istio 提供了由基于 Envoy 的挎斗组成的数据平面。 这些智能代理控制进出网格应用和工作负荷的所有网络流量。

控制平面通过以下组件管理配置、策略和遥测:

  • Mixer - 强制实施访问控制和使用策略。 从代理收集推送到 Prometheus 中的遥测。

  • Pilot - 为代理提供服务发现和流量管理策略/配置。

  • Citadel - 提供允许在服务之间使用 mTLS 的标识和安全功能。

  • Galley - 抽取配置并将其提供给组件。

下面的体系结构关系图演示了数据平面和控制平面内的各种组件如何交互。

Overview of Istio components and architecture.

选择条件

在为工作负荷评估 Istio 时,请务必了解并考虑以下方面:

设计目标

以下设计目标指导 Istio 项目:

  • 将透明度最大化 - 允许通过最小量的工作完成采用操作,从系统获取真正的价值。

  • 扩展性 - 必须能够扩展并根据不断变化的需求进行调整。

  • 可移植性 - 在不同类型的环境中(不管是在云中还是在本地)轻松地运行。

  • 策略一致性 - 跨各种资源在策略定义方面保持一致性。

功能

Istio 提供下述功能集:

  • 网格 - 网关(多群集)、虚拟机(网格扩展)

  • 流量管理 - 路由、拆分、超时、断路器、重试、流入量、流出量

  • 策略 - 访问控制、速率限制、配额、自定义策略适配器

  • 安全性 - 身份验证 (jwt)、授权、加密 (mTLS)、外部 CA(HashiCorp 保管库)

  • 可观测性 - 黄金指标、镜像、跟踪、自定义适配器、prometheus、grafana

方案

Istio 非常适合以下方案,建议采用:

  • 需要扩展性和丰富的功能集

  • 进行网格扩展,使之包含基于 VM 的工作负荷

  • 多群集服务网格

后续步骤

以下文档介绍如何在 Azure Kubernetes 服务 (AKS) 上安装 Istio:

还可以进一步探索 Istio 概念和其他部署模型: