# Helm Chart部署前验证清单 ## ✅ 已修复的问题 ### 1. 模板定义缺失 - **问题**: base模板未使用`define`包装,导致`include`调用失败 - **修复**: - `base/templates/service.yaml` - 添加 `{{- define "base.service" -}}` - `base/templates/configmap.yaml` - 添加 `{{- define "base.configmap" -}}` - `base/templates/deployment.yaml` - 添加 `{{- define "base.deployment" -}}` - **状态**: ✅ 已修复 ### 2. Chart依赖路径 - **问题**: `file://../charts/xxx` 路径 - **修复**: 改为 `file://./charts/xxx` - **状态**: ✅ 已修复 ### 3. Dubbo Service配置 - **问题**: Dubbo服务需要Headless Service - **修复**: - 为13个Dubbo服务添加 `dubbo_port` 配置 - service.yaml自动创建Headless Service(clusterIP: None) - deployment.yaml添加dubbo容器端口 - **状态**: ✅ 已完成 ### 4. 配置占位符优化 - **问题**: 不必要的变量占位符(如`${nacos.service-address}`) - **修复**: 直接使用实际值,简化配置 - **状态**: ✅ 已完成 ### 5. 全局values.yaml冗余 - **问题**: 重复定义所有服务配置(1073行) - **修复**: 精简为102行,只保留全局配置和启用开关 - **状态**: ✅ 已完成 --- ## 📋 部署前检查清单 ### 必检项目 #### 1. Chart结构验证 ```bash # 检查Chart.yaml语法 helm lint ./ # 验证模板渲染 helm template shop-recycle ./ --debug # 只渲染特定服务 helm template shop-recycle ./ --set shop-recycle-merchant.enabled=true ``` #### 2. 模板定义检查 ```bash # 确认所有base模板都有define grep -r "define" charts/base/templates/ # 应该输出: # base.service # base.configmap # base.deployment ``` #### 3. 依赖关系检查 ```bash # 检查依赖路径 grep "repository:" Chart.yaml # 所有路径应该是 file://./charts/xxx # 验证子chart存在 ls charts/ | wc -l # 应该输出: 35 (34个服务 + base) ``` #### 4. Values配置验证 ```bash # 检查全局values.yaml cat values.yaml | wc -l # 应该输出: 102行左右 # 验证服务配置 cat charts/shop-recycle-merchant/values.yaml | grep "dubbo_port" # Dubbo服务应该有此字段 ``` #### 5. 镜像仓库检查 ```bash # 检查所有服务镜像仓库 grep -r "repository:" charts/*/values.yaml | grep harbor.stardance | wc -l # 应该输出: 34 ``` --- ## 🚀 部署命令 ### 1. 标准部署 ```bash cd /opt/deploy/microservice-helm git pull helm install shop-recycle ./ -f environments/prod-values.yaml ``` ### 2. 部署单个服务测试 ```bash helm install shop-recycle ./ \ --set shop-recycle-merchant.enabled=true \ -f environments/prod-values.yaml ``` ### 3. 调试模式部署 ```bash helm install shop-recycle ./ \ -f environments/prod-values.yaml \ --debug \ --dry-run ``` --- ## 🔍 部署后验证 ### 1. 检查Pod状态 ```bash # 查看所有Pod kubectl get pods -l project=shop-recycle # 查看特定服务 kubectl get pods -l app=shop-recycle-merchant # 检查Pod详细信息 kubectl describe pod ``` ### 2. 验证Service创建 ```bash # HTTP Service kubectl get svc shop-recycle-merchant # Dubbo Headless Service (仅Dubbo服务) kubectl get svc shop-recycle-merchant-dubbo ``` ### 3. 验证ConfigMap ```bash # 查看ConfigMap kubectl get cm shop-recycle-merchant-config # 查看配置内容 kubectl get cm shop-recycle-merchant-config -o yaml ``` ### 4. 验证端口绑定 ```bash # 检查容器端口 kubectl get pod -o jsonpath='{.spec.containers[0].ports}' # 验证HTTP端口(1204) kubectl port-forward svc/shop-recycle-merchant 1204:1204 curl http://localhost:1204/actuator/health # 验证Dubbo端口(2023) - 从Pod内部 kubectl exec -- netstat -tlnp | grep 2023 ``` ### 5. 验证Dubbo通信 ```bash # DNS解析Headless Service kubectl run -it --rm debug --image=alpine --restart=Never -- \ nslookup shop-recycle-merchant-dubbo.default.svc.cluster.local # 查看Dubbo日志 kubectl logs -l app=shop-recycle-merchant | grep -i dubbo ``` --- ## ⚠️ 常见错误和解决方案 ### 错误1: template not found ``` Error: template: no template "base.service" associated with template "gotpl" ``` **原因**: base模板未定义 **解决**: 确保已git pull最新代码,base/templates/下所有文件都有`{{- define "base.xxx" -}}` ### 错误2: 依赖路径错误 ``` Error: chart requires missing dependency ``` **原因**: Chart.yaml中repository路径错误 **解决**: 确保路径为`file://./charts/xxx` ### 错误3: Pod无法启动 ``` CrashLoopBackOff or ImagePullBackOff ``` **原因**: 镜像不存在或配置错误 **解决**: - 检查镜像仓库: `harbor.stardance/shoprecycle/shop-xxx:v2.0.0` - 查看Pod事件: `kubectl describe pod ` - 查看日志: `kubectl logs ` ### 错误4: ConfigMap配置错误 ``` 服务启动后配置未生效 ``` **原因**: ConfigMap未正确挂载或YAML格式错误 **解决**: - 验证ConfigMap: `kubectl get cm -o yaml` - 检查挂载: `kubectl exec -- ls /etc/config` - 查看文件内容: `kubectl exec -- cat /etc/config/application.yml` ### 错误5: Dubbo服务无法通信 ``` No provider available ``` **原因**: Headless Service未创建或端口配置错误 **解决**: - 检查Service: `kubectl get svc | grep dubbo` - 验证端口: 确保`values.yaml`中的`dubbo_port`与`config.yml`中的`dubbo.protocol.port`一致 - 检查Nacos注册: 登录Nacos控制台查看服务注册情况 --- ## 📊 完整性检查总结 运行以下命令进行完整性检查: ```bash #!/bin/bash cd /opt/deploy/microservice-helm echo "=== 1. 拉取最新代码 ===" git pull echo "=== 2. Lint检查 ===" helm lint ./ echo "=== 3. 模板验证 ===" helm template shop-recycle ./ --debug > /dev/null 2>&1 if [ $? -eq 0 ]; then echo "✅ 模板验证通过" else echo "❌ 模板验证失败" exit 1 fi echo "=== 4. 检查base模板定义 ===" grep -r "define" charts/base/templates/ | wc -l echo "期望: 3 (service, configmap, deployment)" echo "=== 5. 检查镜像仓库 ===" grep -r "harbor.stardance" charts/*/values.yaml | wc -l echo "期望: 34" echo "=== 6. 检查Dubbo端口 ===" grep -r "dubbo_port" charts/*/values.yaml | wc -l echo "期望: 13" echo "=== 所有检查完成 ===" ``` --- **最后更新**: 2026-01-21 **验证状态**: ✅ 所有已知问题已修复