|
|
@@ -0,0 +1,218 @@
|
|
|
+# 全局values.yaml重构说明
|
|
|
+
|
|
|
+## 问题分析
|
|
|
+
|
|
|
+### 旧设计的问题 ❌
|
|
|
+- **严重冗余**: 全局values.yaml包含所有34个服务的完整配置(1073行)
|
|
|
+- **维护困难**: 修改镜像版本需要在全局和各服务文件中修改两次
|
|
|
+- **配置不同步**: 全局用 `your-registry`,但实际使用 `harbor.stardance`
|
|
|
+- **浪费空间**: 重复了charts/<service>/values.yaml中的所有配置
|
|
|
+
|
|
|
+### 示例对比
|
|
|
+
|
|
|
+**旧做法(冗余):**
|
|
|
+```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
|
|
|
+
|
|
|
+**作用**: 仅定义真正的全局配置
|
|
|
+```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 (完整配置)
|
|
|
+```
|
|
|
+
|
|
|
+**优点**: 单一配置源,配置一致!
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 使用方式
|
|
|
+
|
|
|
+### 查看当前配置
|
|
|
+```bash
|
|
|
+# 查看所有值(包括从charts/<service>/values.yaml继承的)
|
|
|
+helm template shop-recycle ./
|
|
|
+
|
|
|
+# 只查看全局值
|
|
|
+helm values ./
|
|
|
+```
|
|
|
+
|
|
|
+### 启用/禁用服务
|
|
|
+```bash
|
|
|
+# 禁用某个服务
|
|
|
+helm upgrade shop-recycle ./ \
|
|
|
+ --set shop-recycle-payment.enabled=false
|
|
|
+
|
|
|
+# 启用特定服务
|
|
|
+helm upgrade shop-recycle ./ \
|
|
|
+ --set shop-recycle-gateway.enabled=true
|
|
|
+```
|
|
|
+
|
|
|
+### 修改全局配置
|
|
|
+```bash
|
|
|
+# 修改全局镜像拉取策略
|
|
|
+helm upgrade shop-recycle ./ \
|
|
|
+ --set global.image.pullPolicy=Always
|
|
|
+
|
|
|
+# 修改全局标签
|
|
|
+helm upgrade shop-recycle ./ \
|
|
|
+ --set global.labels.environment=production
|
|
|
+```
|
|
|
+
|
|
|
+### 修改特定服务配置
|
|
|
+由于配置在各服务的values.yaml中,修改方式:
|
|
|
+
|
|
|
+```bash
|
|
|
+# 方式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.yaml` 的 `image.tag` 或使用命令行覆盖:
|
|
|
+```bash
|
|
|
+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文件:
|
|
|
+```yaml
|
|
|
+# environments/prod-values.yaml
|
|
|
+shop-recycle-payment:
|
|
|
+ app:
|
|
|
+ replicaCount: 3
|
|
|
+shop-recycle-store:
|
|
|
+ app:
|
|
|
+ replicaCount: 3
|
|
|
+shop-recycle-gateway:
|
|
|
+ app:
|
|
|
+ replicaCount: 5
|
|
|
+# ...其他服务
|
|
|
+```
|
|
|
+
|
|
|
+然后:
|
|
|
+```bash
|
|
|
+helm upgrade shop-recycle ./ -f environments/prod-values.yaml
|
|
|
+```
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 性能和维护收益
|
|
|
+
|
|
|
+| 方面 | 旧设计 | 新设计 | 收益 |
|
|
|
+|------|-------|-------|------|
|
|
|
+| 代码行数 | 1073 | 102 | 减少90% |
|
|
|
+| 维护点 | 68 (34服务×2文件) | 35 (34服务×1文件) | 减少50% |
|
|
|
+| 配置一致性 | 易出错 | 自动一致 | ✅ 高 |
|
|
|
+| 快速查看 | 困难 | 简单 | ✅ 高 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+**最后更新**: 2026-01-21
|