你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

适用于 Azure Kubernetes 服务 (AKS) 和已启用 Arc 的 Kubernetes 的 Dapr 扩展

Distributed Application Runtime (Dapr) 将提供各种 API,可帮助你编写和实现简单、可移植、可复原且受保护的微服务。 Dapr API 将作为一个 sidecar 进程与你的应用程序协同运行,可消除你在构建分散式应用程序时可能遇到的常见复杂性,例如:

  • 服务发现
  • 消息中转站集成
  • 加密
  • 可观察性
  • 机密管理

Dapr 可增量采用。 你可以根据需要使用任何 API 构建基块。 了解 Microsoft 为每个 Dapr API 和组件提供的支持级别。

功能和特性

使用 Dapr 扩展在已启用 AKS 或 Arc 的 Kubernetes 群集上预配 Dapr 可消除以下开销:

  • 下载 Dapr 工具
  • 在 AKS 群集上手动安装和管理 Dapr 运行时

可以使用 Azure CLI 或 Bicep 模板在群集上安装、部署和配置 Dapr 扩展。

此外,该扩展通过简单的命令行参数提供针对所有本机 Dapr 配置功能的支持。

Dapr 提供下面一组功能来帮助你在 AKS 上进行微服务开发:

  • 通过群集扩展在 AKS 上轻松预配 Dapr。
  • 通过可以抽象底层技术选项的 HTTP 和 gRPC API 实现可移植性
  • 通过 HTTP 和 gRPC API 进行可靠、安全且可复原的服务到服务调用
  • 通过 CloudEvent 筛选支持和消息传递的至少一次语义轻松发布和订阅消息
  • 通过 Open Telemetry API 收集器实现插接式可观测性和监视
  • 独立于语言,同时提供特定于语言的软件开发工具包 (SDK)
  • 通过 Dapr 扩展与 Visual Studio Code 集成
  • 用于解决分布式应用程序挑战的更多 API

当前支持

Dapr 扩展是 AKS 中 Dapr 唯一支持的 Microsoft 选项。

问题处理

Microsoft 将针对 Dapr 扩展提出的问题分为两部分进行分类:

  • 扩展操作
  • Dapr 运行时(包括 API 和组件)

下表细分了每个类别的支持优先级。

说明 安全风险/回归 功能问题
扩展操作 在扩展操作期间遇到的问题,例如安装/卸载或升级 Dapr 扩展。 Microsoft 会将其优先处理以便立即解决。 Microsoft 根据需要进行调查和解决。
Dapr 运行时 通过扩展使用 Dapr 运行时、API 和组件时遇到的问题。 Microsoft 与开源社区合作,调查高优先级问题。 根据问题的优先级、严重性和大小,Microsoft 可以直接在扩展中解决它们,或者与 Dapr 开源项目合作,以便在修补程序或将来的 Dapr 开源版本中解决这些问题。 在 Dapr 开放源代码中发布修补程序后,它们就会在 Dapr 扩展中提供。 Microsoft 与 Dapr 开源项目一起调查新的功能问题,并与它们协作解决修补程序或未来的 Dapr 开源版本。 Microsoft 目前不会调查已知的开源功能问题。

Dapr 版本

Microsoft 为最新版本的 Dapr 和前两个版本 (N-2) 提供尽力支持。 最新修补程序版本是每个次要版本发布的唯一支持版本。 目前,已启用 AKS 或 Arc 的 Kubernetes 的 Dapr 扩展支持以下 Dapr 版本:

  • 1.14.x
  • 1.13.x
  • 1.12.x

你可以运行 Azure CLI 命令来检索群集位置中的可用版本的列表。

了解如何查看和定位托管 AKS 群集可用的最新稳定 Dapr 版本。

运行时支持

Dapr 扩展支持因管理运行时的方式而异。

自托管

自托管运行时需要手动升级才能保留在支持窗口中。 若要通过扩展升级 Dapr,请按照更新扩展实例说明操作。

在 Dapr 运行时版本终止 Microsoft 支持后,应用程序将继续运行不变。 但是,Microsoft 无法再为该运行时版本提供安全修补程序或相关的客户支持。 如果应用程序在该版本的支持终止日期之后遇到任何问题,建议升级到受支持的版本,以接收最新的安全修补程序和功能。

自动升级

