Skip to content

feat: Add Nacos 3.x support#165

Merged
johnlanni merged 2 commits into
higress-group:mainfrom
CH3CHO:feat/nacos3
Jun 10, 2025
Merged

feat: Add Nacos 3.x support#165
johnlanni merged 2 commits into
higress-group:mainfrom
CH3CHO:feat/nacos3

Conversation

@CH3CHO
Copy link
Copy Markdown
Collaborator

@CH3CHO CH3CHO commented May 17, 2025

  1. Support using Nacos 3.x as configuration storage.
    However, user needs to set nacos.core.api.compatibility.console.enabled=true in Nacos.
    image
  2. Upgrade built-in Nacos to v3.0.0

fixes higress-group/higress#2135

@CH3CHO CH3CHO requested a review from johnlanni as a code owner May 17, 2025 12:37
@lingma-agents
Copy link
Copy Markdown

lingma-agents Bot commented May 17, 2025

feat: 支持Nacos 3.x并分离服务与控制台端口配置

变更文件

文件路径 变更说明
README.md 添加`--nacos-service-port`和`--nacos-console-port`参数说明,默认值分别为8848和8888。
bin/configure.sh 新增参数解析逻辑及端口验证,支持独立配置Nacos服务与控制台端口。
compose/.env 升级Nacos镜像版本至v3.0.0并新增控制台端口默认值。
compose/docker-compose.yml 调整端口映射,新增控制台端口8888映射,并为服务添加hostname。
compose/env/nacos.env 增加Nacos 3.x兼容性配置项,禁用认证并启用API兼容模式。
compose/scripts/init.sh 实现Nacos API版本检测,适配v1/v3接口路径及认证逻辑。

时序图

sequenceDiagram
    participant configure.sh as 参数解析脚本
    participant init.sh as 初始化脚本
    participant Nacos as Nacos服务
    configure.sh->>+init.sh: 传递--nacos-service-port和--nacos-console-port
    init.sh->>Nacos: 检测API版本并适配路径
    Nacos-->>init.sh: 返回健康状态码
    init.sh->>init.sh: 验证兼容性配置项
    init.sh->>configure.sh: 返回配置结果
Loading

💡 小贴士

与 lingma-agents 交流的方式

📜 直接回复评论
直接回复本条评论,lingma-agents 将自动处理您的请求。例如:

  • 在当前代码中添加详细的注释说明。

  • 请详细介绍一下你说的 LRU 改造方案,并使用伪代码加以说明。

📜 在代码行处标记
在文件的特定位置创建评论并 @lingma-agents。例如:

  • @Lingma-Agent 分析这个方法的性能瓶颈并提供优化建议。

  • @Lingma-Agent 对这个方法生成优化代码。

📜 在讨论中提问
在任何讨论中 @lingma-agents 来获取帮助。例如:

  • @Lingma-Agent 请总结上述讨论并提出解决方案。

  • @Lingma-Agent 请根据讨论内容生成优化代码。

Copy link
Copy Markdown

@lingma-agents lingma-agents Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔍 代码评审报告

🎯 评审意见概览

严重度 数量 说明
🔴 Blocker 1 阻断性问题,需立即修复。例如:系统崩溃、关键功能不可用或严重安全漏洞。
🟠 Critical 0 严重问题,高优先级修复。例如:核心功能异常或性能瓶颈影响用户体验。
🟡 Major 0 主要问题,建议修复。例如:非核心功能缺陷或代码维护性较差。
🟢 Minor 0 次要问题,酌情优化。例如:代码格式不规范或注释缺失。

总计: 1 个问题

⚠️ **需要立即关注的阻断性问题**

src/get-higress.sh


📋 评审意见详情

💡 单文件建议

以下是文件级别的代码建议,聚焦于代码的可读性、可维护性和潜在问题。
📜 src/get-higress.sh (1 💬)

🚀 跨文件建议

以下是对代码架构和设计的综合分析,聚焦于跨文件交互、系统一致性和潜在优化空间。
🔍 1. 参数名称变更未处理向后兼容性

移除了--nacos-port参数但未保留向后兼容逻辑,可能导致旧版本配置失效。在src/get-higress.sh和configure.sh中直接删除了旧参数而未处理参数映射,未在新参数中保留兼容逻辑。

