分布式系统升级技术指引文档


一、路由信息迁移规范

1.1 边车路由提取

  1. 服务访问
    kubectl -n {namespace} get svc redis-stack  # 确认NodePort端口(默认8001)
  2. 数据查询
    通过RedisInsight执行查询指令:
    SCAN 0 MATCH *statestore||app_key*  # 获取全量路由键
  3. 格式转换
    使用平台提供的route-converter工具进行数据迁移:
    ./converter --input=redis_export.json --output=new_arch_routes.yaml

二、配置管理标准化

2.1 命名规范重构

| 原配置项 | 新标准配置项 | 变更类型 | |——————-|——————|—————-| | snest-nginx | iidp-nginx | 强制重建 | | snest-app | iidp-app | 配置迁移 |

2.2 网关配置新增(gw.yaml)

apiVersion: v1
kind: ConfigMap
metadata:
  name: iidp-gw-config
  namespace: {target_namespace}
data:
  routing-policy: |
    # 核心路由策略
    engine.store.meta.mode=CLOUD
    engine.run.mode=DISTRIBUTED_V2
  image-config: |
    app.install.image=registry.iidp.cn/core/gateway:v3.2.1

2.3 应用配置迁移

  1. 配置文件继承
    kubectl get cm snest-app -o yaml > iidp-app.yaml
    sed -i 's/snest-app/iidp-app/g' iidp-app.yaml
  2. 关键参数注入
    application-dev.properties追加:
    # 分布式模式配置
    cluster.node.ttl=300s
    service.discovery.interval=30s

三、服务声明更新流程

3.1 服务依赖声明

# iidp-core-services.yaml
apiVersion: iidp.io/v1beta1
kind: ServiceDefinition
spec:
  components:
    - name: iidp
      dependencies: ""
      installedApps: 
        - newSdkApp.master
        - oppmApp.master
        - sf-auto-interface-app.master
    - name: iiot
      dependencies: 
        - iiot_apiAdapter.master
        - iiot_base.master
      installedApps: 
        - iiot_project.master
        - iiot_access.master

3.2 版本控制策略

  1. 使用GitOps进行配置版本管理
  2. 每次变更需生成新的configVersion标签
    metadata:
      annotations:
        iidp.com/configVersion: 20250318-01

四、网关部署验证

4.1 滚动更新操作

kubectl scale deployment nginx --replicas=0  # 停止旧网关
kubectl apply -f gw.yaml --dry-run=server   # 预校验配置

4.2 存储优化配置

volumes:
  - name: uds-socket
    emptyDir: 
      medium: Memory  # 启用内存存储提升性能

4.3 连通性验证

# 路由信息验证
curl -sS localhost:8060/route | jq .  # 预期包含所有注册应用
# 服务映射检查
curl -sS localhost:8060/svc2app | grep "mbm-main.master"
# 端点健康状态
curl -sS localhost:8060/endpoints | jq '.[].status'

五、业务POD迁移方案

5.1 停机迁移步骤

  1. 前置操作
    kubectl scale deployment {service} --replicas=0
  2. 配置清理
    删除旧版dapr注解:
    annotations:
      - dapr.io/enabled: "false"  # 禁用遗留sidecar

5.2 启动验证标准

  1. 日志监控关键点
    kubectl logs -f {pod_name} | grep -E "IIDP_ENGINE_READY|CLUSTER_SYNC_COMPLETED"
  2. 就绪探针配置
    readinessProbe:
      httpGet:
        path: /healthz
        port: 8080
      initialDelaySeconds: 20

六、回退与监控方案

6.1 快速回退机制

# 配置回滚命令
kubectl rollout undo deployment/iidp-nginx --to-revision=3

6.2 监控指标阈值

| 指标名称 | 告警阈值 | 检测频率 | |————————-|—————-|———-| | 路由同步延迟 | >500ms | 10s | | 节点心跳丢失率 | >5% (持续1min)| 30s |


升级验证清单
✅ 所有配置项已按iidp-前缀标准化
✅ 网关路由接口返回完整服务拓扑
✅ 业务POD启动后输出IIDP BANNER
✅ 旧版sidecar组件已完全移除

注:本方案参考了系统升级文档规范和Kubernetes最佳实践,建议在预发布环境完成全量验证后执行生产环境变更。升级过程中如遇异常,可通过kubectl describe configmap/iidp-app检查配置注入状态。