Skip to content

Commit 8d8c296

Browse files
authored
blog: add 2025 June monthly report (#1929)
1 parent 6d320dc commit 8d8c296

File tree

3 files changed

+312
-7
lines changed

3 files changed

+312
-7
lines changed
Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
---
2+
title: "2025 Monthly Report (June 01 - June 30)"
3+
keywords: ["Apache APISIX", "API Gateway", "Monthly Report", "Contributor"]
4+
description: Our monthly Apache APISIX community report generates insights into the project's monthly developments. The reports provide a pathway into the Apache APISIX community, ensuring that you stay well-informed and actively involved.
5+
tags: [Community]
6+
image: https://static.api7.ai/uploads/2025/06/30/hNrgfyse_june-monthly-report-cover-en.webp
7+
---
8+
9+
> Recently, we've introduced and updated some new features, including adding devcontainer support, enhancing Admin API filtering, and adding `headers` attribute for `loki-logger` plugin, etc. For more details, please read this month's newsletter.
10+
11+
<!--truncate-->
12+
13+
## Introduction
14+
15+
From its inception, the Apache APISIX project has embraced the ethos of open-source community collaboration, propelling it into the ranks of the most active global open-source API gateway projects. The proverbial wisdom of 'teamwork makes the dream work' rings true in our way and is made possible by the collective effort of our community.
16+
17+
From June 1st to June 30, 17 contributors made 86 commits to Apache APISIX. We sincerely appreciate your contributions to Apache APISIX.
18+
19+
## Contributor Statistics
20+
21+
![Apache APISIX Contributors List](https://static.api7.ai/uploads/2025/06/30/ctN7FHKp_june-contributor-list.webp)
22+
23+
![New Contributors List](https://static.api7.ai/uploads/2025/06/30/VDMkGEcj_june-new-contributors.webp)
24+
25+
## Feature Highlights
26+
27+
### 1. Add devcontainer support
28+
29+
PR: https://github.com/apache/apisix/pull/11765
30+
31+
Contributor: [bzp2010](https://github.com/bzp2010)
32+
33+
This PR adds devcontainer support for Linux, Windows (WSL2), and macOS across amd64/arm64 architectures, enabling seamless integration with mainstream development environments and ready-to-use functionality. Additionally, etcd is maintained using docker-compose and accessible on the local loopback.
34+
35+
### 2. Add `headers` attribute for `loki-logger` plugin
36+
37+
PR: https://github.com/apache/apisix/pull/11420
38+
39+
Contributor: [slow-groovin](https://github.com/slow-groovin)
40+
41+
This PR adds a `headers` attribute to the `loki-logger` plugin. This allows, for example, setting an authorization header when sending logs to a remote Loki service.
42+
43+
### 3. Add `max_pending_entries` attribute to the batch processor
44+
45+
PR: https://github.com/apache/apisix/pull/12338
46+
47+
Contributor: [Revolyssup](https://github.com/Revolyssup)
48+
49+
This feature introduces a new `max_pending_entries` option to the batch processor to prevent memory spikes when the log server is slow or unresponsive. This option allows dropping new entries if too many pending callbacks are waiting to be processed.
50+
51+
### 4. Enhance Admin API filtering
52+
53+
PR: https://github.com/apache/apisix/pull/12291
54+
55+
Contributor: [bzp2010](https://github.com/bzp2010)
56+
57+
The Admin API now supports filtering routes and stream routes by `service_id` and `upstream_id`, making it easier to query and manage related resources, especially for the APISIX Dashboard project.
58+
59+
### 5. Add APISIX dashboard to dev image
60+
61+
PR: https://github.com/apache/apisix/pull/12369
62+
63+
Contributor: [bzp2010](https://github.com/bzp2010)
64+
65+
This PR builds the APISIX dashboard and puts it into the dev image.
66+
67+
### 6. Add embedded APISIX dashboard UI
68+
69+
PR: https://github.com/apache/apisix/pull/12276
70+
71+
Contributor: [bzp2010](https://github.com/bzp2010)
72+
73+
This PR adds a new embedded UI to APISIX as part of the Apache APISIX Dashboard Enhancement Plan.
74+
75+
### 7. Build APISIX dashboard into the `apisix:dev` Docker image
76+
77+
PR: https://github.com/apache/apisix/pull/12300
78+
79+
Contributor: [SkyeYoung](https://github.com/SkyeYoung)
80+
81+
As a part of the APISIX Dashboard Enhancement Plan, this PR adds a workflow, which triggers the building and pushing (to the master branch only) of the APISIX dashboard into the `apisix:dev` Docker image.
82+
83+
Moving image-building files from apisix-docker to the main apisix repo improves maintenance and ensures the latest code is readily available for development and testing.
84+
85+
### 8. Support JSON format in Standalone mode
86+
87+
PR: https://github.com/apache/apisix/pull/12333
88+
89+
Contributor: [SkyeYoung](https://github.com/SkyeYoung)
90+
91+
This update introduces JSON format support for configuration in standalone file mode. It extends `apisix/core/config_yaml.lua`, enabling JSON compatibility without modifying the existing YAML configuration provider. This approach lays the groundwork for supporting additional formats like TOML in the future. JSON is also faster to parse compared to YAML.
92+
93+
### 9. Allow more characters in `credential_id` for Standalone mode
94+
95+
PR: https://github.com/apache/apisix/pull/12295
96+
97+
Contributor: [AlinsRan](https://github.com/AlinsRan)
98+
99+
This update expands the allowed characters in `credential_id` for the API-driven mode in standalone deployments. Now, `credential_id` can include underscores (_), periods (.), and short hyphens (-), enhancing flexibility for credential naming.
100+
101+
### 10. Support dash (-) in consumer usernames
102+
103+
PR: https://github.com/apache/apisix/pull/12296
104+
105+
Contributor: [AlinsRan](https://github.com/AlinsRan)
106+
107+
This PR adds support in APISIX for the same naming rules, aligning with the APISIX Ingress Controller's approach of isolating resources via namespace, using a `namespace-username` format for consumer names.
108+
109+
### 11. Expose APISIX version in Prometheus `node_info` metric
110+
111+
PR: https://github.com/apache/apisix/pull/12369
112+
113+
Contributor: [flearc](https://github.com/flearc)
114+
115+
This PR enhances the Prometheus `node_info` metric by adding a version label to expose the current APISIX version, improving observability and version tracking.
116+
117+
### 12. Warn on etcd write operations in decoupled `data_plane` mode
118+
119+
PR: https://github.com/apache/apisix/pull/12241
120+
121+
Contributor: [LiteSun](https://github.com/LiteSun)
122+
123+
When APISIX is running in the decoupled mode as the data plane instance, it now logs warnings if the data plane instance performs etcd write operations via `core.etcd` functions or the CLI. Writes will be deprecated in future releases, where such operations will be disallowed.
124+
125+
### 13. Replace events library with shdict
126+
127+
PR: https://github.com/apache/apisix/pull/12353
128+
129+
Contributor: [Revolyssup](https://github.com/Revolyssup)
130+
131+
This PR switches the Nacos discovery mechanism from the `lua-resty-events` library to a shared dictionary (shdict). This change addresses previous issues where not all workers received events reliably, causing inconsistencies. Now, a privileged agent solely handles data fetching from Nacos and writing to the shdict, while all workers read from the shdict, ensuring consistent data access.
132+
133+
## Conclusion
134+
135+
The [official website](https://apisix.apache.org/) and [GitHub Issues](https://github.com/apache/apisix/issues) of Apache APISIX provide a wealth of documentation of tutorials, and real-world use cases. If you encounter any issues, you can refer to the documentation, search for keywords in Issues, or participate in discussions on Issues to share your ideas and practical experiences.
136+
137+
## Recommended Blogs
138+
139+
- [APISIX Gateway Practices in Tencent Games](https://apisix.apache.org/blog/2025/05/07/apisix-gateway-practice-in-tencent-timi/)
140+
141+
This article details how Tencent Games' Timi Studio Group customized its API gateway based on APISIX. It played a critical role in meeting strict compliance requirements for overseas operations, reducing development and operations costs, and improving system flexibility and reliability.
142+
143+
- [APISIX Gateway Practices in Honor's Massive Business](https://apisix.apache.org/blog/2025/04/27/apisix-honor-gateway-practice-in-massive-business/)
144+
145+
This article explains in detail how Honor adopted APISIX as its API gateway. Since introducing APISIX in 2021, Honor has continuously optimized and extended the platform to build a high-performance, scalable, and reliable gateway that effectively supports its rapidly growing business at scale.
146+
147+
- [From stdio to HTTP SSE: Host Your MCP Server with APISIX API Gateway](https://apisix.apache.org/blog/2025/04/21/host-mcp-server-with-api-gateway/)
148+
149+
Discover how the Apache APISIX `mcp-bridge` plugin seamlessly converts stdio-based MCP servers to scalable HTTP SSE services.
Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
---
2+
title: "2025 社区月报 (06.01 - 06.30)"
3+
keywords: ["Apache APISIX", "API 网关", "社区月报", "贡献者"]
4+
description: Apache APISIX 社区的月报旨在帮助社区成员更全面地了解社区的最新动态,方便大家参与到 Apache APISIX 社区中来。
5+
tags: [Community]
6+
image: https://static.api7.ai/uploads/2025/06/30/aYysTnJw_june-monthly-report-cover-cn.webp
7+
---
8+
9+
> 最近,我们新增并优化了一些功能,如新增 devcontainer 支持、增强 Admin API 过滤功能、为 `loki-logger` 插件添加 `headers` 属性等。有关更多细节,请阅读本期月报。
10+
11+
<!--truncate-->
12+
13+
## 导语
14+
15+
Apache APISIX 项目始终秉承着开源社区协作的精神,自问世起便崭露头角,如今已经成为全球最活跃的开源 API 网关项目之一。正如谚语所言,“众人拾柴火焰高”,这一辉煌成就,得益于整个社区伙伴的协同努力。
16+
17+
从 2025.06.01 至 2025.06.30,有 17 名开发者提交了 86 个 commits,为 Apache APISIX 做出了重要贡献。感谢这些伙伴们对 Apache APISIX 的无私支持!正是因为你们的付出,才能让 Apache APISIX 项目不断改进、提升和壮大。
18+
19+
## 贡献者统计
20+
21+
![贡献者名单](https://static.api7.ai/uploads/2025/06/30/ctN7FHKp_june-contributor-list.webp)
22+
23+
![新晋贡献者](https://static.api7.ai/uploads/2025/06/30/VDMkGEcj_june-new-contributors.webp)
24+
25+
## 近期亮点功能
26+
27+
### 1. 新增 devcontainer 支持
28+
29+
相关 PR:https://github.com/apache/apisix/pull/11765
30+
31+
贡献者:[bzp2010](https://github.com/bzp2010)
32+
33+
本 PR 新增 devcontainer 支持,覆盖 Linux、Windows (WSL2)、macOS 操作系统及 amd64/arm64 CPU 架构,适配主流开发环境,开箱即用。另外,通过 docker-compose 维护 etcd,可在本地回环地址中对它进行访问。
34+
35+
### 2. 为 `loki-logger` 插件添加 `headers` 属性
36+
37+
相关 PR:https://github.com/apache/apisix/pull/11420
38+
39+
贡献者:[slow-groovin](https://github.com/slow-groovin)
40+
41+
`loki-logger` 插件新增了 `headers` 属性 `authorization`。通过此功能,用户可以在将日志发送到远程 Loki 服务时,设置授权等自定义请求头。
42+
43+
### 3. 为批处理器新增 `max_pending_entries` 配置项
44+
45+
相关 PR:https://github.com/apache/apisix/pull/12338
46+
47+
贡献者:[Revolyssup](https://github.com/Revolyssup)
48+
49+
此 PR 为批处理器新增了 `max_pending_entries` 配置项,用于防止在日志服务器响应缓慢或无响应时引发内存激增。该配置允许在等待处理的回调数量过多时丢弃新的日志条目。
50+
51+
### 4. 增强 Admin API 过滤功能
52+
53+
相关 PR:https://github.com/apache/apisix/pull/12291
54+
55+
贡献者:[bzp2010](https://github.com/bzp2010)
56+
57+
Admin API 支持通过 `service_id``upstream_id` 过滤 routes 和 stream routes,使用户更容易查询和管理相关资源,特别是对 APISIX Dashboard 项目更为友好。
58+
59+
### 5. 将 APISIX Dashboard 集成到开发镜像
60+
61+
相关 PR:https://github.com/apache/apisix/pull/12369
62+
63+
贡献者:[bzp2010](https://github.com/bzp2010)
64+
65+
此 PR 将 APISIX Dashboard 集成到开发镜像。
66+
67+
### 6. 为 APISIX Dashboard 新增嵌入式仪表盘
68+
69+
相关 PR:https://github.com/apache/apisix/pull/12276
70+
71+
贡献者:[bzp2010](https://github.com/bzp2010)
72+
73+
作为 APISIX Dashboard 优化计划的一部分,本 PR 在 APISIX 中支持了嵌入式仪表盘的基础架构。
74+
75+
### 7. 将 APISIX Dashboard 构建到 `apisix:dev` Docker 镜像中
76+
77+
相关 PR:https://github.com/apache/apisix/pull/12300
78+
79+
贡献者:[SkyeYoung](https://github.com/SkyeYoung)
80+
81+
此特性为 APISIX Dashboard 优化计划的一部分。该 PR 引入了一个工作流,仅 master 主分支上提交代码时,会触发 APISIX Dashboard `apisix:dev` Docker 镜像的构建与推送。将镜像构建文件从 `apisix-docker` 移至主 `apisix` 仓库,便于维护管理,并确保开发测试能及时用上最新代码。
82+
83+
### 8. 为 Standalone 模式引入 JSON 格式支持
84+
85+
相关 PR:https://github.com/apache/apisix/pull/12296
86+
87+
贡献者:[SkyeYoung](https://github.com/SkyeYoung)
88+
89+
此 PR 为 Standalone 模式下的配置引入了 JSON 格式支持。通过扩展 `apisix/core/config_yaml.lua`,实现了对 JSON 的兼容,而无需修改现有的 YAML 配置提供程序。JSON 的解析速度比 YAML 更快,并且便于在未来支持 TOML 等其他格式。
90+
91+
### 9. 为 Standalone 模式中 `credential_id` 增加对更多字符的支持
92+
93+
相关 PR:https://github.com/apache/apisix/pull/12295
94+
95+
贡献者:[AlinsRan](https://github.com/AlinsRan)
96+
97+
为 APISIX 的 Standalone 模式中的 `credential_id` 增加了对更多字符的支持,包括下划线(_)、点(.)和短横线(-),提升了凭证命名的灵活性。
98+
99+
### 10. 支持在 consumer 用户名中使用连字符 (-)
100+
101+
相关 PR:https://github.com/apache/apisix/pull/12296
102+
103+
贡献者:[AlinsRan](https://github.com/AlinsRan)
104+
105+
APISIX Ingress Controller 通过 namespace 来隔离资源,例如,为 consumer 设置 `namespace-username` 格式的名称。本 PR 为 APISIX 增加对相同命名规则的支持,允许在 consumer 用户名中使用连字符,从而与 APISIX Ingress Controller 相一致。
106+
107+
### 11. 在 Prometheus `node_info` 指标中暴露 APISIX 版本
108+
109+
相关 PR:https://github.com/apache/apisix/pull/12367
110+
111+
贡献者:[flearc](https://github.com/flearc)
112+
113+
此 PR 增强了 Prometheus 的 `node_info` 指标,增加了 `version` 标签用于暴露当前 APISIX 版本,从而提升可观测性和版本追踪能力。
114+
115+
### 12. 在解耦 `data_plane` 模式下对执行 etcd 写操作进行警告
116+
117+
相关 PR:https://github.com/apache/apisix/pull/12241
118+
119+
贡献者:[LiteSun](https://github.com/LiteSun)
120+
121+
当 APISIX 以数据面实例运行在解耦模式时,如果通过 `core.etcd` 函数或 CLI 执行 etcd 写操作,将记录警告日志。未来版本中将弃用并禁止此类操作。
122+
123+
### 13. 将 Nacos 发现机制的事件库替换为共享字典
124+
125+
相关 PR:https://github.com/apache/apisix/pull/12353
126+
127+
贡献者:[Revolyssup](https://github.com/Revolyssup)
128+
129+
此 PR 将 Nacos 发现机制从 `lua-resty-events` 库改为使用共享字典(shdict)。此前使用 `lua-resty-events` 时,部分工作进程无法可靠接收事件,导致数据不一致。现在由特权代理负责从 Nacos 获取数据并写入 shdict,所有工作进程均从 shdict 读取数据,确保数据访问一致性。
130+
131+
## 结语
132+
133+
Apache APISIX 的项目[官网](https://apisix.apache.org/zh/)和 Github 上的 [Issues](https://github.com/apache/apisix/issues) 上已经积累了比较丰富的文档教程和使用经验,如果您遇到问题可以翻阅文档,用关键词在 Issues 中搜索,也可以参与 Issues 上的讨论,提出自己的想法和实践经验。
134+
135+
## 最新博客速览
136+
137+
- [游戏业务出海:TAPISIX 稳定运营实践](https://apisix.apache.org/zh/blog/2025/05/07/apisix-gateway-practice-in-tencent-timi/)
138+
139+
本文详细介绍了腾讯游戏旗下的天美工作室群使用基于开源 APISIX 定制开发的业务网关 TAPISIX,在满足海外业务的高合规性要求、降低开发和运维门槛、提高系统灵活性和可靠性等方面发挥了关键作用。
140+
141+
- [APISIX 在荣耀海量业务下的网关实践](https://apisix.apache.org/zh/blog/2025/04/27/apisix-honor-gateway-practice-in-massive-business/)
142+
143+
本文将详细阐述荣耀基于 APISIX 的网关实践。荣耀自 2021 年引入 APISIX 以来,通过持续的优化与扩展,构建了一个高性能、高扩展性且可靠的网关平台,成功支持了海量业务的快速发展。
144+
145+
- [从 stdio 到 HTTP SSE:使用 APISIX 托管 MCP Server](https://apisix.apache.org/zh/blog/2025/04/21/host-mcp-server-with-api-gateway/)
146+
147+
探索 Apache APISIX 的 `mcp-bridge` 插件如何无缝地将基于 stdio 的 MCP Server 转换为可扩展的 HTTP SSE 服务。

scripts/sync-docs.js

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,17 +38,27 @@ const tasks = new Listr([
3838
const exist = await isDirExisted(dir);
3939
if (exist) {
4040
gitMap[name] = simpleGit(dir);
41+
// Use more robust fetch for existing repositories
4142
await gitMap[name]
4243
.cwd(dir)
43-
.fetch(['--prune', '--filter=blob:none', '--recurse-submodules=no']);
44+
.fetch(['--prune', '--recurse-submodules=no']);
4445
} else {
4546
gitMap[name] = simpleGit();
46-
await gitMap[name]
47-
.clone(`https://github.com/apache/${name}.git`, dir, {
47+
// Use more robust clone without filter in CI environment
48+
const isCI = process.env.CI === 'true' || process.env.GITHUB_ACTIONS === 'true';
49+
const cloneOptions = isCI
50+
? {
51+
'--sparse': true,
52+
'--recurse-submodules': 'no',
53+
}
54+
: {
4855
'--filter': 'blob:none',
4956
'--sparse': true,
5057
'--recurse-submodules': 'no',
51-
})
58+
};
59+
60+
await gitMap[name]
61+
.clone(`https://github.com/apache/${name}.git`, dir, cloneOptions)
5262
.cwd(dir)
5363
.raw(['sparse-checkout', 'set', 'docs']);
5464

@@ -77,7 +87,7 @@ const tasks = new Listr([
7787
projectReleases[project.name] = ret.all
7888
.filter((release) => (isIngressController
7989
? release.includes('remotes/origin/v')
80-
&& semver.gt(release.replace('remotes/origin/v', ''), '0.3.0')
90+
&& semver.gt(release.replace('remotes/origin/v', ''), '0.3.0')
8191
: release.includes('remotes/origin/release/')))
8292
.map((release) => (isIngressController
8393
? release.replace('remotes/origin/v', '')
@@ -193,8 +203,7 @@ async function replaceMDElements(project, path, branch = 'master') {
193203
const projectNameWithoutPrefix = project === 'apisix' ? 'apisix' : project.replace('apisix-', '');
194204
const newUrl = match.replace(
195205
/\]\(.*\)/g,
196-
`](https://apisix.apache.org${
197-
lang === 'en' ? '' : `/${lang}`
206+
`](https://apisix.apache.org${lang === 'en' ? '' : `/${lang}`
198207
}/docs/${projectNameWithoutPrefix}/${urlPath})`,
199208
);
200209
log(`${project}: ${match} 👉 ${newUrl}`);

0 commit comments

Comments
 (0)