Dapr 简化了在云和边缘上运行的可复原、无状态和有状态应用程序的构建,并支持语言和开发框架的多样性。 借助 Dapr 的挎斗体系结构,你可以保持代码不受平台影响,同时应对构建微服务的挑战,例如:
- 可靠且安全地调用其他服务
- 采用发布/订阅模式构建事件驱动的应用
- 生成可在多个云服务和主机(例如,Kubernetes 与虚拟机)上移植的应用程序
注释
如果计划在 Kubernetes 生产环境中安装 Dapr,请参阅 Dapr 生产指南。
工作原理
Dapr 扩展使用 Azure CLI 或 Bicep 模板在已启用 AKS 或 Arc 的 Kubernetes 群集上预配 Dapr 控制平面,创建以下 Dapr 服务:
| Dapr 服务 | 说明 |
|---|---|
dapr-operator |
管理 Dapr 的组件更新和 Kubernetes 服务终结点(状态存储、发布/订阅等) |
dapr-sidecar-injector |
将 Dapr 注入到批注的部署 Pod 中并添加环境变量 DAPR_HTTP_PORT 和 DAPR_GRPC_PORT,使用户定义的应用程序轻松地与 Dapr 进行通信,而无需对 Dapr 端口值进行硬编码。 |
dapr-placement |
仅限参与者使用。 创建将执行组件实例映射到 Pod 的映射表 |
dapr-sentry |
管理服务之间的 mTLS 并充当证书颁发机构。 有关详细信息,请参阅安全概述。 |
在群集上安装 Dapr 后,可以通过向部署中添加一些注释来开始使用 Dapr 构建基块 API 进行开发。 有关构建基块 API 以及如何最好地使用它们的更深入的概述,请参阅 Dapr 构建基块概述。
Warning
如果通过 AKS 或已启用 Arc 的 Kubernetes 扩展安装 Dapr,我们建议继续使用该扩展以供将来管理 Dapr,而不是 Dapr CLI。 将这两个工具组合使用可能引起冲突并导致意想不到的行为。
先决条件
- 一份 Azure 订阅。 如果没有订阅,请创建一个试用帐户。
- 最新版本的 Azure CLI。
- 现有的 AKS 群集或连接的已启用 Arc 的 Kubernetes 群集。
- Azure Kubernetes 服务基于角色的访问控制管理员角色。
选择你希望如何安装、部署和配置 Dapr 扩展。
在您开始之前
添加适用于群集扩展的 Azure CLI 扩展
运行以下命令安装 k8s-extension Azure CLI 扩展:
az extension add --name k8s-extension
如果已安装 k8s-extension 扩展,你可使用以下命令将其更新到最新版本:
az extension update --name k8s-extension
注册 KubernetesConfiguration 资源提供程序
如果您尚未使用群集扩展,可能需要将资源提供者注册到您的订阅中。 你可以使用 az provider list 命令检查提供程序注册的状态,如下面的示例所示:
az provider list --query "[?contains(namespace,'Microsoft.KubernetesConfiguration')]" -o table
Microsoft.KubernetesConfiguration 提供程序应报告为 Registered,如以下示例输出中所示:
Namespace RegistrationState RegistrationPolicy
--------------------------------- ------------------- --------------------
Microsoft.KubernetesConfiguration Registered RegistrationRequired
如果提供程序显示为“未注册”,请使用 az provider register 注册提供程序,如下面的示例所示:
az provider register --namespace Microsoft.KubernetesConfiguration
将 ExtensionTypes 功能注册到 Azure 订阅
需要将 ExtensionTypes 功能注册到 Azure 订阅。 在终端中,验证你是否在正确的订阅中:
az account set --subscription <your-azure-subscription-ID>
注册 ExtensionTypes 功能。
az feature registration create --namespace Microsoft.KubernetesConfiguration --name ExtensionTypes
功能注册可能需要一些时间。 几分钟后,使用以下命令检查注册状态:
az feature show --namespace Microsoft.KubernetesConfiguration --name ExtensionTypes
创建扩展并在 AKS 或已启用 Arc 的 Kubernetes 群集上安装 Dapr
安装 Dapr 扩展时,请使用与群集类型对应的标志值:
-
AKS 群集:
--cluster-type managedClusters -
已启用 Arc 的 Kubernetes 群集:
--cluster-type connectedClusters
注释
如果在 AKS 群集上使用 Dapr OSS,并且想要为 AKS 安装 Dapr 扩展,请参阅 从 Dapr OSS 迁移到 Dapr 扩展。
创建 Dapr 扩展,该扩展在 AKS 或已启用 Arc 的 Kubernetes 群集上安装 Dapr。
例如,通过 AKS 群集上的 Dapr 扩展安装最新版本的 Dapr:
az k8s-extension create --cluster-type managedClusters \
--cluster-name <your-AKS-cluster> \
--resource-group <your-resource-group> \
--name dapr \
--extension-type Microsoft.Dapr \
--auto-upgrade-minor-version false
使托管 AKS 群集保持更新到最新版本
基于你的环境(开发、测试或生产),你可以随时了解最新的稳定 Dapr 版本。
选择发布列车
配置扩展时,可以选择从特定版本序列安装 Dapr。 指定两个版本序列值之一:
| 价值 | 说明 |
|---|---|
stable |
违约。 |
dev |
早期版本,可能包含试验性功能。 不适合用于生产。 |
例如:
--release-train stable
配置 Dapr 控制平面的自动更新
Warning
自动升级不适用于生产环境。 仅在开发或测试环境中启用对 Dapr 控制平面的自动更新。 了解如何 手动升级到生产环境的最新 Dapr 版本。
如果在未指定版本的情况下安装 Dapr,--auto-upgrade-minor-version系统将自动启用,并将 Dapr 控制平面配置为在新版本发布时自动更新其小版本号。
可以通过指定 --auto-upgrade-minor-version 参数并将值设置为 false 来禁用自动更新。
Dapr 版本控制采用
--auto-upgrade-minor-version true
查看可用的最新稳定 Dapr 版本
若要在生产环境中升级到最新的 Dapr 版本,需要手动升级。 首先查看你的托管 AKS 群集可用的稳定 Dapr 版本列表。 运行下面的命令:
az k8s-extension extension-types list-versions-by-cluster --resource-group <your-resource-group> --cluster-name <your-AKS-cluster> --cluster-type managedClusters --extension-type microsoft.dapr --release-train stable
若要查看你的托管 AKS 群集可用的最新稳定 Dapr 版本,请运行以下命令:
az k8s-extension extension-types list-versions-by-cluster --resource-group <your-resource-group> --cluster-name <your-AKS-cluster> --cluster-type managedClusters --extension-type microsoft.dapr --release-train stable --show-latest
若要按位置查看可用的稳定 Dapr 版本的列表,请运行以下命令:
- 确保已将 该功能注册
ExtensionTypes到 Azure 订阅。 - 运行以下命令。
az k8s-extension extension-types list-versions-by-location --location chinanorth3 --extension-type microsoft.dapr
面向特定的 Dapr 版本
接下来,手动将 Dapr 更新为最新的稳定版本。
注释
Dapr 支持滚动窗口,仅包括当前版本和以前版本。 你需要负责保证这些受支持版本的最新状态。 如果有较旧版本的 Dapr,可能需要进行中间升级才能进入受支持的版本。
可使用相同的命令行参数安装特定版本的 Dapr 或回滚到以前的版本。 将 --auto-upgrade-minor-version 设置为 false 并将 --version 设置为想要安装的 Dapr 版本。 如果省略了 version 参数,则扩展将安装最新版本的 Dapr。 以下示例命令在 AKS 群集上安装 Dapr 版本 1.14.4-msft.10 :
az k8s-extension create --cluster-type managedClusters \
--cluster-name <your-AKS-cluster> \
--resource-group <your-resource-group> \
--name dapr \
--extension-type Microsoft.Dapr \
--auto-upgrade-minor-version false \
--version 1.14.4-msft.10
Troubleshooting
排查扩展管理错误
如果扩展无法进行创建或更新,请尝试 Dapr 扩展故障排除指南中的建议和解决方案。
排查 Dapr 功能错误
通过查看 常见的 Dapr 问题和解决方案指南,排查与扩展无关的 Dapr 开源错误。
Support
注释
如果在使用扩展时遇到 Dapr 运行时安全风险和回归,请向 Dapr 开源项目提出问题。
还可以在 Dapr 项目的 Discord 上开始讨论:
从群集中删除 Dapr 扩展
从 AKS 卸载 Dapr 扩展的过程不会删除在安装过程中创建的自定义资源定义(CRD)。 这些 CRD 作为残余组件保留在群集中,对于扩展安装和卸载期间的协调器至关重要。
若要清理这些 CRD 的群集,可以在从 AKS 完全卸载 Dapr 扩展 后 手动删除它们。
卸载扩展
使用以下命令从 AKS 群集中删除扩展:
az k8s-extension delete --resource-group <your-resource-group> --cluster-name <your-AKS-cluster> --cluster-type managedClusters --name dapr
或者,如果使用 Bicep 模板,则可以删除该模板。
列出群集中的 CRD
若要查找要删除的 CRD,请运行以下命令:
kubectl get crds | findstr dapr.io