feat: Add Nacos 3.x support#165
Conversation
feat: 支持Nacos 3.x并分离服务与控制台端口配置变更文件
时序图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: 返回配置结果
💡 小贴士与 lingma-agents 交流的方式📜 直接回复评论
📜 在代码行处标记
📜 在讨论中提问
|
There was a problem hiding this comment.
🔍 代码评审报告
🎯 评审意见概览
| 严重度 | 数量 | 说明 |
|---|---|---|
| 🔴 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..."🔍 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💡 小贴士
与 lingma-agents 交流的方式
📜 直接回复评论
直接回复本条评论,lingma-agents 将自动处理您的请求。例如:
-
在当前代码中添加详细的注释说明。
-
请详细介绍一下你说的 LRU 改造方案,并使用伪代码加以说明。
📜 在代码行处标记
在文件的特定位置创建评论并 @lingma-agents。例如:
-
@Lingma-Agent 分析这个方法的性能瓶颈并提供优化建议。
-
@Lingma-Agent 对这个方法生成优化代码。
📜 在讨论中提问
在任何讨论中 @lingma-agents 来获取帮助。例如:
-
@Lingma-Agent 请总结上述讨论并提出解决方案。
-
@Lingma-Agent 请根据讨论内容生成优化代码。
However, user needs to set nacos.core.api.compatibility.console.enabled=true in Nacos.
fixes higress-group/higress#2135