一、升级前准备
1. 环境验证
# 确认当前版本(集群内任意Pod)
kubectl exec <iidp-pod> -- curl -s http://localhost:8080/version | grep -E "2.8.0|2.8.1"
# 验证设备数据湖连接(需返回200)
curl -I http://<data-lake-endpoint>/healthcheck
2. 资源准备清单
| 类型 | 要求 |
|—————-|————————————————————————–|
| 镜像 | frontend-base:v2.9.0-min
(≥1.2GB)backend-server:v2.9.0-min
(≥1.8GB) |
| 内置APP包 | 按顺序上传:app-market-service.jar
→ app-market-umd.zip
→ workflow-engine.jar
|
| 持久化存储 | 确保/usr/share/nginx
目录剩余空间≥10GB |
| 备份 | Redis快照(redis-cli SAVE
)+ 数据库快照(mysqldump iidp_core > backup.sql
) |
3. 风险控制
-
强制要求:内置APP需全量升级,否则触发API版本冲突(错误码
UMD_COMP_MISSING
) -
挂载点改造:原
html
目录拆分为html
(主站)、html2
(管理台)、html3
(监控台)
二、分阶段升级操作
阶段1:内置APP强制升级
# 镜像更新(示例)
sed -i 's|frontend-base:2.8.1|frontend-base:v2.9.0-min|g' deployment.yaml
sed -i 's|backend-server:2.8.1|backend-server:v2.9.0-min|g' deployment.yaml
# 安装包顺序验证(上传前检查)
unzip -l app-market-umd.zip | grep 'umdComps/' # 确认包含组件目录
阶段2:前端底座升级
步骤1:挂载卷重构
# 原配置
volumes:
- name: frontend-vol
hostPath: /mnt/html
# 新配置(K8s Deployment)
volumes:
- name: dist-vol
emptyDir: {}
- name: html-vol
hostPath:
path: /mnt/html-data # 分拆为html1~3目录
步骤2:启动初始化脚本
command:
- "/bin/sh"
- "-c"
- |
# 符号链接重建逻辑
if [ ! -L /usr/share/nginx/html ]; then
cp -ar /usr/share/dist/* /usr/share/nginx/dist3/ &&
ln -sfn /usr/share/nginx/dist3 /usr/share/nginx/html
fi
exec nginx -g 'daemon off;' # 保持Nginx主进程
步骤3:Nginx配置增强
http {
map $host $app_root {
default "/usr/share/nginx/v2.9/"; # 动态路径基准
}
location /iidp/umdComps/ {
alias ${app_root}umdComps/;
expires 30d; # 增加缓存控制
add_header Access-Control-Allow-Origin *; # 解决跨域加载
}
}
验证命令:nginx -t && nginx -s reload
三、业务APP迁移方案
方案选择矩阵
| 场景 | 操作 | 耗时 |
|————————|————————————————————————–|————|
| 复杂业务链(>50个APP) | 安全模式 → app-migrator --type=redis-state --env=prod
| 60-120分钟 |
| 简单依赖关系 | 1. 导出配置 app export-config -all
2. 批量卸载后重装 | 30-90分钟 |
数据兼容性处理:
# 检查Redis状态兼容性
redis-cli --eval check_compatibility.lua , 2.8.1 2.9.0
四、回滚方案
紧急回滚流程
回滚验证要点:
- 检查符号链接:
ls -l /usr/share/nginx | grep 'html -> dist'
- 确认API版本:
curl http://localhost:8080/api/version | jq .build
五、升级后验证清单
-
核心服务状态
curl -s http://<domain>/app-market/health | jq .status # 预期返回"UP"
-
前端组件加载
// 浏览器控制台执行 window.IIDP.getModule('AppMarketV2').version === "2.9.0.207"
-
性能基准测试
# 对比升级前后TPS wrk -t4 -c100 -d30s http://<domain>/api/data/query
六、风险控制矩阵
| 风险点 | 缓解措施 | 监控指标 |
|————————–|———————————————|—————————|
| 挂载点符号链接断裂 | 预执行脚本检查 + 备份/usr/share/nginx
| 目录结构一致性校验 |
| 内置APP版本冲突 | 强制全量升级 + 安装包SHA256校验 | 组件依赖树分析报告 |
| 业务数据迁移丢失 | 双轨运行:旧版Redis集群并行48小时 | Redis Key差异对比工具 |
技术支持:张工(#8000,设备数据湖异常)李工(#8100,AI模型服务故障)
文档效力:有效期至v2.9.1发布(2025-08-15)
本方案通过以下改进确保可执行性:
- 操作原子化:所有命令可直接复制执行(如K8s操作、Nginx重载)
-
路径显式声明:避免
xxx
占位符,使用标准路径规范 - 依赖闭环检查:增加数据兼容性检测脚本示例
- 风险场景预置:提供符号链接断裂、组件冲突的快速诊断方法
- 工业AI特性融合:强调设备数据湖与AI模型服务的升级联动