d:\coding-area\devops\helm\
📋 文档和分析
├── CONFIG-AND-SECRET-STRATEGY.md # 详细配置策略分析(13 个服务分类)
├── K8S-DEPLOYMENT-GUIDE.md # 完整实施指南(包含故障排查)
├── CONFIG-MANAGEMENT-SUMMARY.md # 本文件
🔐 Secret 模板
├── secret-templates-common.yaml # 7 个公共 Secret(Base64 编码示例)
│ ├── common-db-credentials
│ ├── common-redis-credentials
│ ├── common-rabbitmq-credentials
│ ├── wechat-credentials
│ ├── nacos-credentials
│ ├── seata-credentials
│ └── mongodb-credentials
📦 ConfigMap 和 Deployment 模板
├── service-configmap-deployment-template.yaml # 通用模板库(可复制使用)
├── gateway-configmap.yaml # Gateway 配置(已优化)
├── gateway-deployment.yaml # Gateway 部署(已优化)
├── gateway-service.yaml # Gateway 服务
🛠️ 自动化工具
└── generate-k8s-manifests.sh # 自动生成脚本
📂 配置源文件
└── conf/
└── shop-recycle-[service]/
└── conf/
├── application.yml
└── application.properties
| 指标 | 数量 | 说明 |
|---|---|---|
| 总微服务数 | 34 | 完整的微服务系统 |
| 需要 DB 凭证 | 26 | 有数据库的服务 |
| 仅 Cache 服务 | 8 | Web 前端服务(无数据库) |
| 需要微信凭证 | 5 | WeChat 集成服务 |
| 需要 MongoDB | 2-3 | 存储使用 MongoDB 的服务 |
| 需要 Seata | 2-3 | 分布式事务的服务 |
Secret 包含的敏感信息类型:
数据库凭证(26 个服务)
root(所有库相同)Fxjxtdacf8f_a3d_202600104d6c_41(所有库相同)rm-bp19t90t7u8n5b0fh.mysql.rds.aliyuncs.comRedis Sentinel 凭证(30+ 个服务)
3sm_redis15mymasterredis.jxfx[1-3].com:27000RabbitMQ 凭证(20+ 个服务)
guestguestmq.bak.com微信凭证(5 个服务)
Nacos 凭证(部分服务)
nacosnacosSeata 凭证(分布式事务)
nacosnacosMongoDB 凭证(2-3 个服务)
root123456Kubernetes 资源层级
│
├─ 共享 Secret(全局)
│ ├─ common-db-credentials # 26 个服务共用
│ ├─ common-redis-credentials # 30+ 个服务共用
│ ├─ common-rabbitmq-credentials # 20+ 个服务共用
│ ├─ wechat-credentials # 5 个服务共用
│ ├─ nacos-credentials # 全局
│ ├─ seata-credentials # 2-3 个服务
│ └─ mongodb-credentials # 2-3 个服务
│
├─ 服务特定 ConfigMap
│ └─ [service-name]-config × 34 # 非敏感配置
│
├─ 服务特定 Deployment × 34
│ └─ 引用 ConfigMap + Secret
│
└─ 服务特定 Service × 34
└─ 负载均衡和服务发现
RBAC 权限划分
│
├─ Application 容器
│ └─ 可读:所有 Secret、ConfigMap
│
├─ 监控容器
│ └─ 可读:ConfigMap(指标配置)
│
└─ 特权用户(DevOps)
└─ 完全访问:Secret、ConfigMap、Deployment
# 编辑 secret-templates-common.yaml,替换为实际的 Base64 编码凭证
# 或使用脚本生成
echo -n "your-actual-password" | base64
kubectl apply -f secret-templates-common.yaml
自动方法(推荐):
bash generate-k8s-manifests.sh
kubectl apply -f k8s-manifests/configmaps/
手动方法:
复制 service-configmap-deployment-template.yaml 中的 ConfigMap 部分,为每个服务修改:
[SERVICE_NAME][PORT]自动方法:
kubectl apply -f k8s-manifests/deployments/
手动方法:
复制 service-configmap-deployment-template.yaml 中的 Deployment 部分,修改:
[SERVICE_NAME][IMAGE_REGISTRY][REPLICAS]# 使用通用模板为每个服务创建
bash generate-k8s-manifests.sh # 生成 service-* 文件
kubectl apply -f k8s-manifests/services/
# 查看所有资源
kubectl get secrets,configmaps,deployments,pods,svc | grep shop-recycle
# 查看特定服务状态
kubectl get deployment shop-recycle-payment -o wide
kubectl get pods -l app=shop-recycle-payment
# 查看日志
kubectl logs -l app=shop-recycle-payment -f
# 验证环境变量注入
kubectl exec -it [pod-name] -- env | grep -E "DB_|REDIS_|RABBITMQ_"
# 测试服务健康
kubectl port-forward svc/shop-recycle-payment 1218:1218
curl http://localhost:1218/actuator/health
✅ 非敏感的应用配置:
✅ 敏感的凭证信息:
# 1. 编辑 ConfigMap
kubectl edit configmap shop-recycle-payment-config
# 2. 重启 Pod 以应用新配置
kubectl rollout restart deployment shop-recycle-payment
# 3. 验证
kubectl logs -l app=shop-recycle-payment -f
# 1. 更新 Secret(需要编码)
echo -n "new-password" | base64
# 输出: bmV3LXBhc3N3b3Jk
# 2. 更新 Secret
kubectl patch secret common-db-credentials -p '{"data":{"db-password":"bmV3LXBhc3N3b3Jk"}}'
# 3. 重启所有使用该 Secret 的 Pod
kubectl rollout restart deployment shop-recycle-payment
kubectl rollout restart deployment shop-recycle-merchant
# ... 重启所有 26 个使用数据库凭证的服务
使用 ArgoCD 或 Flux 管理配置版本控制和自动化部署。
| 文档 | 用途 | 目标用户 |
|---|---|---|
| CONFIG-AND-SECRET-STRATEGY.md | 详细配置策略分析 | 架构师、DevOps |
| K8S-DEPLOYMENT-GUIDE.md | 完整部署指南和故障排查 | DevOps、运维 |
| secret-templates-common.yaml | 公共 Secret 模板 | DevOps、系统管理员 |
| service-configmap-deployment-template.yaml | 通用模板库 | 开发、DevOps |
| generate-k8s-manifests.sh | 自动生成脚本 | DevOps |
# 查看所有 Secret
kubectl get secrets -o name | grep common-
# 查看 Secret 详情(不显示内容)
kubectl describe secret common-db-credentials
# 查看 Secret 内容(Base64)
kubectl get secret common-db-credentials -o yaml
# 解码 Base64(MacOS/Linux)
echo "cmV3LXBhc3N3b3Jk" | base64 -d
# 删除并重建 Secret
kubectl delete secret common-db-credentials
kubectl apply -f secret-templates-common.yaml
# 批量应用所有资源
kubectl apply -f secret-templates-common.yaml
kubectl apply -f k8s-manifests/
# 检查资源依赖关系
kubectl describe pod [pod-name] | grep -A 10 "Mounts:"
# 监控 Pod 启动
kubectl get pods -l app=shop-recycle-payment -w
# 导出部署配置
kubectl get deployment shop-recycle-payment -o yaml > shop-recycle-payment-backup.yaml
# ConfigMap 单个键值对大小限制:1MB
# 总大小限制:1MB(etcd)
# 检查 ConfigMap 大小
kubectl get configmap shop-recycle-payment-config -o yaml | wc -c
# 优化:
# 1. 使用环境变量注入大配置文件
# 2. 使用 InitContainer 从远程拉取配置
# 3. 使用 ConfigMapGenerator(Kustomize)压缩配置
# Secret 缓存:
# 每个 Secret 的读取都会触发 API 调用
# 使用 Projected Volumes 或 Secret 联邦机制减少查询
# 推荐配置:
# - 使用共享 Secret 减少重复
# - 定期清理过期 Secret
最后更新: 2026-01-16
维护者: DevOps 团队
版本: 1.0.0