dapr v1.16.16 版本更新介绍
发布日期: 2026-06-15
版本号: v1.16.16
Dapr 1.16.16是一个错误修复版本,主要解决了两个问题:一是当信任包颁发者密钥类型与证书签名请求的签名算法不匹配时,Sentry服务在启动时会崩溃,此问题主要影响从1.18降级到1.16的集群,通过移除证书模板中的签名算法并由Go的x509库自动推断来解决;二是使用Helm从1.17或1.18降级到1.16时,由于调度器StatefulSet的存储大小在版本间不同且该字段不可更新,导致降级失败,现已通过图表查询现有部署的实际存储大小并固定该值来修复,同时建议降级时使用–reset-values参数并重新传递安装时的配置值,避免使用–reuse-values导致配置冲突。
更新内容 (中文)
Dapr 1.16.16
本次更新包含错误修复:
当签发者密钥类型与证书签名请求签名算法不匹配时,Sentry无法签署证书
问题
Sentry在启动时崩溃,提示:
fatal: error running Sentry: failed to retrieve the initial identity: x509: requested SignatureAlgorithm does not match private key type
此问题发生在信任包签发者密钥类型与证书签名请求中使用的密钥类型不匹配时。 Dapr 1.18 生成 Ed25519 签发者密钥,而 1.16 生成 ECDSA 密钥和 ECDSA 签名的证书签名请求。
影响
任何 dapr-trust-bundle 密钥由 Dapr 1.18 生成的 1.16 控制平面均受影响,通常发生在同一集群从 1.18 降级到 1.16 之后。
根本原因
Sentry 将传入证书签名请求的 SignatureAlgorithm 复制到工作负载证书模板上。调用 x509.CreateCertificate 时,Go 的 x509 库因模板签名算法(源自证书签名请求密钥类型)与签发者私钥类型不匹配而拒绝该请求。
解决方案
从证书模板和 SignRequest 结构体中移除了 SignatureAlgorithm,此修复移植自 Dapr 1.17.2 发布的版本。Go 的 x509.CreateCertificate 现在会从签发者的签名密钥推断正确的签名算法,允许 Sentry 为任意密钥类型的证书签名。新增了一个回归测试,用于验证使用 Ed25519 签发者密钥签署具有 ECDSA 密钥身份的场景。
从1.17或1.18版本降级Helm时,在调度器StatefulSet存储大小上失败
问题
使用 Helm 将 Dapr 控制平面从 1.17 或 1.18 降级到 1.16 时失败,提示:
StatefulSet.apps \"dapr-scheduler-server\" is invalid: spec: Forbidden: updates to statefulset spec for fields other than 'replicas', 'ordinals', 'template', 'updateStrategy', 'persistentVolumeClaimRetentionPolicy' and 'minReadySeconds' are forbidden
影响
在 Dapr 1.17 或 1.18 上安装的集群(调度器图表将持久卷声明大小默认为 16Gi),无法降级到 1.16,除非手动传递 --set dapr_scheduler.cluster.storageSize=<当前大小> 或先使用 --cascade=orphan 删除 StatefulSet。
根本原因
1.16 版图表直接根据 .Values.cluster.storageSize(默认 1Gi)渲染 spec.volumeClaimTemplates 存储大小。StatefulSet.spec.volumeClaimTemplates 在 Kubernetes 中是不可变字段,因此渲染任何与已部署大小不同的值都会导致 API 服务器拒绝补丁请求。
解决方案
从 1.17 版图表移植了 dapr_scheduler.storageSize 模板辅助程序。
图表现在会查找实时的 dapr-scheduler-server StatefulSet,并将渲染的存储请求固定为当前已使用的值,对于全新安装则回退到 .Values.cluster.storageSize。
降级指南
使用 Helm 降级到 1.16.16 时,建议使用 --reset-values 并明确重新传递安装时创建的值(例如 global.ha.enabled)。
避免使用 --reuse-values:它会延续先前图表的计算默认值,其中一些对 1.16 二进制文件无效。
特别地,1.17 和 1.18 版图表将位置服务 disseminateTimeout 默认为 8 秒,而 1.16 位置二进制文件在启动时会拒绝该值(有效范围为 1 秒至 3 秒)。
更新内容 (原始)
Dapr 1.16.16
This update contains bug fixes:
- Sentry fails to sign certificates when the issuer key type does not match the CSR signature algorithm
- Helm downgrade from 1.17 or 1.18 fails on the scheduler StatefulSet storage size
Sentry fails to sign certificates when the issuer key type does not match the CSR signature algorithm
Problem
Sentry crashes on startup with:
fatal: error running Sentry: failed to retrieve the initial identity: x509: requested SignatureAlgorithm does not match private key type
This occurs when the trust bundle issuer key type does not match the key type used in certificate signing requests. Dapr 1.18 generates Ed25519 issuer keys, while 1.16 generates ECDSA keys and ECDSA-signed CSRs.
Impact
Any 1.16 control plane whose dapr-trust-bundle secret was generated by Dapr 1.18 is affected, most commonly after a downgrade from 1.18 to 1.16 on the same cluster.
Root Cause
Sentry copied the SignatureAlgorithm from the incoming CSR onto the workload certificate template. When x509.CreateCertificate was called, Go’s x509 library rejected the mismatch between the template’s signature algorithm (derived from the CSR key type) and the issuer’s private key type.
Solution
Removed the SignatureAlgorithm from certificate templates and the SignRequest struct, backporting the fix released in Dapr 1.17.2. Go’s x509.CreateCertificate now infers the correct signature algorithm from the issuer’s signing key, allowing sentry to sign certificates regardless of the CSR’s key type. A regression test covers signing an ECDSA-keyed identity with an Ed25519 issuer key.
Helm downgrade from 1.17 or 1.18 fails on the scheduler StatefulSet storage size
Problem
Downgrading a Dapr control plane from 1.17 or 1.18 to 1.16 with Helm fails with:
StatefulSet.apps "dapr-scheduler-server" is invalid: spec: Forbidden: updates to statefulset spec for fields other than 'replicas', 'ordinals', 'template', 'updateStrategy', 'persistentVolumeClaimRetentionPolicy' and 'minReadySeconds' are forbidden
Impact
Clusters installed on Dapr 1.17 or 1.18, where the scheduler chart defaults the persistent volume claim size to 16Gi, cannot be downgraded to 1.16 without manually passing --set dapr_scheduler.cluster.storageSize=<live size> or deleting the StatefulSet with --cascade=orphan first.
Root Cause
The 1.16 chart rendered spec.volumeClaimTemplates storage directly from .Values.cluster.storageSize (default 1Gi). StatefulSet.spec.volumeClaimTemplates is immutable in Kubernetes, so rendering any size other than the one already deployed causes the API server to reject the patch.
Solution
Backported the dapr_scheduler.storageSize template helper from the 1.17 chart.
The chart now looks up the live dapr-scheduler-server StatefulSet and pins the rendered storage request to the value already in use, falling back to .Values.cluster.storageSize for fresh installs.
Downgrade guidance
When downgrading to 1.16.16 with Helm, prefer --reset-values and explicitly re-pass the values the install was created with (for example global.ha.enabled).
Avoid --reuse-values: it carries forward the previous chart’s computed defaults, some of which are invalid for 1.16 binaries.
In particular, the 1.17 and 1.18 charts default the placement disseminateTimeout to 8s, which the 1.16 placement binary rejects at startup (valid range 1s to 3s).
下载链接
- daprd_darwin_amd64.tar.gz
- daprd_darwin_amd64.tar.gz.sha256
- daprd_darwin_arm64.tar.gz
- daprd_darwin_arm64.tar.gz.sha256
- daprd_linux_amd64-stablecomponents.tar.gz
- daprd_linux_amd64-stablecomponents.tar.gz.sha256
- daprd_linux_amd64.tar.gz
- daprd_linux_amd64.tar.gz.sha256
- daprd_linux_arm-stablecomponents.tar.gz
- daprd_linux_arm-stablecomponents.tar.gz.sha256
- daprd_linux_arm.tar.gz
- daprd_linux_arm.tar.gz.sha256
- daprd_linux_arm64-stablecomponents.tar.gz
- daprd_linux_arm64-stablecomponents.tar.gz.sha256
- daprd_linux_arm64.tar.gz
- daprd_linux_arm64.tar.gz.sha256
- daprd_windows_amd64.zip
- daprd_windows_amd64.zip.sha256
- grafana-actor-dashboard.json
- grafana-actor-dashboard.json.sha256
- grafana-sidecar-dashboard.json
- grafana-sidecar-dashboard.json.sha256
- grafana-system-services-dashboard.json
- grafana-system-services-dashboard.json.sha256
- injector_darwin_amd64.tar.gz
- injector_darwin_amd64.tar.gz.sha256
- injector_darwin_arm64.tar.gz
- injector_darwin_arm64.tar.gz.sha256
- injector_linux_amd64.tar.gz
- injector_linux_amd64.tar.gz.sha256
- injector_linux_arm.tar.gz
- injector_linux_arm.tar.gz.sha256
- injector_linux_arm64.tar.gz
- injector_linux_arm64.tar.gz.sha256
- injector_windows_amd64.zip
- injector_windows_amd64.zip.sha256
- operator_darwin_amd64.tar.gz
- operator_darwin_amd64.tar.gz.sha256
- operator_darwin_arm64.tar.gz
- operator_darwin_arm64.tar.gz.sha256
- operator_linux_amd64.tar.gz
- operator_linux_amd64.tar.gz.sha256
- operator_linux_arm.tar.gz
- operator_linux_arm.tar.gz.sha256
- operator_linux_arm64.tar.gz
- operator_linux_arm64.tar.gz.sha256
- operator_windows_amd64.zip
- operator_windows_amd64.zip.sha256
- placement_darwin_amd64.tar.gz
- placement_darwin_amd64.tar.gz.sha256
- placement_darwin_arm64.tar.gz
- placement_darwin_arm64.tar.gz.sha256
- placement_linux_amd64.tar.gz
- placement_linux_amd64.tar.gz.sha256
- placement_linux_arm.tar.gz
- placement_linux_arm.tar.gz.sha256
- placement_linux_arm64.tar.gz
- placement_linux_arm64.tar.gz.sha256
- placement_windows_amd64.zip
- placement_windows_amd64.zip.sha256
- scheduler_darwin_amd64.tar.gz
- scheduler_darwin_amd64.tar.gz.sha256
- scheduler_darwin_arm64.tar.gz
- scheduler_darwin_arm64.tar.gz.sha256
- scheduler_linux_amd64.tar.gz
- scheduler_linux_amd64.tar.gz.sha256
- scheduler_linux_arm.tar.gz
- scheduler_linux_arm.tar.gz.sha256
- scheduler_linux_arm64.tar.gz
- scheduler_linux_arm64.tar.gz.sha256
- scheduler_windows_amd64.zip
- scheduler_windows_amd64.zip.sha256
- sentry_darwin_amd64.tar.gz
- sentry_darwin_amd64.tar.gz.sha256
- sentry_darwin_arm64.tar.gz
- sentry_darwin_arm64.tar.gz.sha256
- sentry_linux_amd64.tar.gz
- sentry_linux_amd64.tar.gz.sha256
- sentry_linux_arm.tar.gz
- sentry_linux_arm.tar.gz.sha256
- sentry_linux_arm64.tar.gz
- sentry_linux_arm64.tar.gz.sha256
- sentry_windows_amd64.zip
- sentry_windows_amd64.zip.sha256