# WMS 微服务 Kubernetes + KubeSphere 部署文档 ## 📋 目录 1. [部署前准备](#部署前准备) 2. [扩展组件选择](#扩展组件选择) 3. [快速部署](#快速部署) 4. [分步部署](#分步部署) 5. [中间件部署](#中间件部署) 6. [验证和测试](#验证和测试) 7. [常见问题](#常见问题) --- ## 部署前准备 ### 1. 环境要求 - Kubernetes 1.28.x - KubeSphere 3.4.x - Helm 3.x - kubectl 已配置集群访问 - 存储类(StorageClass):nfs-sc ### 2. 修改配置文件 #### 2.1 修改 Secret(secrets.yaml) ```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) ```yaml # 生产环境 - host: wms.yourcompany.com # 修改为实际域名 # 开发环境 - host: wms-dev.yourcompany.com # 修改为实际域名 ``` #### 2.3 修改镜像地址(deployments/*.yaml) ```yaml image: registry.yourcompany.com/wms/cpte-wms-basic-service:latest # 修改为实际的镜像仓库地址 ``` --- ## 扩展组件选择 ### ✅ 必选组件(21 个) 在 KubeSphere 扩展组件选择界面,勾选以下组件: #### 核心组件 - [x] Metrics Server - [x] KubeSphere 网关 - [x] KubeSphere 网络 - [x] KubeSphere 存储 #### 可观察性 - [x] WizTelemetry 监控 - [x] WizTelemetry 日志 - [x] WizTelemetry 告警 - [x] WizTelemetry 通知 - [x] WizTelemetry 事件 - [x] WizTelemetry 审计 - [x] WizTelemetry 全局监控 - [x] KubeEye 巡检 #### DevOps - [x] DevOps - [x] 镜像构建器 #### 安全和集成 - [x] cert-manager - [x] OAuth2-Proxy - [x] Gatekeeper - [x] KubeSphere Spring Cloud - [x] KEDA for KubeSphere #### 应用管理 - [x] KubeSphere 应用商店管理 - [x] KubeSphere 应用路由工具 ### ❌ 不需要的组件 以下组件**不要勾选**: - 所有 AI/ML 相关(算力设备管理、DeepSeek、KAITO、NVIDIA 相关) - 多集群相关(Karmada、联邦集群) - 专用数据库(ob-operator、OceanBase) - 服务网格(Istio、KubeSphere 服务网格) --- ## 快速部署 ### 一键部署 ```bash # 进入 k8s 目录 cd k8s # 执行部署脚本 chmod +x deploy.sh ./deploy.sh # 选择选项 1) 完整部署 ``` ### 部署后验证 ```bash # 查看所有 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: 创建命名空间 ```bash kubectl apply -f namespace.yaml ``` ### 步骤 2: 创建 Secret ```bash # 先修改 secrets.yaml 中的密码和证书 kubectl apply -f secrets.yaml ``` ### 步骤 3: 创建 ConfigMap ```bash kubectl apply -f configmap.yaml ``` ### 步骤 4: 创建存储 ```bash kubectl apply -f pvc.yaml ``` ### 步骤 5: 部署中间件 详见 [中间件部署](#中间件部署) ### 步骤 6: 部署微服务 ```bash # 部署所有微服务 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: 部署网络和网关 ```bash kubectl apply -f services.yaml kubectl apply -f ingress.yaml ``` ### 步骤 8: 配置自动扩缩容 ```bash kubectl apply -f hpa.yaml ``` --- ## 中间件部署 ### 方式一:Helm 部署(推荐) ```bash # 添加 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` 中的连接信息: ```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 状态 ```bash 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. 检查服务连接 ```bash # 测试基础服务 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 接口 ```bash # 获取 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 控制台 ```bash # 获取 MinIO 控制台地址 kubectl get ingress -n wms-system | grep minio # 浏览器访问:https://minio-console.yourcompany.com # 默认账号密码:minioadmin / minioadmin123 ``` ### 5. 测试自动扩缩容 ```bash # 查看 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 无法启动 ```bash # 查看 Pod 详情 kubectl describe pod -n wms-system # 查看日志 kubectl logs -n wms-system # 常见问题: # 1. 镜像拉取失败 -> 检查镜像地址和仓库凭证 # 2. 数据库连接失败 -> 检查 Secret 配置 # 3. 健康检查失败 -> 增加 startupProbe 的 failureThreshold ``` ### Q2: 无法访问服务 ```bash # 检查 Ingress Controller kubectl get pods -n ingress-nginx # 检查 Ingress 配置 kubectl describe ingress wms-ingress -n wms-system # 检查 DNS 解析 nslookup wms.yourcompany.com ``` ### Q3: HPA 不工作 ```bash # 检查 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: 存储卷挂载失败 ```bash # 检查 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: 数据库初始化 ```bash # 连接 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; ``` --- ## 监控和运维 ### 查看监控指标 1. 登录 KubeSphere 控制台 2. 进入"可观察性" -> "监控" 3. 选择 wms-system 命名空间 ### 配置告警 1. 进入"告警管理" -> "告警策略" 2. 创建新的告警规则 3. 配置通知渠道(邮件/钉钉/企业微信) ### 日志查询 1. 进入"可观察性" -> "日志" 2. 选择命名空间:wms-system 3. 选择容器进行查询 --- ## 升级和回滚 ### 升级微服务 ```bash # 更新镜像版本 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 ``` ### 回滚 ```bash # 回滚到上一版本 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