📌 关键代码:

+     --nacos-service-port=NACOS-SERVICE-PORT
+                            the HTTP port used to access the built-in Nacos service
...
-     --nacos-port=NACOS-PORT

⚠️ 潜在风险: 使用旧版本配置的用户会遇到参数不识别问题,导致部署失败。需要在新参数中保留旧参数的兼容处理逻辑

🔍 2. 配置脚本存在变量赋值错误

在configure.sh的参数解析逻辑中,将--nacos-service-port的值错误地赋给了NACOS_CONSOLE_PORT变量,导致服务端口和控制台端口参数逻辑混淆。

📌 关键代码:

--nacos-service-port=*)
  NACOS_CONSOLE_PORT="${1#*=}"

⚠️ 潜在风险: 会导致服务端口和控制台端口配置错误,引发端口冲突或服务不可用问题,需要修正变量名称

🔍 3. 端口映射与文档描述不一致

docker-compose.yml中将NACOS_CONSOLE_PORT映射到8080端口,但文档中说明默认控制台端口为8888,存在端口配置矛盾。

📌 关键代码:

- "${NACOS_CONSOLE_PORT:-8888}:8080/tcp"

⚠️ 潜在风险: 导致用户实际访问地址与文档描述不符,需要统一端口映射和文档说明

🔍 4. Nacos 3.x API兼容性处理不完善

虽然添加了API兼容性检查,但checkNacos3ApiCompatibility函数仅输出警告未强制阻止部署,且未验证所有关键API路径的兼容性。

📌 关键代码:

if [ $statusCode -eq 410 ]; then
  echo "Nacos 3.x isn't fully supported yet..."
elif [ $statusCode -ne 200 ]; then
  echo "Something might be wrong..."

⚠️ 潜在风险: 可能导致Nacos 3.x环境下配置初始化失败,需要加强兼容性验证逻辑

🔍 5. 冗余配置引入技术债务

在多个配置文件中新增了未被使用的mcpServer配置段(如all-in-one/config/configmaps/higress-config.yaml和compose/scripts/prepare.sh),但未发现相关功能实现。

📌 关键代码:

mcpServer:
  enable: false
  sse_path_suffix: /sse
  redis:

⚠️ 潜在风险: 冗余配置会增加维护成本,建议移除或添加明确注释说明用途

🔍 6. 缺乏新功能的测试覆盖

新增的Nacos 3.x支持功能缺少对应的测试用例,特别是旧参数兼容性和API版本检测等关键逻辑未见测试覆盖。

⚠️ 潜在风险: 可能导致潜在兼容性问题未被发现,需要补充对应测试用例

🔍 7. 密钥生成逻辑存在安全风险

在compose/scripts/init.sh中,使用cat /dev/urandom生成加密密钥时未指定字符集范围,可能导致生成非安全字符组合。

📌 关键代码:

cat /dev/urandom | tr -dc '[:graph:]' | head -c 32 >nacos.key

⚠️ 潜在风险: 可能生成包含特殊字符的密钥导致配置解析失败,建议使用base64等更安全的生成方式


💡 小贴士

与 lingma-agents 交流的方式

📜 直接回复评论
直接回复本条评论,lingma-agents 将自动处理您的请求。例如:

  • 在当前代码中添加详细的注释说明。

  • 请详细介绍一下你说的 LRU 改造方案,并使用伪代码加以说明。

📜 在代码行处标记
在文件的特定位置创建评论并 @lingma-agents。例如:

  • @Lingma-Agent 分析这个方法的性能瓶颈并提供优化建议。

  • @Lingma-Agent 对这个方法生成优化代码。

📜 在讨论中提问
在任何讨论中 @lingma-agents 来获取帮助。例如:

  • @Lingma-Agent 请总结上述讨论并提出解决方案。

  • @Lingma-Agent 请根据讨论内容生成优化代码。

Comment thread src/get-higress.sh
Copy link
Copy Markdown
Contributor

@johnlanni johnlanni left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@johnlanni johnlanni merged commit a150b78 into higress-group:main Jun 10, 2025
2 checks passed
@CH3CHO CH3CHO deleted the feat/nacos3 branch June 10, 2025 13:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

QuickStart 支持 Nacos-server V3.0.0

2 participants