适用于 Azure Kubernetes 服务的基于 Istio 的服务网格加载项

Istio 解决了开发人员和操作员使用分布式或微服务体系结构时面临的挑战。 基于 Istio 的服务网格加载项为 Azure Kubernetes 服务 (AKS) 提供官方支持和测试的集成。

什么是服务网格?

新式应用程序通常构建为微服务的分布式集合,并由每个微服务集合执行一些离散的业务功能。 服务网格是可添加到应用程序的专用基础结构层。 使用服务网格,可以透明方式添加可观测性、流量管理和安全性等功能,而无需将它们添加到自己的代码中。 术语服务网格描述了用于实现此模式的软件类型,以及使用该软件时创建的安全或网络域。

随着分布式服务部署(例如,在基于 Kubernetes 的系统中)的规模和复杂性不断增加,可能会增加理解和管理的难度。 可能需要实现发现、负载均衡、故障恢复、指标和监视等功能。 服务网格还可以满足更复杂的操作要求,例如 A/B 测试、Canary 部署、速率限制、访问控制、加密和端到端身份验证。

服务到服务通信使分布式应用程序成为可能。 随着服务数量的增加,在应用程序群集内和跨应用程序群集路由此通信变得越来越复杂。 Istio 有助于降低这种复杂性,同时减轻开发团队的压力。

什么是 Istio?

Istio 是一个开放源代码服务网格,它以透明方式分层到现有的分布式应用程序上。 Istio 的强大功能提供了一种统一且更高效的方式来保护、连接和监视服务。 Istio 支持负载均衡、服务到服务身份验证和监视 - 只需更改少量或无需更改服务代码。 其强大的控制平面带来了重要功能,其中包括:

  • 使用 TLS 加密、基于标识的强身份验证和授权保护群集中的服务到服务通信。
  • 针对 HTTP、gRPC、WebSocket 和 TCP 流量进行自动负载均衡。
  • 通过丰富的路由规则、重试、故障转移和故障注入对流量行为进行精细控制。
  • 支持访问控制、速率限制和配额的可插入策略层和配置 API。
  • 针对群集中的所有流量(包括流入量和流出量)的自动指标、日志和跟踪。

加载项与开放源代码 Istio 有何不同?

此服务网格加载项使用开放源代码 Istio 并在其基础上构建。 加载项风格提供以下额外优势:

  • Istio 版本已经过测试和验证,可以兼容受支持版本的 Azure Kubernetes 服务。
  • Microsoft 处理 Istio 控制平面的缩放和配置
  • Microsoft 调整 AKS 组件的缩放,例如在启用 Istio 时的 coredns
  • Microsoft 在用户触发时为 Istio 组件提供托管生命周期(升级)。
  • 经验证的外部和内部流入量设置。
  • 为加载项提供的官方 Azure 支持。

限制

适用于 AKS 的基于 Istio 的服务网格加载项具有以下限制:

  • 加载项不适用于使用面向 AKS 的开放服务网格的 AKS 群集。
  • 加载项不适用于已在加载项安装外部安装了 Istio 的 AKS 群集。
  • 此加载项不支持添加与要在网格下添加的虚拟节点关联的 Pod。
  • Istio 不支持 Windows Server 容器。
  • 目前阻止了基于以下自定义资源的网格自定义 - EnvoyFilter, ProxyConfig, WorkloadEntry, WorkloadGroup, Telemetry, IstioOperator, WasmPlugin
  • Istio 加载项目前尚不支持用于 Istio 入口网关的或用于管理网格流量 (GAMMA) 的网关 API。

后续步骤