GLOBAL_VALUES_REFACTORING.md 4.9 KB

全局values.yaml重构说明

问题分析

旧设计的问题 ❌

  • 严重冗余: 全局values.yaml包含所有34个服务的完整配置(1073行)
  • 维护困难: 修改镜像版本需要在全局和各服务文件中修改两次
  • 配置不同步: 全局用 your-registry,但实际使用 harbor.stardance
  • 浪费空间: 重复了charts//values.yaml中的所有配置
  • 示例对比

    旧做法(冗余):

    # 全局values.yaml (1073行)
    shop-recycle-payment:
      image:
        repository: your-registry/shop-recycle-payment
        tag: "1.0.0"
      config:
        yml: {...}  # 500+ 行配置
    
    # + 各服务配置 (charts/shop-recycle-payment/values.yaml)
    shop-recycle-payment:
      image:
        repository: harbor.stardance/shoprecycle/shop-payment
        tag: v2.0.0
      config:
        yml: {...}  # 相同的500+行配置
    

    新设计 ✅

    精简后的全局values.yaml

    作用: 仅定义真正的全局配置

    # 1. 全局镜像配置
    global:
      image:
        registry: harbor.stardance
        pullPolicy: IfNotPresent
        
    # 2. 全局标签(所有Pod都会附加)
    global:
      labels:
        platform: microservice-platform
        project: shop-recycle
        
    # 3. 服务启用/禁用开关
    shop-recycle-payment:
      enabled: true
    shop-recycle-store:
      enabled: true
    # ... 其他服务
    

    优点:

    • ✅ 代码简洁(102行 vs 1073行)
    • ✅ 易于维护(单一职责)
    • ✅ 配置一致(无重复)
    • ✅ 易于快速启用/禁用服务

    文件结构对比

    旧结构

    values.yaml               (1073行, 冗余配置)
    ├── global config
    ├── shop-recycle-payment (完整配置)
    ├── shop-recycle-store   (完整配置)
    └── ... 32个服务 (每个包含完整配置)
    
    charts/shop-recycle-payment/values.yaml  (独立配置)
    charts/shop-recycle-store/values.yaml    (独立配置)
    

    问题: 配置在两个地方,容易不同步!

    新结构 (推荐)

    values.yaml                            (102行, 仅全局和启用开关)
    ├── global:
    │   ├── image
    │   └── labels
    └── <service>: enabled: true
    
    charts/shop-recycle-payment/values.yaml  (完整配置)
    ├── app
    ├── image
    ├── service
    ├── resources
    └── config
        
    charts/shop-recycle-store/values.yaml   (完整配置)
    

    优点: 单一配置源,配置一致!


    使用方式

    查看当前配置

    # 查看所有值(包括从charts/<service>/values.yaml继承的)
    helm template shop-recycle ./
    
    # 只查看全局值
    helm values ./
    

    启用/禁用服务

    # 禁用某个服务
    helm upgrade shop-recycle ./ \
      --set shop-recycle-payment.enabled=false
    
    # 启用特定服务
    helm upgrade shop-recycle ./ \
      --set shop-recycle-gateway.enabled=true
    

    修改全局配置

    # 修改全局镜像拉取策略
    helm upgrade shop-recycle ./ \
      --set global.image.pullPolicy=Always
    
    # 修改全局标签
    helm upgrade shop-recycle ./ \
      --set global.labels.environment=production
    

    修改特定服务配置

    由于配置在各服务的values.yaml中,修改方式:

    # 方式1: 命令行覆盖
    helm upgrade shop-recycle ./ \
      --set shop-recycle-payment.image.tag=v2.1.0 \
      --set shop-recycle-payment.app.replicaCount=3
    
    # 方式2: 使用环境特定的values文件
    helm upgrade shop-recycle ./ \
      -f environments/prod-values.yaml
    
    # 方式3: 修改charts/shop-recycle-payment/values.yaml
    # 然后git push提交更新
    

    迁移检查清单

    • ✅ 全局values.yaml精简到102行(仅全局配置 + 启用开关)
    • ✅ 全局镜像registry更新为harbor.stardance
    • ✅ 所有34个服务的values.yaml独立配置完整
    • ✅ 旧的values.yaml备份为values.yaml.backup
    • ✅ 验证Helm chart仍然能正确部署

    FAQ

    Q: 如何部署特定版本的服务?

    A: 修改 charts/<service>/values.yamlimage.tag 或使用命令行覆盖:

    helm upgrade shop-recycle ./ \
      --set shop-recycle-payment.image.tag=v2.1.0
    

    Q: 全局values.yaml还有用吗?

    A: 有的。用途:

    1. 定义全局镜像拉取策略
    2. 定义全局标签(Pod自动带上)
    3. 快速启用/禁用服务
    4. 环境级别的全局配置

    Q: 如何批量修改所有服务的配置?

    A: 使用environment values文件:

    # environments/prod-values.yaml
    shop-recycle-payment:
      app:
        replicaCount: 3
    shop-recycle-store:
      app:
        replicaCount: 3
    shop-recycle-gateway:
      app:
        replicaCount: 5
    # ...其他服务
    

    然后:

    helm upgrade shop-recycle ./ -f environments/prod-values.yaml
    

    性能和维护收益

    方面 旧设计 新设计 收益
    代码行数 1073 102 减少90%
    维护点 68 (34服务×2文件) 35 (34服务×1文件) 减少50%
    配置一致性 易出错 自动一致 ✅ 高
    快速查看 困难 简单 ✅ 高

    最后更新: 2026-01-21