diff --git a/a.shell b/a.shell new file mode 100644 index 0000000..e69de29 diff --git a/releases/2.5.0/README-zh.md b/releases/2.5.0/README-zh.md new file mode 100644 index 0000000..3c67550 --- /dev/null +++ b/releases/2.5.0/README-zh.md @@ -0,0 +1,124 @@ +# Dragonfly v2.5.0 发布了 + +Dragonfly v2.5.0 发布了!🎉🎉🎉 感谢为此版本做出贡献的[贡献者们](https://github.com/dragonflyoss/dragonfly/graphs/contributors),欢迎访问 [d7y.io](https://d7y.io) 网站。 + +![dragonfly](images/dragonfly-linear.png) + +## 新增特性 + +### 支持直接拉取 Hugging Face 和 ModelScope 仓库 + +Dragonfly 客户端现已支持直接下载 Hugging Face 和 ModelScope 的模型仓库。用户可以使用 `dfget hf://deepseek-ai/DeepSeek-OCR` 和 `dfget modelscope://models/deepseek-ai/DeepSeek-OCR` 等命令拉取仓库。 +其中 Git LFS 数据通过 Dragonfly P2P 加速下载,其他仓库元数据则继续通过 Git 协议获取。 + +![p1](images/p1.png) + +更多信息,请参阅 [Hugging Face 仓库下载](https://github.com/dragonflyoss/dragonfly/issues/4419) 和 [ModelScope 仓库下载](https://github.com/dragonflyoss/dragonfly/issues/4420)。 + +### Dragonfly Injector 支持 Kubernetes Webhook 自动注入 + +Dragonfly 提供 [dragonfly-injector](https://github.com/dragonflyoss/dragonfly-injector),这是一个用于自动注入 P2P 能力的 Kubernetes Mutating Admission Webhook。 +它可以通过基于注解的策略,自动向应用 Pod 注入 Dragonfly 客户端二进制、配置、Dfdaemon Socket 挂载以及 CLI 工具,使应用镜像无需重新构建即可使用 Dragonfly 下载文件。 +Helm Charts 也支持启用 Webhook Injection 部署方式。 + +更多信息,请参阅 [Using Dragonfly with webhook injection](https://d7y.io/docs/next/getting-started/installation/helm-charts/#using-dragonfly-with-webhook-injection)。 + +### Blocklist 禁用指定下载能力 + +Dragonfly 支持在 Manager 控制台中配置 Blocklist,用于禁用指定下载。 +该功能可作为应急手段,降低突发异常请求对服务造成的影响。 +当下载被 Blocklist 拦截时,gRPC 下载会返回 `PermissionDenied` 错误码,HTTP Proxy 下载会返回 `FORBIDDEN` 状态。 + +![p1](images/p2.png) + +更多信息,请参阅 [Blocklist](https://d7y.io/docs/next/advanced-guides/blocklist/)。 + +### 更完善的限流能力 + +Dragonfly 在控制面和客户端侧提供了更完整的限流能力。 +Manager 和 Scheduler 的 gRPC 服务支持可配置的请求限流。 +客户端支持上传带宽、下载带宽、回源带宽、预取带宽、上传请求、下载请求以及自适应限流,以更好地保护源站服务,并提升高负载场景下的系统稳定性。 + +更多信息,请参阅 [Rate Limit](https://d7y.io/docs/next/advanced-guides/rate-limit/)。 + +### dfctl 命令行工具 + +Dragonfly 客户端新增 `dfctl` 命令行工具,用于管理客户端本地存储中的任务,包括普通任务、持久化任务和持久化缓存任务。 +它支持列出和删除本地资源,并可以通过 Scheduler 对文件和镜像任务执行预热。 + +更多信息,请参阅 [dfctl](https://d7y.io/docs/next/reference/commands/client/dfctl/)。 + +### 容器镜像仓库代理配置简化 + +Dfdaemon 现在可以根据 containerd 镜像仓库镜像请求中附带的 `ns` 查询参数推断上游镜像仓库。 +结合 `proxyAllRegistries: true`,用户可以通过单个 `_default/hosts.toml` 配置将所有镜像仓库流量路由到 Dragonfly,而无需为每个镜像仓库维护独立的 `hosts.toml` 文件和 `X-Dragonfly-Registry` 请求头。 + +更多信息,请参阅 [Infer upstream registry from containerd ns query parameter](https://github.com/dragonflyoss/client/issues/1791) 和 [proxyAllRegistries 文档更新](https://github.com/dragonflyoss/d7y.io/pull/410)。 + +### 客户端下载与文件传输性能优化 + +Dragonfly 客户端在下载效率和文件传输可靠性方面进行了多项优化。 +Parent Selector 和 Piece Collector 现在可以更好地协同,在调度决策前主动收集足够数量的父节点,从而提升带宽利用率,并在父节点不稳定时保持兼容的回退行为。 +文件导出和下载操作现在使用缓冲写入,同时调整了 gRPC stream buffer 大小和连接相关配置,以提升大文件传输性能。 + +### HTTP 处理与重定向安全增强 + +HTTP backend 现在使用 HTTP/1.1,并在响应中存在 `Transfer-Encoding` 但缺少 `Content-Length` 时,重试 `HEAD` 请求以获取正确的内容长度。 +Dragonfly 在跨域重定向时也会移除 `Authorization`、`Cookie` 等敏感请求头,并避免缓存相对路径形式的 HTTP 307 redirect location,同时仍会在请求处理中正确解析相对路径重定向。 + +### 附加功能增强 + +- Manager 新增 ExternalRedis TLS 支持,包括 CA 证书、客户端证书、私钥以及 `insecureSkipVerify` 配置。 +- 移除已废弃的 V1 预热 API,并统一使用 `/healthy` 健康检查接口。 +- 优化上传和下载指标采集,并移除未使用的 gRPC Piece Download 逻辑。 +- 改进 `INSTANCE_NAME` 生成逻辑,优先使用 Kubernetes 构建期环境变量,并在未设置时回退到系统 Hostname。 +- 在 dfdaemon 中新增 `hickory_dns` 配置选项,使 DNS 解析行为可配置。 +- 优化 OCI Registry Blob 下载的任务 ID 计算,减少跨镜像仓库重复下载和重复存储。 + +## 重要修复 + +- 修复 Redis Lua 脚本中 peer TTL 和 `concurrent_piece_count` 参数顺序不一致的问题,避免错误的 key 过期时间和 peer 状态。 +- 修复 PostgreSQL 在初始化默认 Scheduler Cluster 和 Seed Peer Cluster 后 `SERIAL` 序列未推进的问题,避免创建新集群时发生主键冲突。 +- 修复相对路径 HTTP 307 重定向处理逻辑:相对路径 `Location` 不再写入缓存,并会在跟随重定向前基于原始 URL 正确解析。 + +## Nydus + +### 新增特性 + +- 支持为 Ondemand 数据构建 Prefetch 优化的层 Blob。 +- 支持 Nydus 镜像转换为 OCI 格式,支持本地归档互转。 +- Nydusify Copy 支持 zero-disk transfer。 +- 为 virtio-pmem DAX 后端引入基于 uffd 的支持,以支持 Kata 场景高性能镜像按需加载。 +- Storage 层支持由 Proxy 切换到 Dragonfly SDK 模式,以提高 P2P 缓存命中性能。 +- 支持短容器 ID 提交,提交前同步文件系统。 +- 支持恢复 Nydusd 时重发 FUSE 请求,修复热升级测试。 + +### 重要修复 + +- 修复 Blobfs 对 fuse-backend-rs 0.12.0 的兼容性。 +- 修复 failover-policy 参数解析。 +- 修复 Builder 中符号链接覆盖目录时的 panic。 +- 修复 chunkdict 去重逻辑、DBSCAN 聚类、chunk 排序等多个问题。 +- 修复 Nydus 镜像检测逻辑。 +- 修复 fusedev 嵌套挂载点的 remount invalidation。 +- 修复 Nydusctl 后端指标计数器重置时的数值异常。 +- Nydusify 修复镜像名修改时 blob 找不到的问题。 +- Nydusify 修复 plain HTTP 转换问题。 + +## 其他 + +您可以在 [CHANGELOG](https://github.com/dragonflyoss/dragonfly/blob/main/CHANGELOG.md) 中查看更多详细信息。 + +## 链接 + +- Dragonfly 网站: +- Dragonfly 仓库: +- Dragonfly 客户端仓库: +- Dragonfly Injector 仓库: +- Dragonfly 控制台仓库: +- Dragonfly Charts 仓库: +- Dragonfly 监控仓库: + +## Dragonfly Github + +![qrcode](images/qrcode.webp) diff --git a/releases/2.5.0/README.md b/releases/2.5.0/README.md new file mode 100644 index 0000000..38dcfdb --- /dev/null +++ b/releases/2.5.0/README.md @@ -0,0 +1,124 @@ +# Dragonfly v2.5.0 is released + +Dragonfly v2.5.0 is released!🎉🎉🎉 Thanks to the [contributors](https://github.com/dragonflyoss/dragonfly/graphs/contributors) who made this release happen and welcome you to visit [d7y.io](https://d7y.io) website. + +![dragonfly](images/dragonfly-linear.png) + +## New features and enhancements + +### Direct Repository Downloads from Hugging Face and ModelScope + +Dragonfly Client now supports directly downloading model repositories from Hugging Face and ModelScope. Users can run commands such as `dfget hf://deepseek-ai/DeepSeek-OCR` and `dfget modelscope://models/deepseek-ai/DeepSeek-OCR` to fetch repositories. +Git LFS data is downloaded through Dragonfly P2P acceleration, while other repository metadata is fetched through the Git protocol. + +![p1](images/p1.png) + +For more information, please refer to [Hugging Face repository download](https://github.com/dragonflyoss/dragonfly/issues/4419) and [ModelScope repository download](https://github.com/dragonflyoss/dragonfly/issues/4420). + +### Dragonfly Injector for Kubernetes Webhook Injection + +Dragonfly provides [dragonfly-injector](https://github.com/dragonflyoss/dragonfly-injector), a Kubernetes Mutating Admission Webhook for automatic P2P capability injection. +It can inject Dragonfly client binaries and configurations, dfdaemon socket mounts, and CLI tools into application Pods through annotation-based policies, enabling Pods to use Dragonfly for file downloads without rebuilding container images. +Helm Charts now also support deploying Dragonfly with webhook injection enabled. + +For more details, please refer to [Using Dragonfly with webhook injection](https://d7y.io/docs/next/getting-started/installation/helm-charts/#using-dragonfly-with-webhook-injection). + +### Blocklist for Download Control + +Dragonfly supports configuring a blocklist in the Manager console to disable specific downloads. +This can be used as an emergency measure to mitigate the impact of sudden abnormal requests on the service. +When a blocked download is intercepted, gRPC downloads return a `PermissionDenied` error code, and HTTP proxy downloads return a `FORBIDDEN` status. + +![p1](images/p2.png) + +For more information, please refer to [Blocklist](https://d7y.io/docs/next/advanced-guides/blocklist/). + +### Comprehensive Rate Limiting + +Dragonfly introduces more complete rate limiting capabilities across the control plane and client. +Manager and Scheduler gRPC servers now support a configurable request rate limit for unary requests and streaming connections. +The client supports outbound bandwidth, inbound bandwidth, back-to-source bandwidth, prefetch bandwidth, upload request, download request, and adaptive rate limiting to better protect source services and improve system stability under high load. + +For more information, please refer to [Rate Limit](https://d7y.io/docs/next/advanced-guides/rate-limit/). + +### dfctl Command Line Tool + +Dragonfly Client introduces `dfctl`, a command-line tool used to manage tasks in the client's local storage, including tasks, persistent tasks, and persistent cache tasks. +It supports listing and removing local resources, and can preheat file and image tasks through the Scheduler. + +For more information, please refer to [dfctl](https://d7y.io/docs/next/reference/commands/client/dfctl/). + +### Container Registry Proxy Configuration Simplification + +dfdaemon can now infer the upstream registry from the `ns` query parameter appended by containerd registry mirror requests. +Combined with `proxyAllRegistries: true`, users can route all registries through Dragonfly with a single `_default/hosts.toml` configuration instead of maintaining separate registry-specific `hosts.toml` files and `X-Dragonfly-Registry` headers. + +For more information, please refer to [Infer upstream registry from containerd ns query parameter](https://github.com/dragonflyoss/client/issues/1791) and [proxyAllRegistries documentation update](https://github.com/dragonflyoss/d7y.io/pull/410). + +### Client Download and Transfer Optimization + +Dragonfly Client improves download efficiency and file transfer reliability in multiple areas. +The parent selector and piece collector now coordinate more closely to collect enough parent peers before scheduling decisions, improving bandwidth utilization while keeping graceful fallback for unstable parent peers. +File export and download operations now use buffered writes, and gRPC stream buffer sizes and connection settings have been tuned for better large-file transfer performance. + +### HTTP Handling and Redirect Security Improvements + +The HTTP backend now uses HTTP/1.1 and improves stat request handling by retrying with a `HEAD` request when a response has `Transfer-Encoding` but no `Content-Length`. +Dragonfly also strips sensitive headers such as `Authorization` and `Cookie` when following cross-origin redirects, and avoids caching relative HTTP 307 redirect locations while still resolving them correctly during request processing. + +### Additional Enhancements + +- Add ExternalRedis TLS support in Manager, including CA certificate, client certificate, key, and `insecureSkipVerify` options. +- Remove deprecated V1 preheat API endpoints and consolidate health checks to the `/healthy` endpoint. +- Improve upload and download metrics collection and remove unused gRPC piece download logic. +- Improve `INSTANCE_NAME` generation by using Kubernetes build-time environment variables and falling back to the system hostname. +- Add dfdaemon `hickory_dns` options to make DNS resolver behavior configurable. +- Improve task ID calculation for OCI registry blob downloads to reduce redundant downloads and storage across registries. + +## Significant bug fixes + +- Fixed the Redis Lua script argument order for peer TTL and `concurrent_piece_count`, preventing unintended key expiration and incorrect peer state. +- Fixed PostgreSQL `SERIAL` sequence handling after seeding default Scheduler Cluster and Seed Peer Cluster records, avoiding primary key conflicts when creating new clusters. +- Fixed relative HTTP 307 redirect handling by skipping cache for relative `Location` values and resolving them against the base URL before following redirects. + +## Nydus + +### New features and enhancements + +- Support building prefetch-optimized layer blobs for Ondemand data. +- Support converting Nydus images to OCI format and converting to/from local archives. +- Support zero-disk transfer in Nydusify Copy. +- Introduce uffd-based support for the virtio-pmem DAX backend to enable high-performance on-demand image loading in Kata scenarios. +- Support switching the Storage layer from Proxy mode to Dragonfly SDK mode to improve P2P cache hit performance. +- Support committing with short container IDs and synchronizing the filesystem before commit. +- Support resending FUSE requests when recovering Nydusd, fixing hot-upgrade tests. + +### Significant bug fixes + +- Fix Blobfs compatibility with fuse-backend-rs 0.12.0. +- Fix failover-policy parameter parsing. +- Fix a panic in Builder when a symbolic link overwrites a directory. +- Fix multiple issues in chunkdict deduplication logic, DBSCAN clustering, and chunk sorting. +- Fix Nydus image detection logic. +- Fix remount invalidation for nested mount points in fusedev. +- Fix abnormal values when Nydusctl backend metric counters are reset. +- Fix Nydusify failing to find blobs when image names are modified. +- Fix plain HTTP conversion in Nydusify. + +## Others + +You can see [CHANGELOG](https://github.com/dragonflyoss/dragonfly/blob/main/CHANGELOG.md) for more details. + +## Links + +- Dragonfly Website: +- Dragonfly Repository: +- Dragonfly Client Repository: +- Dragonfly Injector Repository: +- Dragonfly Console Repository: +- Dragonfly Charts Repository: +- Dragonfly Monitor Repository: + +## Dragonfly Github + +![qrcode](images/qrcode.webp) diff --git a/releases/2.5.0/images/dragonfly-linear.png b/releases/2.5.0/images/dragonfly-linear.png new file mode 100644 index 0000000..3341b08 Binary files /dev/null and b/releases/2.5.0/images/dragonfly-linear.png differ diff --git a/releases/2.5.0/images/p1.png b/releases/2.5.0/images/p1.png new file mode 100644 index 0000000..05bd1b2 Binary files /dev/null and b/releases/2.5.0/images/p1.png differ diff --git a/releases/2.5.0/images/p2.png b/releases/2.5.0/images/p2.png new file mode 100644 index 0000000..529d48f Binary files /dev/null and b/releases/2.5.0/images/p2.png differ diff --git a/releases/2.5.0/images/qrcode.webp b/releases/2.5.0/images/qrcode.webp new file mode 100644 index 0000000..f66d14b Binary files /dev/null and b/releases/2.5.0/images/qrcode.webp differ