8.7 KiB
8.7 KiB
WMS 微服务 Kubernetes + KubeSphere 部署文档
📋 目录
部署前准备
1. 环境要求
- Kubernetes 1.28.x
- KubeSphere 3.4.x
- Helm 3.x
- kubectl 已配置集群访问
- 存储类(StorageClass):nfs-sc
2. 修改配置文件
2.1 修改 Secret(secrets.yaml)
# Redis 密码
wms-redis-secret:
password: "修改为强密码"
# MySQL 密码
wms-mysql-secret:
password: "修改为强密码"
# MinIO 密钥
wms-minio-secret:
access-key: "修改为自定义密钥"
secret-key: "修改为强密钥"
# TLS 证书
wms-tls-secret:
tls.crt: "替换为实际证书"
tls.key: "替换为实际私钥"
# 镜像仓库凭证
wms-docker-registry-secret:
password: "修改为仓库密码"
2.2 修改 Ingress 域名(ingress.yaml)
# 生产环境
- host: wms.yourcompany.com # 修改为实际域名
# 开发环境
- host: wms-dev.yourcompany.com # 修改为实际域名
2.3 修改镜像地址(deployments/*.yaml)
image: registry.yourcompany.com/wms/cpte-wms-basic-service:latest
# 修改为实际的镜像仓库地址
扩展组件选择
✅ 必选组件(21 个)
在 KubeSphere 扩展组件选择界面,勾选以下组件:
核心组件
- Metrics Server
- KubeSphere 网关
- KubeSphere 网络
- KubeSphere 存储
可观察性
- WizTelemetry 监控
- WizTelemetry 日志
- WizTelemetry 告警
- WizTelemetry 通知
- WizTelemetry 事件
- WizTelemetry 审计
- WizTelemetry 全局监控
- KubeEye 巡检
DevOps
- DevOps
- 镜像构建器
安全和集成
- cert-manager
- OAuth2-Proxy
- Gatekeeper
- KubeSphere Spring Cloud
- KEDA for KubeSphere
应用管理
- KubeSphere 应用商店管理
- KubeSphere 应用路由工具
❌ 不需要的组件
以下组件不要勾选:
- 所有 AI/ML 相关(算力设备管理、DeepSeek、KAITO、NVIDIA 相关)
- 多集群相关(Karmada、联邦集群)
- 专用数据库(ob-operator、OceanBase)
- 服务网格(Istio、KubeSphere 服务网格)
快速部署
一键部署
# 进入 k8s 目录
cd k8s
# 执行部署脚本
chmod +x deploy.sh
./deploy.sh
# 选择选项 1) 完整部署
部署后验证
# 查看所有 Pod 状态
kubectl get pods -n wms-system
# 查看服务状态
kubectl get services -n wms-system
# 查看 Ingress
kubectl get ingress -n wms-system
# 查看 HPA
kubectl get hpa -n wms-system
分步部署
步骤 1: 创建命名空间
kubectl apply -f namespace.yaml
步骤 2: 创建 Secret
# 先修改 secrets.yaml 中的密码和证书
kubectl apply -f secrets.yaml
步骤 3: 创建 ConfigMap
kubectl apply -f configmap.yaml
步骤 4: 创建存储
kubectl apply -f pvc.yaml
步骤 5: 部署中间件
详见 中间件部署
步骤 6: 部署微服务
# 部署所有微服务
kubectl apply -f deployments/
# 或逐个部署
kubectl apply -f deployments/wms-basic-deployment.yaml
kubectl apply -f deployments/wms-inbound-deployment.yaml
kubectl apply -f deployments/wms-outbound-deployment.yaml
kubectl apply -f deployments/wms-inventory-deployment.yaml
kubectl apply -f deployments/wms-schedule-deployment.yaml
步骤 7: 部署网络和网关
kubectl apply -f services.yaml
kubectl apply -f ingress.yaml
步骤 8: 配置自动扩缩容
kubectl apply -f hpa.yaml
中间件部署
方式一:Helm 部署(推荐)
# 添加 Helm Repo
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add minio https://charts.min.io/
helm repo update
# 部署 MySQL
helm install mysql bitnami/mysql \
-f helm/mysql-values.yaml \
-n wms-system
# 部署 Redis
helm install redis bitnami/redis \
-f helm/redis-values.yaml \
-n wms-system
# 部署 MinIO
helm install minio minio/minio \
-f helm/minio-values.yaml \
-n wms-system
方式二:使用已有中间件
如果已有 MySQL/Redis/MinIO 服务,只需修改 secrets.yaml 中的连接信息:
# wms-redis-secret
stringData:
host: "已有 Redis 服务地址"
port: "6379"
password: "Redis 密码"
# wms-mysql-secret
stringData:
host: "已有 MySQL 服务地址"
port: "3306"
username: "数据库用户名"
password: "数据库密码"
# wms-minio-secret
stringData:
access-key: "MinIO 访问密钥"
secret-key: "MinIO 密钥"
endpoint: "http://minio 地址:9000"
验证和测试
1. 检查 Pod 状态
kubectl get pods -n wms-system -o wide
期望输出:
NAME READY STATUS RESTARTS AGE
wms-basic-service-xxxxx-xxxxx 1/1 Running 0 5m
wms-inbound-service-xxxxx-xxxxx 1/1 Running 0 5m
wms-outbound-service-xxxxx-xxxxx 1/1 Running 0 5m
wms-inventory-service-xxxxx-xxxxx 1/1 Running 0 5m
wms-schedule-service-xxxxx-xxxxx 1/1 Running 0 5m
2. 检查服务连接
# 测试基础服务
kubectl exec -it deployment/wms-basic-service -n wms-system -- \
curl -s http://localhost:8080/actuator/health
# 查看服务日志
kubectl logs -f deployment/wms-basic-service -n wms-system
3. 访问 API 接口
# 获取 Ingress 地址
kubectl get ingress -n wms-system
# 测试 API(替换为实际域名)
curl -k https://wms.yourcompany.com/api/wms/basic/health
curl -k https://wms.yourcompany.com/doc.html
4. 访问 MinIO 控制台
# 获取 MinIO 控制台地址
kubectl get ingress -n wms-system | grep minio
# 浏览器访问:https://minio-console.yourcompany.com
# 默认账号密码:minioadmin / minioadmin123
5. 测试自动扩缩容
# 查看 HPA 状态
kubectl get hpa -n wms-system
# 模拟负载测试
kubectl run -i --tty load-tester --image=busybox --rm --restart=Never -- \
while true; do wget -q -O- http://wms-basic-service.wms-system.svc.cluster.local/actuator/health; done
常见问题
Q1: Pod 无法启动
# 查看 Pod 详情
kubectl describe pod <pod-name> -n wms-system
# 查看日志
kubectl logs <pod-name> -n wms-system
# 常见问题:
# 1. 镜像拉取失败 -> 检查镜像地址和仓库凭证
# 2. 数据库连接失败 -> 检查 Secret 配置
# 3. 健康检查失败 -> 增加 startupProbe 的 failureThreshold
Q2: 无法访问服务
# 检查 Ingress Controller
kubectl get pods -n ingress-nginx
# 检查 Ingress 配置
kubectl describe ingress wms-ingress -n wms-system
# 检查 DNS 解析
nslookup wms.yourcompany.com
Q3: HPA 不工作
# 检查 Metrics Server
kubectl get pods -n kube-system | grep metrics-server
# 查看 HPA 详情
kubectl describe hpa wms-basic-hpa -n wms-system
# 确保 Pod 有 resources 配置
kubectl get deployment wms-basic-service -n wms-system -o yaml
Q4: 存储卷挂载失败
# 检查 StorageClass
kubectl get sc
# 检查 PVC 状态
kubectl get pvc -n wms-system
# 查看 NFS Provisioner 日志
kubectl logs -n kube-system -l app=nfs-subdir-external-provisioner
Q5: 数据库初始化
# 连接 MySQL
kubectl run -it --rm --image=mysql:8.0 --restart=Never mysql-client \
-- mysql -h mysql-primary.wms-system.svc.cluster.local -u root -p
# 创建数据库
CREATE DATABASE IF NOT EXISTS `cpte-wms` DEFAULT CHARACTER SET utf8mb4;
监控和运维
查看监控指标
- 登录 KubeSphere 控制台
- 进入"可观察性" -> "监控"
- 选择 wms-system 命名空间
配置告警
- 进入"告警管理" -> "告警策略"
- 创建新的告警规则
- 配置通知渠道(邮件/钉钉/企业微信)
日志查询
- 进入"可观察性" -> "日志"
- 选择命名空间:wms-system
- 选择容器进行查询
升级和回滚
升级微服务
# 更新镜像版本
kubectl set image deployment/wms-basic-service \
wms-basic=registry.yourcompany.com/wms/cpte-wms-basic-service:v3.8.4 \
-n wms-system
# 查看升级状态
kubectl rollout status deployment/wms-basic-service -n wms-system
回滚
# 回滚到上一版本
kubectl rollout undo deployment/wms-basic-service -n wms-system
# 回滚到指定版本
kubectl rollout undo deployment/wms-basic-service:2 -n wms-system
联系支持
如有问题,请联系:
- 技术支持:cpte@163.com
- 文档:http://www.cpte.com/docs