define包装,导致include调用失败base/templates/service.yaml - 添加 {{- define "base.service" -}}base/templates/configmap.yaml - 添加 {{- define "base.configmap" -}}base/templates/deployment.yaml - 添加 {{- define "base.deployment" -}}file://../charts/xxx 路径file://./charts/xxxdubbo_port 配置${nacos.service-address})# 检查Chart.yaml语法
helm lint ./
# 验证模板渲染
helm template shop-recycle ./ --debug
# 只渲染特定服务
helm template shop-recycle ./ --set shop-recycle-merchant.enabled=true
# 确认所有base模板都有define
grep -r "define" charts/base/templates/
# 应该输出:
# base.service
# base.configmap
# base.deployment
# 检查依赖路径
grep "repository:" Chart.yaml
# 所有路径应该是 file://./charts/xxx
# 验证子chart存在
ls charts/ | wc -l
# 应该输出: 35 (34个服务 + base)
# 检查全局values.yaml
cat values.yaml | wc -l
# 应该输出: 102行左右
# 验证服务配置
cat charts/shop-recycle-merchant/values.yaml | grep "dubbo_port"
# Dubbo服务应该有此字段
# 检查所有服务镜像仓库
grep -r "repository:" charts/*/values.yaml | grep harbor.stardance | wc -l
# 应该输出: 34
cd /opt/deploy/microservice-helm
git pull
helm install shop-recycle ./ -f environments/prod-values.yaml
helm install shop-recycle ./ \
--set shop-recycle-merchant.enabled=true \
-f environments/prod-values.yaml
helm install shop-recycle ./ \
-f environments/prod-values.yaml \
--debug \
--dry-run
# 查看所有Pod
kubectl get pods -l project=shop-recycle
# 查看特定服务
kubectl get pods -l app=shop-recycle-merchant
# 检查Pod详细信息
kubectl describe pod <pod-name>
# HTTP Service
kubectl get svc shop-recycle-merchant
# Dubbo Headless Service (仅Dubbo服务)
kubectl get svc shop-recycle-merchant-dubbo
# 查看ConfigMap
kubectl get cm shop-recycle-merchant-config
# 查看配置内容
kubectl get cm shop-recycle-merchant-config -o yaml
# 检查容器端口
kubectl get pod <pod-name> -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 <pod-name> -- netstat -tlnp | grep 2023
# 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
Error: template: no template "base.service" associated with template "gotpl"
原因: base模板未定义
解决: 确保已git pull最新代码,base/templates/下所有文件都有{{- define "base.xxx" -}}
Error: chart requires missing dependency
原因: Chart.yaml中repository路径错误
解决: 确保路径为file://./charts/xxx
CrashLoopBackOff or ImagePullBackOff
原因: 镜像不存在或配置错误
解决:
harbor.stardance/shoprecycle/shop-xxx:v2.0.0kubectl describe pod <pod-name>kubectl logs <pod-name>服务启动后配置未生效
原因: ConfigMap未正确挂载或YAML格式错误
解决:
kubectl get cm <name> -o yamlkubectl exec <pod> -- ls /etc/configkubectl exec <pod> -- cat /etc/config/application.ymlNo provider available
原因: Headless Service未创建或端口配置错误
解决:
kubectl get svc | grep dubbovalues.yaml中的dubbo_port与config.yml中的dubbo.protocol.port一致运行以下命令进行完整性检查:
#!/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
验证状态: ✅ 所有已知问题已修复