This is the multi-page printable view of this section. Click here to print.
支持和版本控制
- 1: 版本控制政策
- 2: 支持的运行时和SDK版本
- 3: 重大变更和弃用
- 4: 报告安全问题
- 5: 预览功能
- 6: Alpha 和 Beta API
1 - 版本控制政策
介绍
Dapr 通过版本控制方案为未来的运行时、API 和组件的变化做好了设计。本主题描述了 API、组件和 Github 仓库的版本控制方案和策略。
版本控制
版本控制是为计算机软件的每个独特状态分配唯一版本名称或版本号的过程。
- 版本控制提供兼容性、明确的变更控制,并处理变更,尤其是重大变更。
- Dapr 力求保持向后兼容性。如果需要重大变更,将会提前宣布。
- 废弃的功能将在多个版本中逐步淘汰,新旧功能将并行工作。
版本控制涉及以下 Dapr 仓库:dapr、CLI、稳定语言 SDK、dashboard、components-contrib、quickstarts、helm-charts 和文档。
Dapr 具有以下版本控制方案:
- Dapr
HTTP API
采用MAJOR.MINOR
版本控制 - Dapr
GRPC API
采用MAJOR
版本控制 - 发布版本(包括 GitHub 仓库中的 dapr、CLI、SDK 和 Helm Chart)采用
MAJOR.MINOR.PATCH
版本控制 - 文档和 Quickstarts 仓库与 Dapr 运行时仓库版本控制一致。
- Dapr
组件
在 components-contrib GitHub 仓库中采用MAJOR
版本控制。 - Dapr
清单
采用MAJOR.MINOR
版本控制。这些包括订阅和配置。
请注意,Dapr 的 API、二进制发布(运行时、CLI、SDK)和组件都是相互独立的。
Dapr HTTP API
Dapr HTTP API 根据这些REST API 指南进行版本控制。
根据这些指南;
- 当预期旧版本的弃用时,API 的
MAJOR
版本会递增。任何此类弃用将被通知,并提供升级路径。 MINOR
版本可能因其他更改而递增。例如,发送到 API 的消息的 JSON 模式的更改。 API 的重大变更定义可以在这里查看。- 实验性 API 包含一个“alpha”后缀以表示其 alpha 状态。例如 v1.0alpha、v2.0alpha 等。
Dapr 运行时
Dapr 发布使用 MAJOR.MINOR.PATCH
版本控制。例如 1.0.0。阅读支持的发布以了解更多关于发布版本控制的信息。
Helm Charts
helm-charts 仓库中的 Helm charts 与 Dapr 运行时版本一致。Helm charts 用于Kubernetes 部署
语言 SDK、CLI 和 dashboard
Dapr 语言 SDK、CLI 和 dashboard 独立于 Dapr 运行时进行版本控制,并可以在不同的时间表上发布。请参阅此表格以显示 SDK、CLI、dashboard 和运行时版本之间的兼容性。每个新的运行时发布都会列出相应支持的 SDK、CLI 和 Dashboard。
SDK、CLI 和 Dashboard 的版本控制遵循 MAJOR.MINOR.PATCH
格式。当 SDK 中存在非向后兼容的更改时(例如,更改客户端方法的参数),主版本会递增。次版本用于新功能和错误修复,补丁版本在出现错误或安全热修复时递增。
SDK 中的示例和例子与该仓库的版本一致。
组件
组件在 components-contrib 仓库中实现,并遵循 MAJOR
版本控制方案。组件的版本遵循主版本(vX),因为补丁和非破坏性更改会添加到最新的主版本中。当组件接口中存在非向后兼容的更改时,例如更改 State Store 接口中的现有方法,版本会递增。
components-contrib 仓库发布是所有内部组件的统一版本。也就是说,components-contrib 仓库发布的版本由其内部所有组件的模式组成。如果没有组件更改,Dapr 的新版本并不意味着 components-contrib 有新的发布。
注意:组件具有生产使用生命周期状态:Alpha、Beta 和 Stable。这些状态与其版本控制无关。支持的组件表显示了它们的版本和状态。
- state store 组件列表
- pub/sub 组件列表
- binding 组件列表
- secret store 组件列表
- configuration store 组件列表
- lock 组件列表
- cryptography 组件列表
- middleware 组件列表
有关组件版本控制的更多信息,请阅读组件的版本 2 及以后
组件模式
组件 YAML 的版本控制有两种形式:
- 组件清单的版本控制。
apiVersion
- 组件实现的版本。
.spec.version
组件清单在 .spec.metadata
字段中包含实现的模式,.type
字段表示实现
请参阅下面示例中的注释:
apiVersion: dapr.io/v1alpha1 # <-- 这是组件清单的版本
kind: Component
metadata:
name: pubsub
spec:
version: v1 # <-- 这是 pubsub.redis 模式实现的版本
type: pubsub.redis
metadata:
- name: redisHost
value: redis-master:6379
- name: redisPassword
value: general-kenobi
组件清单版本
组件 YAML 清单的版本为 dapr.io/v1alpha1
。
组件实现版本
组件实现的版本由示例中的 .spec.version
字段确定。.spec.version
字段在模式实例中是必需的,如果不存在,该组件将无法加载。在 Dapr 1.0.0 发布时,所有组件都标记为 v1
。组件实现版本仅在非向后兼容更改时递增。
组件弃用
组件的弃用将在两个(2)版本之前宣布。组件的弃用会导致组件版本的主版本更新。经过 2 个版本后,该组件将从 Dapr 运行时中注销,尝试加载它将抛出致命异常。
组件的弃用和移除将在发布说明中宣布。
Quickstarts 和示例
Quickstarts 仓库中的 Quickstarts 与运行时版本一致,其中相应版本的表格位于示例仓库的首页。用户应仅使用与正在运行的运行时版本相对应的 Quickstarts。
Samples 仓库中的示例根据示例维护者的情况逐个版本控制。与运行时发布(多个版本之前)非常不一致或超过 1 年未维护的示例将被移除。
相关链接
2 - 支持的运行时和SDK版本
介绍
本主题详细介绍了Dapr版本的支持策略、升级策略,以及在所有Dapr代码库(如运行时、CLI、SDK等)中如何传达弃用和重大更改的信息,适用于1.x及以上版本。
Dapr版本采用MAJOR.MINOR.PATCH
的版本号格式。例如,1.0.0。
版本号 | 描述 |
---|---|
MAJOR | 当运行时有不兼容的更改时更新,例如API的更改。MAJOR 版本也可能在有显著功能添加或更改时发布,以便与之前版本区分。 |
MINOR | 作为常规发布节奏的一部分更新,包括新功能、错误修复和安全修复。 |
PATCH | 针对关键问题(如P0问题)和安全修复进行更新。 |
支持的版本指的是:
- 如果版本存在关键问题,例如主线中断或安全问题,将发布修补程序。每个问题都根据具体情况进行评估。
- 对支持的版本进行问题调查。如果版本不再受支持,您需要升级到较新的版本以确定问题是否仍然存在。
从1.8.0版本开始,Dapr支持三个版本:当前版本和之前的两个版本。通常这些是MINOR
版本更新。这意味着支持版本的动态窗口会向前移动,您有责任保持这些支持版本的最新状态。如果您使用较旧版本的Dapr,可能需要进行中间升级以达到支持的版本。
在major.minor版本发布之间至少有13周(3个月)的时间,给用户至少9个月的时间从不支持的版本进行升级。有关发布过程的更多详细信息,请阅读发布周期和节奏。
补丁支持适用于当前和之前的支持版本。
构建变体
Dapr的sidecar镜像被发布到GitHub容器注册表和Docker注册表。默认镜像包含所有组件。从1.11版本开始,Dapr还提供了仅包含稳定组件的sidecar镜像变体。
- 默认sidecar镜像:
daprio/daprd:<version>
或ghcr.io/dapr/daprd:<version>
(例如ghcr.io/dapr/daprd:1.11.1
) - 稳定组件的sidecar镜像:
daprio/daprd:<version>-stablecomponents
或ghcr.io/dapr/daprd:<version>-stablecomponents
(例如ghcr.io/dapr/daprd:1.11.1-stablecomponents
)
在Kubernetes上,可以通过dapr.io/sidecar-image
注释覆盖应用程序部署资源的sidecar镜像。有关更多信息,请参阅Dapr的参数和注释。如果未指定,则使用默认的’daprio/daprd:latest’镜像。
了解更多关于Dapr组件的认证生命周期。
支持的版本
下表显示了已一起测试并形成“打包”发布的Dapr版本。任何其他版本组合都不受支持。
发布日期 | 运行时 | CLI | SDKs | 仪表板 | 状态 | 发布说明 |
---|---|---|---|---|---|---|
2024年9月16日 | 1.14.4 | 1.14.1 | Java 1.12.0Go 1.11.0PHP 1.2.0Python 1.14.0.NET 1.14.0JS 3.3.1 | 0.15.0 | 支持(当前) | v1.14.4发布说明 |
2024年9月13日 | 1.14.3 | 1.14.1 | Java 1.12.0Go 1.11.0PHP 1.2.0Python 1.14.0.NET 1.14.0JS 3.3.1 | 0.15.0 | ⚠️ 已召回 | v1.14.3发布说明 |
2024年9月6日 | 1.14.2 | 1.14.1 | Java 1.12.0Go 1.11.0PHP 1.2.0Python 1.14.0.NET 1.14.0JS 3.3.1 | 0.15.0 | 支持(当前) | v1.14.2发布说明 |
2024年8月14日 | 1.14.1 | 1.14.1 | Java 1.12.0Go 1.11.0PHP 1.2.0Python 1.14.0.NET 1.14.0JS 3.3.1 | 0.15.0 | 支持(当前) | v1.14.1发布说明 |
2024年8月14日 | 1.14.0 | 1.14.0 | Java 1.12.0Go 1.11.0PHP 1.2.0Python 1.14.0.NET 1.14.0JS 3.3.1 | 0.15.0 | 支持(当前) | v1.14.0发布说明 |
2024年5月29日 | 1.13.4 | 1.13.0 | Java 1.11.0Go 1.10.0PHP 1.2.0Python 1.13.0.NET 1.13.0JS 3.3.0 | 0.14.0 | 支持 | v1.13.4发布说明 |
2024年5月21日 | 1.13.3 | 1.13.0 | Java 1.11.0Go 1.10.0PHP 1.2.0Python 1.13.0.NET 1.13.0JS 3.3.0 | 0.14.0 | 支持 | v1.13.3发布说明 |
2024年4月3日 | 1.13.2 | 1.13.0 | Java 1.11.0Go 1.10.0PHP 1.2.0Python 1.13.0.NET 1.13.0JS 3.3.0 | 0.14.0 | 支持 | v1.13.2发布说明 |
2024年3月26日 | 1.13.1 | 1.13.0 | Java 1.11.0Go 1.10.0PHP 1.2.0Python 1.13.0.NET 1.13.0JS 3.3.0 | 0.14.0 | 支持 | v1.13.1发布说明 |
2024年3月6日 | 1.13.0 | 1.13.0 | Java 1.11.0Go 1.10.0PHP 1.2.0Python 1.13.0.NET 1.13.0JS 3.3.0 | 0.14.0 | 支持 | v1.13.0发布说明 |
2024年1月17日 | 1.12.4 | 1.12.0 | Java 1.10.0Go 1.9.1PHP 1.2.0Python 1.12.0.NET 1.12.0JS 3.2.0 | 0.14.0 | 支持 | v1.12.4发布说明 |
2024年1月2日 | 1.12.3 | 1.12.0 | Java 1.10.0Go 1.9.1PHP 1.2.0Python 1.12.0.NET 1.12.0JS 3.2.0 | 0.14.0 | 支持 | v1.12.3发布说明 |
2023年11月18日 | 1.12.2 | 1.12.0 | Java 1.10.0Go 1.9.1PHP 1.2.0Python 1.12.0.NET 1.12.0JS 3.2.0 | 0.14.0 | 支持 | v1.12.2发布说明 |
2023年11月16日 | 1.12.1 | 1.12.0 | Java 1.10.0Go 1.9.1PHP 1.2.0Python 1.12.0.NET 1.12.0JS 3.2.0 | 0.14.0 | 支持 | v1.12.1发布说明 |
2023年10月11日 | 1.12.0 | 1.12.0 | Java 1.10.0Go 1.9.0PHP 1.1.0Python 1.11.0.NET 1.12.0JS 3.1.2 | 0.14.0 | 支持 | v1.12.0发布说明 |
2023年11月18日 | 1.11.6 | 1.11.0 | Java 1.9.0Go 1.8.0PHP 1.1.0Python 1.10.0.NET 1.11.0JS 3.1.0 | 0.13.0 | 不支持 | v1.11.6发布说明 |
2023年11月3日 | 1.11.5 | 1.11.0 | Java 1.9.0Go 1.8.0PHP 1.1.0Python 1.10.0.NET 1.11.0JS 3.1.0 | 0.13.0 | 不支持 | v1.11.5发布说明 |
2023年10月5日 | 1.11.4 | 1.11.0 | Java 1.9.0Go 1.8.0PHP 1.1.0Python 1.10.0.NET 1.11.0JS 3.1.0 | 0.13.0 | 不支持 | v1.11.4发布说明 |
2023年8月31日 | 1.11.3 | 1.11.0 | Java 1.9.0Go 1.8.0PHP 1.1.0Python 1.10.0.NET 1.11.0JS 3.1.0 | 0.13.0 | 不支持 | v1.11.3发布说明 |
2023年7月20日 | 1.11.2 | 1.11.0 | Java 1.9.0Go 1.8.0PHP 1.1.0Python 1.10.0.NET 1.11.0JS 3.1.0 | 0.13.0 | 不支持 | v1.11.2发布说明 |
2023年6月22日 | 1.11.1 | 1.11.0 | Java 1.9.0Go 1.8.0PHP 1.1.0Python 1.10.0.NET 1.11.0JS 3.1.0 | 0.13.0 | 不支持 | v1.11.1发布说明 |
2023年6月12日 | 1.11.0 | 1.11.0 | Java 1.9.0Go 1.8.0PHP 1.1.0Python 1.10.0.NET 1.11.0JS 3.1.0 | 0.13.0 | 不支持 | v1.11.0发布说明 |
2023年11月18日 | 1.10.10 | 1.10.0 | Java 1.8.0Go 1.7.0PHP 1.1.0Python 1.9.0.NET 1.10.0JS 3.0.0 | 0.11.0 | 不支持 | |
2023年7月20日 | 1.10.9 | 1.10.0 | Java 1.8.0Go 1.7.0PHP 1.1.0Python 1.9.0.NET 1.10.0JS 3.0.0 | 0.11.0 | 不支持 | |
2023年6月22日 | 1.10.8 | 1.10.0 | Java 1.8.0Go 1.7.0PHP 1.1.0Python 1.9.0.NET 1.10.0JS 3.0.0 | 0.11.0 | 不支持 | |
2023年5月15日 | 1.10.7 | 1.10.0 | Java 1.8.0Go 1.7.0PHP 1.1.0Python 1.9.0.NET 1.10.0JS 3.0.0 | 0.11.0 | 不支持 | |
2023年5月12日 | 1.10.6 | 1.10.0 | Java 1.8.0Go 1.7.0PHP 1.1.0Python 1.9.0.NET 1.10.0JS 3.0.0 | 0.11.0 | 不支持 | |
2023年4月13日 | 1.10.5 | 1.10.0 | Java 1.8.0Go 1.6.0PHP 1.1.0Python 1.9.0.NET 1.10.0JS 3.0.0 | 0.11.0 | 不支持 | |
2023年3月16日 | 1.10.4 | 1.10.0 | Java 1.8.0Go 1.6.0PHP 1.1.0Python 1.9.0.NET 1.10.0JS 2.5.0 | 0.11.0 | 不支持 | |
2023年3月14日 | 1.10.3 | 1.10.0 | Java 1.8.0Go 1.6.0PHP 1.1.0Python 1.9.0.NET 1.10.0JS 2.5.0 | 0.11.0 | 不支持 | |
2023年2月24日 | 1.10.2 | 1.10.0 | Java 1.8.0Go 1.6.0PHP 1.1.0Python 1.9.0.NET 1.10.0JS 2.5.0 | 0.11.0 | 不支持 | |
2023年2月20日 | 1.10.1 | 1.10.0 | Java 1.8.0Go 1.6.0PHP 1.1.0Python 1.9.0.NET 1.10.0JS 2.5.0 | 0.11.0 | 不支持 | |
2023年2月14日 | 1.10.0 | 1.10.0 | Java 1.8.0Go 1.6.0PHP 1.1.0Python 1.9.0.NET 1.10.0JS 2.5.0 | 0.11.0 | 不支持 | |
2022年12月2日 | 1.9.5 | 1.9.1 | Java 1.7.0Go 1.6.0PHP 1.1.0Python 1.8.3.NET 1.9.0JS 2.4.2 | 0.11.0 | 不支持 | |
2022年11月17日 | 1.9.4 | 1.9.1 | Java 1.7.0Go 1.6.0PHP 1.1.0Python 1.8.3.NET 1.9.0JS 2.4.2 | 0.11.0 | 不支持 | |
2022年11月4日 | 1.9.3 | 1.9.1 | Java 1.7.0Go 1.6.0PHP 1.1.0Python 1.8.3.NET 1.9.0JS 2.4.2 | 0.11.0 | 不支持 | |
2022年11月1日 | 1.9.2 | 1.9.1 | Java 1.7.0Go 1.6.0PHP 1.1.0Python 1.8.1.NET 1.9.0JS 2.4.2 | 0.11.0 | 不支持 | |
2022年10月26日 | 1.9.1 | 1.9.1 | Java 1.7.0Go 1.6.0PHP 1.1.0Python 1.8.1.NET 1.9.0JS 2.4.2 | 0.11.0 | 不支持 | |
2022年10月13日 | 1.9.0 | 1.9.1 | Java 1.7.0Go 1.6.0PHP 1.1.0Python 1.8.3.NET 1.9.0JS 2.4.2 | 0.11.0 | 不支持 | |
2022年10月26日 | 1.8.6 | 1.8.1 | Java 1.6.0Go 1.5.0PHP 1.1.0Python 1.7.0.NET 1.8.0JS 2.3.0 | 0.11.0 | 不支持 | |
2022年10月13日 | 1.8.5 | 1.8.1 | Java 1.6.0Go 1.5.0PHP 1.1.0Python 1.7.0.NET 1.8.0JS 2.3.0 | 0.11.0 | 不支持 | |
2022年8月10日 | 1.8.4 | 1.8.1 | Java 1.6.0Go 1.5.0PHP 1.1.0Python 1.7.0.NET 1.8.0JS 2.3.0 | 0.11.0 | 不支持 | |
2022年7月29日 | 1.8.3 | 1.8.0 | Java 1.6.0Go 1.5.0PHP 1.1.0Python 1.7.0.NET 1.8.0JS 2.3.0 | 0.11.0 | 不支持 | |
2022年7月21日 | 1.8.2 | 1.8.0 | Java 1.6.0Go 1.5.0PHP 1.1.0Python 1.7.0.NET 1.8.0JS 2.3.0 | 0.11.0 | 不支持 | |
2022年7月20日 | 1.8.1 | 1.8.0 | Java 1.6.0Go 1.5.0PHP 1.1.0Python 1.7.0.NET 1.8.0JS 2.3.0 | 0.11.0 | 不支持 | |
2022年7月7日 | 1.8.0 | 1.8.0 | Java 1.6.0Go 1.5.0PHP 1.1.0Python 1.7.0.NET 1.8.0JS 2.3.0 | 0.11.0 | 不支持 | |
2022年10月26日 | 1.7.5 | 1.7.0 | Java 1.5.0Go 1.4.0PHP 1.1.0Python 1.6.0.NET 1.7.0JS 2.2.1 | 0.10.0 | 不支持 | |
2022年5月31日 | 1.7.4 | 1.7.0 | Java 1.5.0Go 1.4.0PHP 1.1.0Python 1.6.0.NET 1.7.0JS 2.2.1 | 0.10.0 | 不支持 | |
2022年5月17日 | 1.7.3 | 1.7.0 | Java 1.5.0Go 1.4.0PHP 1.1.0Python 1.6.0.NET 1.7.0JS 2.2.1 | 0.10.0 | 不支持 | |
2022年4月22日 | 1.7.2 | 1.7.0 | Java 1.5.0Go 1.4.0PHP 1.1.0Python 1.6.0.NET 1.7.0JS 2.1.0 | 0.10.0 | 不支持 | |
2022年4月20日 | 1.7.1 | 1.7.0 | Java 1.5.0Go 1.4.0PHP 1.1.0Python 1.6.0.NET 1.7.0JS 2.1.0 | 0.10.0 | 不支持 | |
2022年4月7日 | 1.7.0 | 1.7.0 | Java 1.5.0Go 1.4.0PHP 1.1.0Python 1.6.0.NET 1.7.0JS 2.1.0 | 0.10.0 | 不支持 | |
2022年4月20日 | 1.6.2 | 1.6.0 | Java 1.4.0Go 1.3.1PHP 1.1.0Python 1.5.0.NET 1.6.0JS 2.0.0 | 0.9.0 | 不支持 | |
2022年3月25日 | 1.6.1 | 1.6.0 | Java 1.4.0Go 1.3.1PHP 1.1.0Python 1.5.0.NET 1.6.0JS 2.0.0 | 0.9.0 | 不支持 | |
2022年1月25日 | 1.6.0 | 1.6.0 | Java 1.4.0Go 1.3.1PHP 1.1.0Python 1.5.0.NET 1.6.0JS 2.0.0 | 0.9.0 | 不支持 |
SDK兼容性
SDK和运行时承诺除了安全问题所需的更改外,不会有重大更改。如果需要,所有重大更改都会在发布说明中宣布。
SDK和运行时的前向兼容性
较新的Dapr SDK支持最新版本的Dapr运行时和之前的两个版本(N-2)。
SDK和运行时的后向兼容性
对于新的Dapr运行时,当前的SDK版本和之前的两个版本(N-2)都受到支持。
升级路径
在运行时1.0版本发布后,可能会出现需要通过额外版本显式升级以达到目标的情况。例如,从v1.0升级到v1.2可能需要经过v1.1。
注意
Dapr仅在单个次要版本中升级补丁版本或从一个次要版本升级到下一个次要版本时提供无缝保证。例如,从v1.6.0
升级到v1.6.4
或v1.6.4
升级到v1.7.0
是经过保证测试的。一次升级多个次要版本是未经测试的,并被视为尽力而为。下表显示了Dapr运行时的测试升级路径。任何其他升级组合都没有经过测试。
有关升级的一般指导可以在selfhost模式和Kubernetes部署中找到。最好查看目标版本的发布说明以获得具体指导。
当前运行时版本 | 必须通过的版本 | 目标运行时版本 |
---|---|---|
1.5.0 到 1.5.2 | N/A | 1.6.0 |
1.6.0 | 1.6.2 | |
1.6.2 | 1.7.5 | |
1.7.5 | 1.8.6 | |
1.8.6 | 1.9.6 | |
1.9.6 | 1.10.7 | |
1.6.0 到 1.6.2 | N/A | 1.7.5 |
1.7.5 | 1.8.6 | |
1.8.6 | 1.9.6 | |
1.9.6 | 1.10.7 | |
1.7.0 到 1.7.5 | N/A | 1.8.6 |
1.8.6 | 1.9.6 | |
1.9.6 | 1.10.7 | |
1.8.0 到 1.8.6 | N/A | 1.9.6 |
1.9.0 到 1.9.6 | N/A | 1.10.8 |
1.10.0 到 1.10.8 | N/A | 1.11.4 |
1.11.0 到 1.11.4 | N/A | 1.12.4 |
1.12.0 到 1.12.4 | N/A | 1.13.5 |
1.13.0 到 1.13.5 | N/A | 1.14.0 |
1.14.0 到 1.14.2 | N/A | 1.14.2 |
在托管平台上升级
Dapr可以支持多个生产托管平台。在1.0版本发布时,支持的两个平台是Kubernetes和物理机。有关Kubernetes升级,请参阅Kubernetes上的生产指南
依赖项的支持版本
以下是最新版本的Dapr(v1.15.5)已测试的软件列表。
依赖项 | 支持的版本 |
---|---|
Kubernetes | Dapr对Kubernetes的支持与Kubernetes版本偏差策略保持一致 |
Open Telemetry collector (OTEL) | v0.101.0 |
Prometheus | v2.28 |
相关链接
3 - 重大变更和弃用
重大变更
重大变更是指对以下内容的修改,这些修改可能导致现有的第三方应用程序或脚本在升级到下一个稳定的小版本的 Dapr 工件(如 SDK、CLI、runtime 等)后出现编译错误或运行时问题:
- 代码行为
- 架构
- 默认配置值
- 命令行参数
- 发布的指标
- Kubernetes 资源模板
- 公开访问的 API
- 公开可见的 SDK 接口、方法、类或属性
以下情况可以立即应用重大变更:
- 版本未达到 1.0.0 的项目
- 预览功能
- Alpha API
- SDK 中的预览或 Alpha 接口、类、方法或属性
- 处于 Alpha 或 Beta 阶段的 Dapr 组件
github.com/dapr/components-contrib
的接口- 文档和博客中的 URL
- 例外情况,需要修复关键错误或安全漏洞。
应用重大变更的流程
应用重大变更需要遵循以下流程:
- 弃用通知必须作为发布的一部分进行发布。
- 重大变更将在弃用公告发布后的两个版本后生效。
- 例如,功能 X 在 1.0.0 版本说明中宣布弃用,然后将在 1.2.0 中移除。
弃用
弃用可以应用于:
- API,包括 alpha API
- 预览功能
- 组件
- CLI
- 可能导致安全漏洞的功能
弃用信息会在发布说明中名为“弃用”的部分中列出,说明:
- 当前弃用的功能将在未来某个版本中不再受支持。例如,发布 x.y.z。这至少是在两个版本之前。
- 在发布说明中记录用户需要采取的任何步骤以修改其代码、操作等(如果适用)。
在宣布未来的重大变更后,该变更将在 2 个版本或 6 个月后生效,以较长者为准。弃用的功能应响应警告,但除此之外不执行任何操作。
已宣布的弃用
功能 | 弃用公告 | 移除 |
---|---|---|
GET /v1.0/shutdown API(用户应使用 POST API 代替) | 1.2.0 | 1.4.0 |
Java 域构建器类已弃用(用户应使用 setters 代替) | Java SDK 1.3.0 | Java SDK 1.5.0 |
当未指定内容类型时,服务调用将不再提供默认的 application/json 内容类型头。如果您的调用应用程序依赖于此头,则必须明确 设置内容类型头。 | 1.7.0 | 1.9.0 |
使用 invoke 方法的 gRPC 服务调用已弃用。请改用代理模式服务调用。请参阅 How-To: Invoke services using gRPC 以使用代理模式。 | 1.9.0 | 1.10.0 |
CLI 标志 --app-ssl (在 Dapr CLI 和 daprd 中)已弃用,建议使用 --app-protocol ,值为 https 或 grpcs 。daprd:6158 cli:1267 | 1.11.0 | 1.13.0 |
Hazelcast PubSub 组件 | 1.9.0 | 1.11.0 |
Twitter Binding 组件 | 1.10.0 | 1.11.0 |
NATS Streaming PubSub 组件 | 1.11.0 | 1.13.0 |
Workflows API Alpha1 /v1.0-alpha1/workflows 被弃用,建议使用 Workflow Client | 1.15.0 | 1.17.0 |
相关链接
4 - 报告安全问题
Dapr 项目和维护者将安全性视为操作和设计软件的核心关注点。从 Dapr 二进制文件到 GitHub 发布流程,我们采取了多种措施以确保用户应用程序和数据的安全。有关 Dapr 安全功能的更多信息,请访问安全页面。
涵盖的存储库和问题
提到“Dapr 中的安全漏洞”时,指的是dapr GitHub 组织下任何存储库中的安全问题。
此报告流程仅适用于 Dapr 项目本身的安全问题,不适用于使用 Dapr 的应用程序或不影响安全性的问题。
如果问题无法通过对上述涵盖的存储库之一的更改来解决,建议在适当的存储库中创建 GitHub 问题或在 Discord 中提出问题。
**如果您不确定,**请谨慎行事,在通过 GitHub、Discord 或其他渠道提出问题之前,使用报告流程进行联系。
明确不涵盖:漏洞扫描器报告
我们不接受仅仅是从漏洞扫描工具复制粘贴输出的报告,除非已经专门确认工具报告的漏洞确实存在于 Dapr 中,包括 CLI、Dapr SDKs、components-contrib 存储库或 Dapr 组织下的任何其他存储库。
我们也使用这些工具,并根据它们的输出采取行动。然而,当这些报告被发送到我们的安全邮件列表时,通常是误报,因为这些工具往往只检查库的存在,而不考虑库在上下文中的使用方式。
如果我们收到的报告似乎只是来自扫描器的漏洞列表,我们保留忽略它的权利。
这尤其适用于工具生成的漏洞标识符不是公开可见或以某种方式是专有的情况。我们可以查找 CVE 或其他公开可用的标识符以获取更多详细信息,但不能对专有标识符执行相同操作。
安全联系人
有权阅读您的安全报告的人列在maintainers.md
中。
报告流程
- 用英语描述问题,最好附上一些示例配置或代码,以便重现问题。解释为什么您认为这是 Dapr 中的安全问题。
- 将这些信息放入电子邮件中。使用描述性标题。
- 发送电子邮件至Security (security@dapr.io)
响应
响应时间可能会受到周末、假期、休息或时区差异的影响。尽管如此,维护者团队会尽快回复,理想情况下在 3 个工作日内。
如果团队得出结论认为报告的问题确实是 Dapr 项目中的安全漏洞,至少两名维护者团队成员会尽快讨论下一步,理想情况下在 24 小时内。
一旦团队决定报告是真实漏洞,团队中的一名成员会回复报告者,确认问题并建立披露时间表,应该尽快进行。
分类、响应、修补和公告应在 30 天内完成。
5 - 预览功能
Dapr 的预览功能在首次发布时被视为实验性功能。
要使用运行时的预览功能,必须在 Dapr 的应用程序配置中通过预览设置功能进行显式选择加入。有关更多信息,请参阅如何启用预览功能。
对于 CLI,不需要显式选择加入,只需使用首次提供该功能的版本即可。
当前预览功能
功能 | 描述 | 设置 | 文档 | 引入版本 |
---|---|---|---|---|
可插拔组件 | 允许创建基于 gRPC 的自托管组件,这些组件可以用任何支持 gRPC 的语言编写。支持以下组件 API:状态存储、pub/sub、bindings | N/A | 可插拔组件概念 | v1.9 |
Kubernetes 的多应用运行 | 从单个配置文件配置多个 Dapr 应用程序,并在 Kubernetes 上通过单个命令运行 | dapr run -k -f | 多应用运行 | v1.12 |
工作流 | 将工作流作为代码编写,以在应用程序中自动化和编排任务,如消息传递、状态管理和故障处理 | N/A | 工作流概念 | v1.10 |
加密 | 加密或解密数据而无需管理密钥 | N/A | 加密概念 | v1.11 |
actor 状态 TTL | 允许 actor 将记录保存到状态存储中,并设置生存时间 (TTL) 以自动清理旧数据。在当前实现中,带有 TTL 的 actor 状态可能无法被客户端正确反映。请阅读 actor 状态事务 以获取更多信息。 | ActorStateTTL | actor 状态事务 | v1.11 |
组件热重载 | 允许 Dapr 加载的组件进行“热重载”。当在 Kubernetes 中或在自托管模式下更新文件中的组件规范时,组件会被重新加载。对 actor 状态存储和工作流后端的更改将被忽略。 | HotReload | 热重载 | v1.13 |
订阅热重载 | 允许声明性订阅进行“热重载”。当在 Kubernetes 中更新订阅时,或在自托管模式下更新文件中的订阅时,订阅会被重新加载。重载时不会影响正在进行的消息。 | HotReload | 热重载 | v1.14 |
调度器 actor 提醒 | 调度器 actor 提醒是存储在调度器控制平面服务中的 actor 提醒,与存储在放置控制平面服务中的 actor 提醒系统不同。SchedulerReminders 预览功能默认设置为 true ,但您可以通过将其设置为 false 来禁用调度器 actor 提醒。 | SchedulerReminders | 调度器 actor 提醒 | v1.14 |
6 - Alpha 和 Beta API
Alpha API
模块/API | gRPC | HTTP | 描述 | 文档 | 引入版本 |
---|---|---|---|---|---|
查询状态 | 查询状态 proto | v1.0-alpha1/state/statestore/query | 状态查询 API 可以让您检索、过滤和排序存储在状态存储组件中的键值数据。 | 查询状态 API | v1.5 |
分布式锁 | 锁 proto | /v1.0-alpha1/lock | 分布式锁 API 可以让您对资源进行锁定。 | 分布式锁 API | v1.8 |
批量发布 | 批量发布 proto | v1.0-alpha1/publish/bulk | 批量发布 API 允许您在单个请求中向主题发布多条消息。 | 批量发布和订阅 API | v1.10 |
批量订阅 | 批量订阅 proto | N/A | 批量订阅应用程序回调可以在一次调用中接收来自主题的多条消息。 | 批量发布和订阅 API | v1.10 |
加密 | 加密 proto | v1.0-alpha1/crypto | 加密 API 可以执行复杂的加密操作来加密和解密消息。 | 加密 API | v1.11 |
任务 | 任务 proto | v1.0-alpha1/jobs | 任务 API 可以让您调度和编排任务。 | 任务 API | v1.14 |
对话 | 对话 proto | v1.0-alpha1/conversation | 使用对话 API 可以在不同的大型语言模型之间进行交流。 | 对话 API | v1.15 |
Beta API
当前没有 Beta API。