启用自动升级需要仔细考虑。 虽然自动升级使 Dapr 扩展更新到最新的次要版本,但在更新之间可能会遇到中断性变更。 Microsoft 对因自动更新之间的中断性变更而导致的任何停机概不负责。

组件和 API

可以通过 Dapr 扩展使用所有 Dapr 组件和 API,包括处于 alpha 和 beta 状态的 Dapr 组件和 API。 但是,Microsoft 仅对一部分 API 和组件提供支持,并遵循“定义的问题处理策略”。

稳定 Dapr API

Dapr 扩展支持稳定版本的 Dapr API(构建基块)。

Dapr API 状态 说明
服务到服务调用 Stable 发现服务并执行可靠、直接的服务到服务调用(带有自动 mTLS 身份验证和加密)。(#limitations)
状态管理 Stable 为事务和 CRUD 操作提供状态管理功能。
发布/订阅 Stable 允许发布者和订阅方应用通过中间消息代理相互通信。 还可以使用外部组件 JSON 文件创建针对某个主题的声明性订阅
绑定 Stable 基于事件触发应用程序。
执行组件 Stable Dapr 执行组件是消息驱动的单线程工作单元,旨在快速缩放。 例如,在突发密集型工作负载情况下。
可观察性 Stable 将跟踪信息发送到 Application Insights 后端。
机密 Stable 从应用程序代码访问机密或引用 Dapr 组件中的安全值。
配置 Stable 为支持的配置检索并订阅应用程序配置项目。 保留期。

第 1 层与第 2 层组件

支持部分 Dapr 组件。 在该子集中,Dapr 组件分为两个支持类别:第 1 层或第 2 层。

  • 第 1 层组件: 稳定组件,这些组件在关键(安全或严重回归)方案中立即接受调查。 否则,Microsoft 会与开放源代码协作,以在修补程序或下一个常规版本中加以解决。
  • 第 2 层组件: 优先级较低的组件,因为它们不处于稳定状态或由第三方提供商进行调查。

第 1 层组件

API 组件 类型
状态管理 Azure Cosmos DB
Azure blob 存储 v1
Azure 表存储
Microsoft SQL Server
state.azure.cosmosdb
state.azure.blobstorage
state.azure.tablestorage
state.sqlserver
发布和订阅 Azure 服务总线队列
Azure 服务总线主题
Azure 事件中心
pubsub.azure.servicebus.queues
pubsub.azure.servicebus.topics
pubsub.azure.eventhubs
Binding Azure 存储队列
Azure 服务总线队列
Azure Blob 存储
Azure 事件中心
bindings.azure.storagequeues
bindings.azure.servicebusqueues
bindings.azure.blobstorage
bindings.azure.eventhubs
机密管理 Azure Key Vault secretstores.azure.keyvault

第 2 层组件

API 组件 类型
状态管理 PostgreSQL
MySQL & MariaDB
Redis
state.postgresql
state.mysql
state.redis
发布和订阅 Apache Kafka
Redis Streams
pubsub.kafka
pubsub.redis
Binding Azure 事件网格
Azure Cosmos DB
Apache Kafka
PostgreSQL
Redis
Cron
bindings.azure.eventgrid
bindings.azure.cosmosdb
bindings.kafka
bindings.postgresql
bindings.redis
bindings.cron
配置 PostgreSQL
Redis
configuration.postgresql
configuration.redis

云/区域

全球 Azure 云在以下地区支持 AKS 和 Arc:

区域 AKS 支持 Arc for Kubernetes 支持
australiaeast ✔️ ✔️
australiasoutheast ✔️
brazilsouth ✔️
canadacentral ✔️ ✔️
canadaeast ✔️ ✔️
centralindia ✔️ ✔️
centralus ✔️ ✔️
eastasia ✔️ ✔️
eastus ✔️ ✔️
eastus2 ✔️ ✔️
eastus2euap ✔️
francecentral ✔️ ✔️
francesouth ✔️
germanywestcentral ✔️ ✔️
japaneast ✔️ ✔️
japanwest ✔️
koreacentral ✔️ ✔️
koreasouth ✔️
northcentralus ✔️ ✔️
northeurope ✔️ ✔️
norwayeast ✔️
southafricanorth ✔️
southcentralus ✔️ ✔️
southeastasia ✔️ ✔️
southindia ✔️
swedencentral ✔️ ✔️
switzerlandnorth ✔️ ✔️
uaenorth ✔️
uksouth ✔️ ✔️
ukwest ✔️
westcentralus ✔️ ✔️
westeurope ✔️ ✔️
westus ✔️ ✔️
westus2 ✔️ ✔️
westus3 ✔️ ✔️

常见问题解答

Dapr 和服务网格有何差异?

虽然 Dapr 和服务网格确实提供一些共有的功能,但服务网格注重于网络问题,而 Dapr 注重于提供构建基块,使得将应用程序构建为微服务更为容易。 Dapr 以开发人员为中心,而服务网格以基础结构为中心。

Dapr 与服务网格共有的一些常见功能包括:

  • 使用 mTLS 加密来保护服务到服务的通信
  • 服务到服务指标收集
  • 服务到服务分布式跟踪
  • 通过重试实现复原

Dapr 还为状态管理、发布/订阅消息传递、执行组件等提供其他应用程序级构建基块。 但是,Dapr 不提供路由或流量拆分等流量行为的功能。 如果你的解决方案可受益于服务网格提供的流量拆分,请考虑使用 Open Service Mesh

有关 Dapr 和服务网格的详细信息以及如何将它们一起使用,请访问 Dapr 文档

Dapr 机密 API 与机密存储 CSI 驱动程序有何差异?

Dapr 机密 API 和托管的机密存储 CSI 驱动程序都允许集成保存在外部存储中的机密,可以从应用程序代码中抽象机密存储技术。

机密存储 CSI 驱动程序将 Azure 密钥保管库中保存的机密装载为 CSI 卷,以供应用程序使用。

Dapr 通过 RESTful API 公开机密,它可以是:

  • 由应用程序代码调用
  • 配置了各种机密存储

下表列出了每种产品/服务的功能:

Dapr 机密 API 机密存储 CSI 驱动程序
支持的机密存储 本地环境变量(用于开发);本地文件(用于开发);Kubernetes 机密;AWS Secrets Manager;Azure 密钥保管库机密存储;在 Kubernetes 上具有托管标识的 Azure 密钥保管库;GCP Secret Manager;HashiCorp Vault Azure 密钥保管库机密存储
在应用程序代码中访问机密 调用 Dapr 机密 API 访问用作 Kubernetes 机密的装载卷或同步装载内容并设置环境变量
机密轮换 新的 API 调用获取更新的机密 按照可配置的间隔轮询机密并更新装载内容
日志记录和指标 Dapr 附属组件生成日志(可以使用 Azure Monitor 等收集器配置日志),通过 Prometheus 发出指标,并公开一个 HTTP 终结点用于运行状况检查 通过 Prometheus 发出驱动程序和 Azure 密钥保管库提供程序指标

有关 Dapr 中的机密管理的详细信息,请参阅机密管理概述

有关机密存储 CSI 驱动程序和 Azure 密钥保管库提供程序的详细信息,请参阅机密存储 CSI 驱动程序概述

托管的 Dapr 群集扩展与开源 Dapr 产品/服务有何差异?

使用托管的 Dapr 群集扩展是在 AKS 群集上预配 Dapr 的最简单方法。 使用该扩展,可以通过选择启用自动升级来减轻 Dapr 运行时版本的管理负担。 此外,该扩展使用智能默认设置安装 Dapr(例如,在高可用性模式下预配 Dapr 控制平面)。

通过 helm 或 Dapr CLI 安装 Dapr 开放源代码时,开发人员和群集维护人员还负责运行时版本和配置选项。

最后,Dapr 扩展是 AKS 的扩展,因此其支持策略预期与其他 AKS 功能相同。

详细了解如何从 Dapr 开放源代码迁移到 AKS 的 Dapr 扩展

如何使用托管标识通过 Microsoft Entra ID 对 Dapr 组件进行身份验证?

如果我已通过某种方法(例如 Helm)安装了 Dapr,如何切换为使用 Dapr 扩展?

建议的指导是从 AKS 群集中完全卸载 Dapr,然后通过群集扩展重新安装。 你还可以检查现有的 Dapr 安装并将其迁移到 AKS。

如果通过 AKS 扩展安装 Dapr,我们建议继续使用该扩展以供将来管理 Dapr,而不是 Dapr CLI。 将这两个工具组合使用会导致冲突,并导致意外的行为。

后续步骤