你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
为 Azure Kubernetes 服务 (AKS) 和已启用 Arc 的 Kubernetes 项目配置 Dapr 扩展
完成安装 Dapr 扩展的先决条件后,你可以使用各种配置选项对 Dapr 扩展进行配置,使其最适合你和你的项目,例如:
- 轮换过期证书
- 预配已启用高可用性 (HA) 的 Dapr
- 限制哪些节点可以使用 Dapr 扩展
- 设置自动自定义资源定义 (CRD) 更新
- 配置 Dapr 版本命名空间
该扩展允许在 Azure CLI 中使用--configuration-settings
参数或在 Bicep 模板中使用configurationSettings
属性以设置 Dapr 配置选项。
Dapr 扩展支持使用 Dapr Sentry 服务控制平面(它是一个中央证书颁发机构 [CA])对 Dapr 实例之间的通信进行传输中加密。 借助 Sentry 服务,可以使用自签名证书或用户提供的 x.509 证书进行通信加密。 在开源 Dapr 文档中详细了解如何设置 mTLS 证书。
可以自带证书,或者让 Dapr 自动创建和保留自签名根证书和颁发者证书。
重要
如果未显式配置证书,Dapr 将默认生成自签名证书,该证书的有效期通常为 1 年。 目前,不建议使用 Dapr 生成的自签名证书。 最佳做法是生成自定义证书并手动更新它们。
如果尚未提供任何自定义证书,Dapr 会自动创建并保留自签名证书,有效期为 1 年。 Dapr 扩展会安装 dapr-trust-bundle
机密,其中包含默认 dapr-system
命名空间下的证书信息。
可使用 Dapr CLI 检查 Kubernetes 群集的 Dapr 根证书何时过期。
dapr mtls expiry
预期输出:
Root certificate expires in 8759 hours. Expiry date: 2025-12-06 18:14:20 +0000 UTC
还可以在 Kubernetes dapr-trust-bundle
机密数据中找到当前证书的到期日期。
kubectl get secret dapr-trust-bundle -n dapr-system -o jsonpath='{.data.issuer\.crt}' | base64 -d | openssl x509 -noout -dates
预期输出:
notBefore=Dec 6 17:59:20 2024 GMT
notAfter=Dec 6 18:14:20 2025 GMT
- 通过 Dapr CLI(推荐)
请参阅 Dapr 的使用 CLI 进行根证书和颁发者证书升级指南。 - 通过
kubectl
命令 请参阅 Dapr 的使用 Kubectl 更新根证书或颁发者证书指南。
你也可自带自定义证书。
- 生成自定义证书
创建你自己的自定义证书,例如 Azure Key Vault 证书。 - 手动更新自定义证书
按照 Dapr 开源文档中提供的说明,使用kubectl
手动更新自定义证书。
将global.ha.enabled
参数设置为true
以预配已启用高可用性 (HA) 的 Dapr。
az k8s-extension create --cluster-type managedClusters \
--cluster-name myAKSCluster \
--resource-group myResourceGroup \
--name dapr \
--extension-type Microsoft.Dapr \
--auto-upgrade-minor-version true \
--configuration-settings "global.ha.enabled=true" \
--configuration-settings "dapr_operator.replicaCount=2"
备注
如果配置设置是敏感的并且需要进行保护,例如证书相关的信息,请传递--configuration-protected-settings
参数,将保护其值不会被读取。
如果未传递任何配置设置,Dapr 配置默认为:
ha:
enabled: true
replicaCount: 3
disruption:
minimumAvailable: ""
maximumUnavailable: "25%"
prometheus:
enabled: true
port: 9090
mtls:
enabled: true
workloadCertTTL: 24h
allowedClockSkew: 15m
有关可用选项的列表,请参阅 Dapr 配置。
在某些配置中,你可能只需要在某些节点上运行 Dapr。 可以通过在扩展配置中传递 nodeSelector
来限制扩展。 如果所需的 nodeSelector
包含 .
,则必须通过 shell 和扩展对其进行转义。 例如,以下配置会仅将 Dapr 安装到包含topology.kubernetes.io/zone: "us-east-1c"
的节点:
az k8s-extension create --cluster-type managedClusters \
--cluster-name myAKSCluster \
--resource-group myResourceGroup \
--name dapr \
--extension-type Microsoft.Dapr \
--auto-upgrade-minor-version true \
--configuration-settings "global.ha.enabled=true" \
--configuration-settings "dapr_operator.replicaCount=2" \
--configuration-settings "global.nodeSelector.kubernetes\.io/zone=us-east-1c"
若要管理 OS 和体系结构,请使用 global.daprControlPlaneOs
和 global.daprControlPlaneArch
配置的支持的版本:
az k8s-extension create --cluster-type managedClusters \
--cluster-name myAKSCluster \
--resource-group myResourceGroup \
--name dapr \
--extension-type Microsoft.Dapr \
--auto-upgrade-minor-version true \
--configuration-settings "global.ha.enabled=true" \
--configuration-settings "dapr_operator.replicaCount=2" \
--configuration-settings "global.daprControlPlaneOs=linux” \
--configuration-settings "global.daprControlPlaneArch=amd64”
默认情况下,放置服务使用类型为 standard_LRS
的存储类。 建议跨多个可用性区域在 HA 模式下安装 Dapr 时创建区域冗余存储类。 例如,要创建zrs
类型存储类,请添加storageaccounttype
参数:
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: custom-zone-redundant-storage
provisioner: disk.csi.azure.com
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: WaitForFirstConsumer
parameters:
storageaccounttype: Premium_ZRS
安装 Dapr 时,请使用 YAML 文件中使用的存储类:
az k8s-extension create --cluster-type managedClusters
--cluster-name XXX
--resource-group XXX
--name XXX
--extension-type Microsoft.Dapr
--auto-upgrade-minor-version XXX
--version XXX
--configuration-settings "dapr_placement.volumeclaims.storageClassName=custom-zone-redundant-storage"
可以配置版本命名空间。
默认情况下,Dapr 扩展安装在 dapr-system
命名空间中。 若要替代它,请使用 --release-namespace
。 若要重新定义命名空间,请包含群集 --scope
。
az k8s-extension create \
--cluster-type managedClusters \
--cluster-name dapr-aks \
--resource-group dapr-rg \
--name my-dapr-ext \
--extension-type microsoft.dapr \
--release-train stable \
--auto-upgrade false \
--version 1.9.2 \
--scope cluster \
--release-namespace dapr-custom
了解如何在从 Dapr 开放源代码迁移到 Dapr 扩展时配置 Dapr 版本命名空间。
使用 az k8s-extension show
命令显示当前的 Dapr 配置设置:
az k8s-extension show --cluster-type managedClusters \
--cluster-name myAKSCluster \
--resource-group myResourceGroup \
--name dapr
重要
某些配置选项在创建后无法修改。 对这些选项的调整需要删除和重新创建扩展,适用于以下设置:
global.ha.*
dapr_placement.*
HA 在默认情况下处于启用状态。 禁用它则需要删除和重新安装该扩展。
若要更新 Dapr 配置设置,请重新创建具有所需状态的扩展。 例如,假设你之前已使用以下配置创建并安装了扩展:
az k8s-extension create --cluster-type managedClusters \
--cluster-name myAKSCluster \
--resource-group myResourceGroup \
--name dapr \
--extension-type Microsoft.Dapr \
--auto-upgrade-minor-version true \
--configuration-settings "global.ha.enabled=true" \
--configuration-settings "dapr_operator.replicaCount=2"
若要将 dapr_operator.replicaCount
从两个更新为三个,请使用以下命令:
az k8s-extension create --cluster-type managedClusters \
--cluster-name myAKSCluster \
--resource-group myResourceGroup \
--name dapr \
--extension-type Microsoft.Dapr \
--auto-upgrade-minor-version true \
--configuration-settings "global.ha.enabled=true" \
--configuration-settings "dapr_operator.replicaCount=3"
如果要将出站代理与 AKS 的 Dapr 扩展配合使用,可以通过以下方式实现:
- 使用
dapr.io/env
注释设置代理环境变量:HTTP_PROXY
HTTPS_PROXY
NO_PROXY
- 在 sidecar 中安装代理证书。
如果使用的是特定的 Dapr 版本并且没有 --auto-upgrade-minor-version
可用,则可以使用以下命令升级或降级 Dapr:
az k8s-extension update --cluster-type managedClusters \
--cluster-name myAKSCluster \
--resource-group myResourceGroup \
--name dapr \
--version 1.12.0 # Version to upgrade or downgrade to
上述命令仅更新 Dapr 控制平面。若要更新 Dapr sidecars,请重启应用程序部署:
kubectl rollout restart deploy/<DEPLOYMENT-NAME>
从 Dapr 版本 1.8.0 开始,你可以将 Azure Linux 映像与 Dapr 扩展配合使用。 若要使用它们,请设置global.tag
标志:
az k8s-extension update --cluster-type managedClusters \
--cluster-name myAKSCluster \
--resource-group myResourceGroup \
--name dapr \
--set global.tag=1.10.0-mariner
从 Dapr 版本 1.9.2 开始,扩展升级时会自动升级 CRD。 若要禁用此设置,可以将 hooks.applyCrds
设置为 false
。
az k8s-extension update --cluster-type managedClusters \
--cluster-name myAKSCluster \
--resource-group myResourceGroup \
--name dapr \
--configuration-settings "hooks.applyCrds=false"
备注
CRD 仅在升级时应用,在降级时跳过。
AKS 和 Arc for Kubernetes 的 Dapr 扩展需要 https://:443
上的以下出站 URL 才能正常运行:
- 用于拉取 Dapr 项目的
https://mcr.microsoft.com/daprio
URL。 - AKS 或 Arc for Kubernetes 所需的出站 URL。