你当前正在访问 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 配置选项。

管理 mTLS 证书

Dapr 扩展支持使用 Dapr Sentry 服务控制平面(它是一个中央证书颁发机构 [CA])对 Dapr 实例之间的通信进行传输中加密。 借助 Sentry 服务,可以使用自签名证书或用户提供的 x.509 证书进行通信加密。 在开源 Dapr 文档中详细了解如何设置 mTLS 证书。

可以自带证书,或者让 Dapr 自动创建和保留自签名根证书和颁发者证书

重要

如果未显式配置证书,Dapr 将默认生成自签名证书,该证书的有效期通常为 1 年。 目前,不建议使用 Dapr 生成的自签名证书。 最佳做法是生成自定义证书并手动更新它们。

管理 Dapr 生成的自签名证书

如果尚未提供任何自定义证书,Dapr 会自动创建并保留自签名证书,有效期为 1 年。 Dapr 扩展会安装 dapr-trust-bundle 机密,其中包含默认 dapr-system 命名空间下的证书信息。

检查当前 Dapr 生成的自签名证书的到期时间

可使用 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 生成的自签名证书

管理自己的用户提供的 x.509 证书

你也可自带自定义证书。

预配已启用高可用性 (HA) 的 Dapr

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.daprControlPlaneOsglobal.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”

在 HA 模式下,在多个可用性区域中安装 Dapr

默认情况下,放置服务使用类型为 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 扩展安装在 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"

为本地 Azure Arc 的 Dapr 扩展设置出站代理

如果要将出站代理与 AKS 的 Dapr 扩展配合使用,可以通过以下方式实现:

  1. 使用 dapr.io/env 注释设置代理环境变量:
    • HTTP_PROXY
    • HTTPS_PROXY
    • NO_PROXY
  2. 在 sidecar 中安装代理证书

更新 Dapr 安装版本

如果使用的是特定的 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>

使用基于 Azure Linux 的映像

从 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

禁用自动 CRD 更新

从 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 才能正常运行:

  1. 用于拉取 Dapr 项目的https://mcr.microsoft.com/daprio URL。
  2. AKS 或 Arc for Kubernetes 所需的出站 URL

后续步骤