|
|
@@ -1,25 +1,27 @@
|
|
|
-# Microservice Platform - Helm Chart
|
|
|
+# Shop Recycle - Microservice Platform Helm Chart
|
|
|
|
|
|
## 📋 概述
|
|
|
|
|
|
-这是一个企业级微服务平台的Helm Chart实现,采用**Umbrella Chart + 通用模板库**的混合架构。支持多个Java微服务的统一部署、配置管理和多环境部署。
|
|
|
+这是一个企业级微服务平台的Helm Chart实现,采用**Umbrella Chart + 通用模板库**的混合架构。用于管理**Shop Recycle项目**的25个Java Spring Cloud微服务的统一部署、配置管理和多环境部署。
|
|
|
|
|
|
**架构版本:** 1.0.0
|
|
|
-**支持的微服务:** user-service, order-service, payment-service(可扩展)
|
|
|
-**部署环境:** dev, staging, production
|
|
|
+**项目名称:** Shop Recycle
|
|
|
+**微服务数量:** 25个
|
|
|
+**部署环境:** dev, staging, production
|
|
|
+**Spring Cloud框架:** 标准化的application.properties配置
|
|
|
|
|
|
---
|
|
|
|
|
|
## 🎯 主要特性
|
|
|
|
|
|
-✅ **Umbrella Chart架构** - 统一部署管理多个微服务
|
|
|
-✅ **模板代码复用** - 通用base chart,减少重复代码
|
|
|
+✅ **Umbrella Chart架构** - 统一部署管理25个微服务
|
|
|
+✅ **模板代码复用** - 通用base chart,消除重复代码
|
|
|
✅ **灵活的服务启用/禁用** - 可按需启用或禁用任意微服务
|
|
|
✅ **多环境配置管理** - 开发、测试、生产环境差异化配置
|
|
|
✅ **全局配置共享** - 支持跨服务的全局配置
|
|
|
-✅ **Spring Boot原生支持** - 完整的Actuator、日志、配置管理
|
|
|
+✅ **Spring Cloud原生支持** - 标准化的应用属性配置
|
|
|
✅ **生产就绪** - 包含health check、资源限制、副本控制
|
|
|
-✅ **易于扩展** - 快速添加新的微服务
|
|
|
+✅ **配置精简化** - 应用属性在模板中固定,避免重复
|
|
|
|
|
|
---
|
|
|
|
|
|
@@ -27,37 +29,59 @@
|
|
|
|
|
|
```
|
|
|
microservice-helm/
|
|
|
-├── Chart.yaml # Umbrella Chart定义
|
|
|
+├── Chart.yaml # Umbrella Chart定义(25个依赖)
|
|
|
├── values.yaml # 全局配置(各服务默认值)
|
|
|
├── README.md # 本文档
|
|
|
-├── templates/ # 根级templates
|
|
|
+├── templates/ # 根级templates(通常为空)
|
|
|
│ ├── configmap.yaml
|
|
|
│ ├── deployment.yaml
|
|
|
│ └── service.yaml
|
|
|
-├── charts/ # 子Chart目录
|
|
|
-│ ├── base/ # 通用模板库(不部署)
|
|
|
+├── charts/ # 子Chart目录(25个微服务+base)
|
|
|
+│ ├── base/ # 🔷 通用模板库
|
|
|
│ │ ├── Chart.yaml
|
|
|
│ │ ├── values.yaml
|
|
|
│ │ └── templates/
|
|
|
-│ │ ├── configmap.yaml
|
|
|
+│ │ ├── configmap.yaml # 标准化的Spring Cloud应用属性
|
|
|
│ │ ├── deployment.yaml
|
|
|
│ │ └── service.yaml
|
|
|
-│ ├── user-service/ # 用户服务
|
|
|
-│ │ ├── Chart.yaml
|
|
|
-│ │ ├── values.yaml
|
|
|
-│ │ └── templates/
|
|
|
-│ ├── order-service/ # 订单服务
|
|
|
-│ │ ├── Chart.yaml
|
|
|
-│ │ ├── values.yaml
|
|
|
-│ │ └── templates/
|
|
|
-│ └── payment-service/ # 支付服务
|
|
|
-│ ├── Chart.yaml
|
|
|
-│ ├── values.yaml
|
|
|
-│ └── templates/
|
|
|
+│ │
|
|
|
+│ ├── 后端服务 (8个)
|
|
|
+│ │ ├── shop-recycle-payment/ # 支付服务
|
|
|
+│ │ ├── shop-recycle-store/ # 商店服务
|
|
|
+│ │ ├── shop-recycle-pis/ # PIS服务
|
|
|
+│ │ ├── shop-recycle-merchant/ # 商家服务
|
|
|
+│ │ ├── shop-recycle-account/ # 账户服务
|
|
|
+│ │ ├── shop-recycle-msg/ # 消息服务
|
|
|
+│ │ ├── shop-recycle-order-center/ # 订单中心
|
|
|
+│ │ └── shop-recycle-wechat/ # 微信服务
|
|
|
+│ │
|
|
|
+│ ├── 数据和管理服务 (4个)
|
|
|
+│ │ ├── shop-recycle-data-statistics/ # 数据统计
|
|
|
+│ │ ├── shop-recycle-platform/ # 平台服务
|
|
|
+│ │ ├── shop-recycle-gateway/ # API网关
|
|
|
+│ │ └── shop-recycle-sche/ # 调度服务
|
|
|
+│ │
|
|
|
+│ ├── 前端Web服务 (8个)
|
|
|
+│ │ ├── shop-recycle-wechat-web/ # 微信Web
|
|
|
+│ │ ├── shop-recycle-payment-web/ # 支付Web
|
|
|
+│ │ ├── shop-recycle-store-wechat-web/ # 店铺微信Web
|
|
|
+│ │ ├── shop-recycle-platform-pc-web/ # 平台PC Web
|
|
|
+│ │ ├── shop-recycle-out-web/ # 外部Web
|
|
|
+│ │ ├── shop-recycle-store-pc-web/ # 店铺PC Web
|
|
|
+│ │ ├── shop-recycle-oss-web/ # OSS Web
|
|
|
+│ │ └── shop-recycle-login-center/ # 登录中心
|
|
|
+│ │
|
|
|
+│ └── 管理后台服务 (5个)
|
|
|
+│ ├── shop-recycle-merchant-wechat-web/ # 商家微信Web
|
|
|
+│ ├── shop-recycle-import-web/ # 导入Web
|
|
|
+│ ├── shop-recycle-marketer-pc-web/ # 营销PC Web
|
|
|
+│ ├── shop-recycle-erp-pc-web/ # ERP PC Web
|
|
|
+│ └── shop-recycle-merchant-pc-web/ # 商家PC Web
|
|
|
+│
|
|
|
└── environments/ # 环境特定配置
|
|
|
- ├── dev-values.yaml
|
|
|
- ├── staging-values.yaml
|
|
|
- └── prod-values.yaml
|
|
|
+ ├── dev-values.yaml # 开发环境(DEBUG日志、单副本)
|
|
|
+ ├── staging-values.yaml # 预发布环境(INFO日志、双副本)
|
|
|
+ └── prod-values.yaml # 生产环境(WARN日志、三副本、高资源)
|
|
|
```
|
|
|
|
|
|
---
|
|
|
@@ -75,60 +99,64 @@ microservice-helm/
|
|
|
#### 1️⃣ 部署全部微服务(默认配置)
|
|
|
|
|
|
```bash
|
|
|
-helm install microservice-platform ./
|
|
|
+helm install shop-recycle ./
|
|
|
```
|
|
|
|
|
|
#### 2️⃣ 部署特定环境
|
|
|
|
|
|
```bash
|
|
|
# 开发环境
|
|
|
-helm install microservice-platform ./ \
|
|
|
+helm install shop-recycle ./ \
|
|
|
-f environments/dev-values.yaml
|
|
|
|
|
|
# 预发布环境
|
|
|
-helm install microservice-platform ./ \
|
|
|
+helm install shop-recycle ./ \
|
|
|
-f environments/staging-values.yaml
|
|
|
|
|
|
# 生产环境
|
|
|
-helm install microservice-platform ./ \
|
|
|
+helm install shop-recycle ./ \
|
|
|
-f environments/prod-values.yaml
|
|
|
```
|
|
|
|
|
|
#### 3️⃣ 选择性部署微服务
|
|
|
|
|
|
```bash
|
|
|
-# 仅部署user-service和order-service
|
|
|
-helm install microservice-platform ./ \
|
|
|
- --set user-service.enabled=true \
|
|
|
- --set order-service.enabled=true \
|
|
|
- --set payment-service.enabled=false
|
|
|
+# 仅部署后端核心服务
|
|
|
+helm install shop-recycle ./ \
|
|
|
+ --set shop-recycle-payment.enabled=true \
|
|
|
+ --set shop-recycle-store.enabled=true \
|
|
|
+ --set shop-recycle-merchant.enabled=true \
|
|
|
+ --set shop-recycle-gateway.enabled=true \
|
|
|
+ --set shop-recycle-wechat-web.enabled=false
|
|
|
+
|
|
|
+# 禁用特定服务
|
|
|
+helm install shop-recycle ./ \
|
|
|
+ --set shop-recycle-marketer-pc-web.enabled=false \
|
|
|
+ --set shop-recycle-erp-pc-web.enabled=false
|
|
|
```
|
|
|
|
|
|
#### 4️⃣ 自定义镜像仓库和版本
|
|
|
|
|
|
```bash
|
|
|
-helm install microservice-platform ./ \
|
|
|
+helm install shop-recycle ./ \
|
|
|
--set global.image.registry=your-registry \
|
|
|
- --set user-service.image.tag=v2.0.0 \
|
|
|
- --set order-service.image.tag=v1.5.0
|
|
|
+ --set shop-recycle-payment.image.tag=v2.0.0 \
|
|
|
+ --set shop-recycle-store.image.tag=v2.0.0
|
|
|
```
|
|
|
|
|
|
#### 5️⃣ 验证安装
|
|
|
|
|
|
```bash
|
|
|
# 查看Release状态
|
|
|
-helm list
|
|
|
+helm status shop-recycle
|
|
|
|
|
|
-# 查看已部署的资源
|
|
|
+# 查看所有部署的资源
|
|
|
kubectl get all -l platform=microservice-platform
|
|
|
|
|
|
-# 查看Deployment状态
|
|
|
-kubectl get deployment
|
|
|
-
|
|
|
-# 查看Pod状态
|
|
|
-kubectl get pods
|
|
|
+# 查看所有Pod
|
|
|
+kubectl get pods -l project=shop-recycle
|
|
|
|
|
|
-# 查看Service和暴露的端口
|
|
|
+# 查看Service和端口
|
|
|
kubectl get svc
|
|
|
```
|
|
|
|
|
|
@@ -138,69 +166,161 @@ kubectl get svc
|
|
|
|
|
|
### 全局配置(values.yaml)
|
|
|
|
|
|
-所有微服务共享的全局配置。详见 `values.yaml` 文件中的 `global` 部分。
|
|
|
-
|
|
|
-### 微服务配置
|
|
|
-
|
|
|
-#### User Service 配置
|
|
|
-
|
|
|
-| 参数 | 默认值 | 说明 |
|
|
|
-|------|--------|------|
|
|
|
-| `user-service.enabled` | `true` | 是否启用该服务 |
|
|
|
-| `user-service.app.replicaCount` | `1` | Pod副本数 |
|
|
|
-| `user-service.image.tag` | `1.0.0` | 镜像标签 |
|
|
|
-| `user-service.service.port` | `8080` | 服务端口 |
|
|
|
+```yaml
|
|
|
+global:
|
|
|
+ image:
|
|
|
+ registry: your-registry # Docker镜像仓库
|
|
|
+ pullPolicy: IfNotPresent
|
|
|
+ labels:
|
|
|
+ platform: microservice-platform
|
|
|
+ project: shop-recycle
|
|
|
+ version: "1.0"
|
|
|
+```
|
|
|
|
|
|
-#### Order Service 配置
|
|
|
+### 微服务配置示例
|
|
|
|
|
|
-| 参数 | 默认值 | 说明 |
|
|
|
-|------|--------|------|
|
|
|
-| `order-service.enabled` | `true` | 是否启用该服务 |
|
|
|
-| `order-service.app.replicaCount` | `1` | Pod副本数 |
|
|
|
-| `order-service.image.tag` | `1.0.0` | 镜像标签 |
|
|
|
-| `order-service.service.port` | `8081` | 服务端口 |
|
|
|
+每个微服务的values.yaml结构如下:
|
|
|
|
|
|
-#### Payment Service 配置
|
|
|
+```yaml
|
|
|
+app:
|
|
|
+ name: shop-recycle-payment # 应用名称
|
|
|
+ replicaCount: 1 # Pod副本数
|
|
|
+
|
|
|
+image:
|
|
|
+ repository: your-registry/shop-recycle-payment
|
|
|
+ tag: "1.0.0"
|
|
|
+ pullPolicy: IfNotPresent
|
|
|
+
|
|
|
+service:
|
|
|
+ type: ClusterIP
|
|
|
+ port: 8080 # 对外端口
|
|
|
+ targetPort: 8080 # 容器端口
|
|
|
+
|
|
|
+resources:
|
|
|
+ requests:
|
|
|
+ cpu: 250m
|
|
|
+ memory: 256Mi
|
|
|
+ limits:
|
|
|
+ cpu: 500m
|
|
|
+ memory: 512Mi
|
|
|
+
|
|
|
+config:
|
|
|
+ yml: # application.yml配置
|
|
|
+ logging:
|
|
|
+ level:
|
|
|
+ root: INFO
|
|
|
+ management:
|
|
|
+ endpoints:
|
|
|
+ web:
|
|
|
+ exposure:
|
|
|
+ include: health,info,metrics
|
|
|
+```
|
|
|
|
|
|
-| 参数 | 默认值 | 说明 |
|
|
|
-|------|--------|------|
|
|
|
-| `payment-service.enabled` | `true` | 是否启用该服务 |
|
|
|
-| `payment-service.app.replicaCount` | `1` | Pod副本数 |
|
|
|
-| `payment-service.image.tag` | `1.0.0` | 镜像标签 |
|
|
|
-| `payment-service.service.port` | `8082` | 服务端口 |
|
|
|
+### 端口分配
|
|
|
+
|
|
|
+所有25个微服务的端口分配:
|
|
|
+
|
|
|
+| 服务 | 端口 | 服务 | 端口 |
|
|
|
+|------|------|------|------|
|
|
|
+| shop-recycle-payment | 8080 | shop-recycle-platform | 8089 |
|
|
|
+| shop-recycle-store | 8081 | shop-recycle-wechat-web | 8090 |
|
|
|
+| shop-recycle-pis | 8082 | shop-recycle-payment-web | 8091 |
|
|
|
+| shop-recycle-merchant | 8083 | shop-recycle-store-wechat-web | 8092 |
|
|
|
+| shop-recycle-account | 8084 | shop-recycle-platform-pc-web | 8093 |
|
|
|
+| shop-recycle-msg | 8085 | shop-recycle-out-web | 8094 |
|
|
|
+| shop-recycle-order-center | 8086 | shop-recycle-store-pc-web | 8095 |
|
|
|
+| shop-recycle-wechat | 8087 | shop-recycle-login-center | 8096 |
|
|
|
+| shop-recycle-data-statistics | 8088 | shop-recycle-oss-web | 8097 |
|
|
|
+| shop-recycle-gateway | 8098 | shop-recycle-sche | 8099 |
|
|
|
+| shop-recycle-merchant-wechat-web | 8100 | shop-recycle-import-web | 8101 |
|
|
|
+| shop-recycle-marketer-pc-web | 8102 | shop-recycle-erp-pc-web | 8103 |
|
|
|
+| shop-recycle-merchant-pc-web | 8104 | - | - |
|
|
|
|
|
|
---
|
|
|
|
|
|
## 🌍 环境配置
|
|
|
|
|
|
-该项目支持多环境部署:
|
|
|
-
|
|
|
### 开发环境 (dev-values.yaml)
|
|
|
|
|
|
-- 单副本部署
|
|
|
-- DEBUG日志级别
|
|
|
-- 最新开发镜像
|
|
|
-- 宽松的DDL策略(create-drop)
|
|
|
+```yaml
|
|
|
+global:
|
|
|
+ labels:
|
|
|
+ environment: development
|
|
|
+
|
|
|
+shop-recycle-payment:
|
|
|
+ enabled: true
|
|
|
+ app:
|
|
|
+ replicaCount: 1 # 单副本
|
|
|
+ image:
|
|
|
+ tag: dev-latest
|
|
|
+ config:
|
|
|
+ yml:
|
|
|
+ logging:
|
|
|
+ level:
|
|
|
+ root: DEBUG # DEBUG日志级别
|
|
|
+ management:
|
|
|
+ endpoints:
|
|
|
+ web:
|
|
|
+ exposure:
|
|
|
+ include: health,info,metrics,env,configprops # 暴露更多端点用于调试
|
|
|
+```
|
|
|
|
|
|
**部署方式:**
|
|
|
```bash
|
|
|
-helm install microservice-platform ./ -f environments/dev-values.yaml
|
|
|
+helm install shop-recycle ./ -f environments/dev-values.yaml
|
|
|
```
|
|
|
|
|
|
### 预发布环境 (staging-values.yaml)
|
|
|
|
|
|
-- 双副本部署
|
|
|
-- INFO日志级别
|
|
|
-- 最新staging镜像
|
|
|
-- 严格的DDL策略(validate)
|
|
|
+```yaml
|
|
|
+global:
|
|
|
+ labels:
|
|
|
+ environment: staging
|
|
|
+
|
|
|
+shop-recycle-payment:
|
|
|
+ enabled: true
|
|
|
+ app:
|
|
|
+ replicaCount: 2 # 双副本
|
|
|
+ image:
|
|
|
+ tag: staging-latest
|
|
|
+ config:
|
|
|
+ yml:
|
|
|
+ logging:
|
|
|
+ level:
|
|
|
+ root: INFO # INFO日志级别
|
|
|
+```
|
|
|
|
|
|
### 生产环境 (prod-values.yaml)
|
|
|
|
|
|
-- 三副本高可用部署
|
|
|
-- WARN日志级别
|
|
|
-- 固定版本镜像(不使用latest)
|
|
|
-- 严格的资源限制
|
|
|
-- 完全的DDL验证
|
|
|
+```yaml
|
|
|
+global:
|
|
|
+ labels:
|
|
|
+ environment: production
|
|
|
+
|
|
|
+shop-recycle-payment:
|
|
|
+ enabled: true
|
|
|
+ app:
|
|
|
+ replicaCount: 3 # 三副本高可用
|
|
|
+ image:
|
|
|
+ tag: "1.0.0" # 使用固定版本,不使用latest
|
|
|
+ resources:
|
|
|
+ requests:
|
|
|
+ cpu: 500m # 资源请求翻倍
|
|
|
+ memory: 512Mi
|
|
|
+ limits:
|
|
|
+ cpu: 1000m # 严格的资源限制
|
|
|
+ memory: 1024Mi
|
|
|
+ config:
|
|
|
+ yml:
|
|
|
+ logging:
|
|
|
+ level:
|
|
|
+ root: WARN # 仅记录WARN及以上级别
|
|
|
+ management:
|
|
|
+ endpoints:
|
|
|
+ web:
|
|
|
+ exposure:
|
|
|
+ include: health,metrics # 仅暴露必要的端点
|
|
|
+```
|
|
|
|
|
|
---
|
|
|
|
|
|
@@ -208,51 +328,80 @@ helm install microservice-platform ./ -f environments/dev-values.yaml
|
|
|
|
|
|
### 示例1:基础部署
|
|
|
|
|
|
+最小化部署,使用所有默认配置:
|
|
|
+
|
|
|
```bash
|
|
|
-helm install my-platform ./
|
|
|
+helm install shop-recycle ./
|
|
|
```
|
|
|
|
|
|
-### 示例2:生产环境部署
|
|
|
+### 示例2:完整的多环境部署脚本
|
|
|
|
|
|
```bash
|
|
|
-helm install microservice-prod ./ \
|
|
|
+#!/bin/bash
|
|
|
+
|
|
|
+# 部署开发环境
|
|
|
+helm install shop-recycle-dev ./ \
|
|
|
+ --namespace dev \
|
|
|
+ --create-namespace \
|
|
|
+ -f environments/dev-values.yaml
|
|
|
+
|
|
|
+# 部署预发布环境
|
|
|
+helm install shop-recycle-staging ./ \
|
|
|
+ --namespace staging \
|
|
|
+ --create-namespace \
|
|
|
+ -f environments/staging-values.yaml
|
|
|
+
|
|
|
+# 部署生产环境
|
|
|
+helm install shop-recycle-prod ./ \
|
|
|
--namespace prod \
|
|
|
--create-namespace \
|
|
|
-f environments/prod-values.yaml
|
|
|
```
|
|
|
|
|
|
-### 示例3:添加新的微服务
|
|
|
+### 示例3:只部署后端服务
|
|
|
|
|
|
-1. 创建Chart目录:
|
|
|
```bash
|
|
|
-mkdir -p charts/notification-service/templates
|
|
|
+# 创建values文件 backend-only.yaml,禁用所有web服务
|
|
|
+helm install shop-recycle ./ \
|
|
|
+ --set shop-recycle-wechat-web.enabled=false \
|
|
|
+ --set shop-recycle-payment-web.enabled=false \
|
|
|
+ --set shop-recycle-store-wechat-web.enabled=false \
|
|
|
+ --set shop-recycle-platform-pc-web.enabled=false \
|
|
|
+ --set shop-recycle-out-web.enabled=false \
|
|
|
+ --set shop-recycle-store-pc-web.enabled=false \
|
|
|
+ --set shop-recycle-oss-web.enabled=false \
|
|
|
+ --set shop-recycle-login-center.enabled=false \
|
|
|
+ --set shop-recycle-merchant-wechat-web.enabled=false \
|
|
|
+ --set shop-recycle-import-web.enabled=false \
|
|
|
+ --set shop-recycle-marketer-pc-web.enabled=false \
|
|
|
+ --set shop-recycle-erp-pc-web.enabled=false \
|
|
|
+ --set shop-recycle-merchant-pc-web.enabled=false
|
|
|
```
|
|
|
|
|
|
-2. 创建Chart.yaml和values.yaml
|
|
|
-
|
|
|
-3. 在Chart.yaml中添加依赖声明
|
|
|
-
|
|
|
-4. 在environments/中为新服务添加配置
|
|
|
-
|
|
|
-详见README中的详细说明部分。
|
|
|
-
|
|
|
### 示例4:升级应用版本
|
|
|
|
|
|
```bash
|
|
|
-helm upgrade microservice-platform ./ \
|
|
|
- --set user-service.image.tag=1.1.0 \
|
|
|
- --set order-service.image.tag=1.1.0 \
|
|
|
- --set payment-service.image.tag=1.1.0
|
|
|
+# 升级所有服务到新版本
|
|
|
+helm upgrade shop-recycle ./ \
|
|
|
+ --set global.image.tag=v2.0.0
|
|
|
+
|
|
|
+# 或升级特定服务
|
|
|
+helm upgrade shop-recycle ./ \
|
|
|
+ --set shop-recycle-payment.image.tag=v2.0.0 \
|
|
|
+ --set shop-recycle-store.image.tag=v2.0.0
|
|
|
```
|
|
|
|
|
|
### 示例5:灾难恢复
|
|
|
|
|
|
```bash
|
|
|
# 查看发布历史
|
|
|
-helm history microservice-platform
|
|
|
+helm history shop-recycle
|
|
|
|
|
|
# 回滚到前一个版本
|
|
|
-helm rollback microservice-platform 1
|
|
|
+helm rollback shop-recycle 1
|
|
|
+
|
|
|
+# 回滚到特定版本
|
|
|
+helm rollback shop-recycle 5
|
|
|
```
|
|
|
|
|
|
---
|
|
|
@@ -263,13 +412,16 @@ helm rollback microservice-platform 1
|
|
|
|
|
|
```bash
|
|
|
# 查看Release信息
|
|
|
-helm status microservice-platform
|
|
|
+helm status shop-recycle
|
|
|
|
|
|
# 查看Release使用的values
|
|
|
-helm get values microservice-platform
|
|
|
+helm get values shop-recycle
|
|
|
|
|
|
# 查看Release部署的资源
|
|
|
-helm get manifest microservice-platform
|
|
|
+helm get manifest shop-recycle
|
|
|
+
|
|
|
+# 查看所有微服务pod
|
|
|
+kubectl get pods -l project=shop-recycle -o wide
|
|
|
```
|
|
|
|
|
|
### 调试和测试
|
|
|
@@ -279,43 +431,69 @@ helm get manifest microservice-platform
|
|
|
helm lint ./
|
|
|
|
|
|
# 渲染模板(不实际部署)
|
|
|
-helm template microservice-platform ./
|
|
|
+helm template shop-recycle ./
|
|
|
|
|
|
# 详细渲染(查看完整输出)
|
|
|
-helm template microservice-platform ./ --debug
|
|
|
+helm template shop-recycle ./ --debug
|
|
|
+
|
|
|
+# 查看特定环境的渲染结果
|
|
|
+helm template shop-recycle ./ -f environments/prod-values.yaml
|
|
|
```
|
|
|
|
|
|
### 日志和监控
|
|
|
|
|
|
```bash
|
|
|
# 查看所有微服务日志
|
|
|
-kubectl logs -l platform=microservice-platform -f
|
|
|
+kubectl logs -l project=shop-recycle -f
|
|
|
|
|
|
# 查看特定服务日志
|
|
|
-kubectl logs -l app=user-service -f
|
|
|
+kubectl logs -l app=shop-recycle-payment -f
|
|
|
|
|
|
-# 查看Pod详情
|
|
|
+# 查看Pod详情(包括事件)
|
|
|
kubectl describe pod <pod-name>
|
|
|
+
|
|
|
+# 查看资源使用情况
|
|
|
+kubectl top pods -l project=shop-recycle
|
|
|
```
|
|
|
|
|
|
### 端口转发(本地测试)
|
|
|
|
|
|
```bash
|
|
|
-# 转发user-service
|
|
|
-kubectl port-forward svc/user-service 8080:8080
|
|
|
+# 转发payment服务
|
|
|
+kubectl port-forward svc/shop-recycle-payment 8080:8080
|
|
|
+
|
|
|
+# 转发gateway服务
|
|
|
+kubectl port-forward svc/shop-recycle-gateway 8098:8098
|
|
|
|
|
|
# 在另一个终端测试
|
|
|
curl http://localhost:8080/actuator/health
|
|
|
+curl http://localhost:8098/actuator/health
|
|
|
```
|
|
|
|
|
|
-### 删除Release
|
|
|
+### 进入容器调试
|
|
|
+
|
|
|
+```bash
|
|
|
+# 进入pod
|
|
|
+kubectl exec -it <pod-name> -- /bin/bash
|
|
|
+
|
|
|
+# 执行命令查看配置
|
|
|
+kubectl exec <pod-name> -- cat /etc/config/application.properties
|
|
|
+
|
|
|
+# 测试应用健康状态
|
|
|
+kubectl exec <pod-name> -- curl http://localhost:8080/actuator/health
|
|
|
+```
|
|
|
+
|
|
|
+### 删除和清理
|
|
|
|
|
|
```bash
|
|
|
# 删除Release(保留PVC)
|
|
|
-helm uninstall microservice-platform
|
|
|
+helm uninstall shop-recycle
|
|
|
|
|
|
# 删除namespace
|
|
|
-kubectl delete namespace <namespace>
|
|
|
+kubectl delete namespace shop-recycle
|
|
|
+
|
|
|
+# 删除所有资源
|
|
|
+kubectl delete all -l project=shop-recycle
|
|
|
```
|
|
|
|
|
|
---
|
|
|
@@ -324,27 +502,57 @@ kubectl delete namespace <namespace>
|
|
|
|
|
|
### Umbrella Chart设计
|
|
|
|
|
|
-**Umbrella Chart** 的核心作用:
|
|
|
-1. 作为多个子Chart的容器
|
|
|
+**Umbrella Chart** 是一个特殊的Helm Chart,主要作用是:
|
|
|
+1. 作为25个子Chart的容器
|
|
|
2. 提供全局配置和共享值
|
|
|
3. 支持子Chart的条件启用/禁用
|
|
|
4. 实现统一的部署管理
|
|
|
|
|
|
-### 模板继承
|
|
|
+```
|
|
|
+Umbrella Chart (shop-recycle)
|
|
|
+├── Base Chart (可复用模板)
|
|
|
+│ ├── Deployment模板
|
|
|
+│ ├── Service模板
|
|
|
+│ └── ConfigMap模板(标准化Spring Cloud属性)
|
|
|
+└── 25个微服务(继承Base模板)
|
|
|
+ ├── 后端服务 (8个)
|
|
|
+ ├── 数据管理 (4个)
|
|
|
+ ├── 前端Web (8个)
|
|
|
+ └── 管理后台 (5个)
|
|
|
+```
|
|
|
+
|
|
|
+### 模板继承和代码复用
|
|
|
|
|
|
-各微服务的templates通过引用base chart实现代码复用:
|
|
|
+各微服务的templates通过引用base chart的模板实现代码复用:
|
|
|
|
|
|
```yaml
|
|
|
+# shop-recycle-payment/templates/deployment.yaml
|
|
|
{{- include "base.deployment" . -}}
|
|
|
-{{- include "base.service" . -}}
|
|
|
-{{- include "base.configmap" . -}}
|
|
|
```
|
|
|
|
|
|
这样可以:
|
|
|
-- 避免重复代码
|
|
|
-- 统一部署配置
|
|
|
-- 快速添加新服务
|
|
|
-- 简化维护
|
|
|
+- ✅ 避免重复代码(DRY原则)
|
|
|
+- ✅ 统一部署配置逻辑
|
|
|
+- ✅ 快速添加新服务
|
|
|
+- ✅ 维护和修复更简单
|
|
|
+
|
|
|
+### Spring Cloud应用属性配置
|
|
|
+
|
|
|
+**标准化的application.properties生成**:
|
|
|
+
|
|
|
+ConfigMap模板中直接固定生成标准的Spring Cloud配置:
|
|
|
+
|
|
|
+```properties
|
|
|
+spring.application.name=shop-recycle-payment
|
|
|
+spring.protocol.name=spring
|
|
|
+server.port=8080
|
|
|
+```
|
|
|
+
|
|
|
+这样做的优势:
|
|
|
+- ✅ 消除了values文件中的重复配置
|
|
|
+- ✅ 保证配置的一致性和可靠性
|
|
|
+- ✅ 简化了values.yaml的复杂度
|
|
|
+- ✅ 应用名称和端口始终保持关联
|
|
|
|
|
|
---
|
|
|
|
|
|
@@ -353,7 +561,7 @@ kubectl delete namespace <namespace>
|
|
|
### 副本自动扩展(HPA)
|
|
|
|
|
|
```bash
|
|
|
-kubectl autoscale deployment user-service \
|
|
|
+kubectl autoscale deployment shop-recycle-payment \
|
|
|
--min=2 --max=10 --cpu-percent=80
|
|
|
```
|
|
|
|
|
|
@@ -384,9 +592,33 @@ securityContext:
|
|
|
- ✅ 不要在ConfigMap中存储敏感信息
|
|
|
- ✅ 定期轮换凭证
|
|
|
|
|
|
+示例:创建Secret
|
|
|
+
|
|
|
+```bash
|
|
|
+kubectl create secret generic db-credentials \
|
|
|
+ --from-literal=username=dbuser \
|
|
|
+ --from-literal=password=dbpass
|
|
|
+```
|
|
|
+
|
|
|
### 3. 健康检查
|
|
|
|
|
|
-已包含的liveness和readiness probe配置可防止故障pod继续服务。
|
|
|
+已包含的liveness和readiness probe配置:
|
|
|
+
|
|
|
+```yaml
|
|
|
+livenessProbe:
|
|
|
+ httpGet:
|
|
|
+ path: /actuator/health
|
|
|
+ port: http
|
|
|
+ initialDelaySeconds: 30
|
|
|
+ periodSeconds: 10
|
|
|
+
|
|
|
+readinessProbe:
|
|
|
+ httpGet:
|
|
|
+ path: /actuator/health
|
|
|
+ port: http
|
|
|
+ initialDelaySeconds: 5
|
|
|
+ periodSeconds: 5
|
|
|
+```
|
|
|
|
|
|
---
|
|
|
|
|
|
@@ -394,9 +626,9 @@ securityContext:
|
|
|
|
|
|
### 调整JVM参数
|
|
|
|
|
|
-在environment配置中修改JAVA_OPTS。
|
|
|
+在环境配置中修改JAVA_OPTS(需在base chart中配置)。
|
|
|
|
|
|
-### 优化健康检查
|
|
|
+### 优化Health Check
|
|
|
|
|
|
- 增加初始延迟时间:initialDelaySeconds
|
|
|
- 减少检查频率:periodSeconds
|
|
|
@@ -431,13 +663,24 @@ kubectl logs <pod-name> --previous
|
|
|
|
|
|
**原因:** 配置错误、依赖服务不可用
|
|
|
|
|
|
+### 验证ConfigMap内容
|
|
|
+
|
|
|
+```bash
|
|
|
+# 查看ConfigMap
|
|
|
+kubectl get cm shop-recycle-payment-config -o yaml
|
|
|
+
|
|
|
+# 验证application.properties
|
|
|
+kubectl exec <pod-name> -- cat /etc/config/application.properties
|
|
|
+```
|
|
|
+
|
|
|
---
|
|
|
|
|
|
## 📚 相关资源
|
|
|
|
|
|
- [Helm官方文档](https://helm.sh/docs/)
|
|
|
- [Kubernetes官方文档](https://kubernetes.io/docs/)
|
|
|
-- [Spring Boot官方文档](https://spring.io/projects/spring-boot)
|
|
|
+- [Spring Cloud官方文档](https://spring.io/projects/spring-cloud)
|
|
|
+- [Spring Boot Actuator](https://docs.spring.io/spring-boot/docs/current/reference/html/actuator.html)
|
|
|
- [Helm Chart最佳实践](https://helm.sh/docs/chart_best_practices/)
|
|
|
|
|
|
---
|
|
|
@@ -447,28 +690,33 @@ kubectl logs <pod-name> --previous
|
|
|
### v1.0.0 (2026-01-15)
|
|
|
- ✅ 初始化Umbrella Chart架构
|
|
|
- ✅ 创建base通用模板库
|
|
|
-- ✅ 实现3个示例微服务(user、order、payment)
|
|
|
+- ✅ 实现25个shop-recycle微服务Chart
|
|
|
+- ✅ 标准化Spring Cloud应用属性配置
|
|
|
- ✅ 创建多环境配置(dev、staging、prod)
|
|
|
-- ✅ 完整的文档和示例
|
|
|
+- ✅ 优化配置结构,消除重复代码
|
|
|
+- ✅ 完整的文档和使用示例
|
|
|
|
|
|
---
|
|
|
|
|
|
## ❓ 常见问题(FAQ)
|
|
|
|
|
|
**Q: 如何添加新的微服务?**
|
|
|
-A: 在charts目录下创建新的Chart,按照现有服务的结构创建Chart.yaml、values.yaml和templates,然后在Umbrella Chart的Chart.yaml中声明依赖。
|
|
|
+A: 在charts目录下创建新Chart,按照现有服务的结构创建Chart.yaml、values.yaml和templates,然后在Umbrella Chart的Chart.yaml中声明依赖。
|
|
|
|
|
|
-**Q: 如何为单个服务禁用某个功能?**
|
|
|
-A: 在该服务对应的environment配置中进行覆盖。
|
|
|
+**Q: 能否修改应用的Spring属性?**
|
|
|
+A: 应用的基本属性(spring.application.name、spring.protocol.name、server.port)在configmap模板中固定。可以在config.yml中自定义logging和management端点配置。
|
|
|
|
|
|
**Q: 如何实现灰度部署?**
|
|
|
-A: 使用Helm分阶段升级,先更新镜像标签到新版本的一部分副本。
|
|
|
+A: 使用Helm分阶段升级,先更新特定服务的镜像标签,或通过kubectl打补丁逐步更新。
|
|
|
|
|
|
**Q: base chart的版本如何管理?**
|
|
|
-A: 在Umbrella Chart的Chart.yaml中指定版本,提升base版本时更新依赖声明。
|
|
|
+A: 在Umbrella Chart的Chart.yaml中指定版本,提升base版本时更新所有依赖声明。
|
|
|
|
|
|
**Q: 是否支持Helm values的继承?**
|
|
|
-A: 是的,子Chart的values会自动与全局values合并。
|
|
|
+A: 是的,子Chart的values会自动与全局values合并,同名参数子Chart优先级更高。
|
|
|
+
|
|
|
+**Q: 如何只部署部分服务?**
|
|
|
+A: 使用--set选项禁用不需要的服务,如 `--set shop-recycle-payment.enabled=false`
|
|
|
|
|
|
---
|
|
|
|
|
|
@@ -482,4 +730,5 @@ A: 是的,子Chart的values会自动与全局values合并。
|
|
|
---
|
|
|
|
|
|
**最后更新:** 2026-01-15
|
|
|
-**维护者:** DevOps Team
|
|
|
+**维护者:** DevOps Team
|
|
|
+**项目:** Shop Recycle Microservice Platform
|