Skip to content

部署运维

**本文引用的文件** - [docker-compose.yml](file://lemes-cloud/src/devops/docker-compose/docker-compose.yml) - [base.yml](file://lemes-cloud/src/devops/docker-compose/base.yml) - [nacos.yml](file://lemes-cloud/src/devops/docker-compose/nacos.yml) - [install.sh](file://lemes-cloud/src/devops/k8s/install.sh) - [deploy-master.sh](file://lemes-cloud/src/devops/k8s/deploy-master.sh) - [baremetal-nginx-ingress.yaml](file://lemes-cloud/src/devops/k8s/baremetal-nginx-ingress.yaml) - [kube-flannel.yaml](file://lemes-cloud/src/devops/k8s/kube-flannel.yaml) - [lemes-web.yaml](file://lemes-cloud/src/devops/console/k8s/template/lemes-web.yaml) - [lemes-nacos.yaml](file://lemes-cloud/src/devops/console/k8s/template/lemes-nacos.yaml) - [gateway-ingress.yaml](file://lemes-cloud/src/devops/console/k8s/template/gateway-ingress.yaml) - [lemes-eureka.yaml](file://lemes-cloud/src/devops/console/k8s/template/lemes-eureka.yaml) - [redis.yaml](file://lemes-cloud/src/devops/console/k8s/template/redis.yaml) - [devops-ci.yml](file://lemes-cloud/devops-ci.yml) - [Jenkinsfile](file://lemes-cloud/Jenkinsfile)

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能考量
  8. 故障排查指南
  9. 结论
  10. 附录

简介

本文件面向运维工程师,提供 DeviceMate(后端统称 lemes-cloud)项目的完整部署与运维指导,覆盖容器化部署、Kubernetes 集群配置、负载均衡与入口策略、CI/CD 流水线、监控与日志、性能分析、生产部署指南、容量规划、故障恢复、安全与备份/灾难恢复等主题。内容基于仓库中的 devops 配置与模板文件进行梳理与总结,帮助从开发到生产的全链路落地。

项目结构

lemes-cloud 提供了两套主要的部署形态:

  • Docker Compose:用于本地或小规模测试环境,快速拉起网关、认证、Nacos、Redis 及部分业务服务。
  • Kubernetes:用于生产级部署,包含安装脚本、Flannel 网络、Nginx Ingress、服务清单模板等。

图表来源

章节来源

核心组件

  • 网关与认证
    • lemes-gateway:统一入口,配合 Ingress 实现路径重写与超时控制。
    • lemes-auth:鉴权服务,依赖 Nacos 进行注册发现。
  • 配置中心与注册中心
    • Nacos:提供配置管理与服务注册,支持集群模式与外部 MySQL。
  • 缓存
    • Redis:通过 ConfigMap 注入配置,提供持久化与密码保护。
  • Web 应用
    • lemes-web:静态资源服务,通过 Ingress 对外暴露。
  • CI/CD
    • devops-ci.yml:多环境打包与 Sonar 扫描。
    • Jenkinsfile:Jenkins 流水线,指定 JDK 版本与构建命令。

章节来源

架构总览

下图展示生产级 K8s 部署的关键组件与交互:Ingress 控制器负责外部流量接入,Flannel 提供跨主机网络,Nacos 提供注册与配置,Gateway 作为统一入口,Web 与各业务服务通过 Service/Ingress 暴露。

图表来源

详细组件分析

Docker Compose 部署(本地/测试)

  • 适用场景:本地联调、快速验证、小规模测试。
  • 关键点:
    • 网关与认证服务通过端口映射对外暴露。
    • Nacos 以独立服务运行,可挂载外部 MySQL。
    • Redis 使用 host 网络模式,便于本机直连。
    • 日志目录挂载至宿主机,便于采集与分析。

图表来源

章节来源

Kubernetes 安装与初始化

  • 系统准备:关闭防火墙/SELinux、禁用 swap、配置阿里云 k8s 源、启用 ipvs。
  • 安装 Docker 20.10.5 与 kubelet 1.20.5,并配置私有仓库镜像加速。
  • 初始化 Master 节点,设置 NodePort 范围,安装 Flannel 与 Nginx Ingress。
  • 通过 GitLab 私有令牌拉取网络与入口资源清单。

图表来源

章节来源

网络与入口(Flannel + Nginx Ingress)

  • Flannel:DaemonSet 方式安装,提供 VXLAN 跨主机网络,绑定 CNI 配置。
  • Nginx Ingress:安装 RBAC、ServiceAccount、Deployment 与 Admission Webhook,Service 类型为 NodePort,暴露 80/443。

图表来源

章节来源

服务清单模板(Web/Gateway/Nacos/Eureka/Redis)

  • lemes-web:ClusterIP + Ingress /,暴露静态资源。
  • lemes-nacos:StatefulSet 集群,NodePort 暴露,支持外部 MySQL。
  • lemes-gateway:ClusterIP + Ingress /lemes-api,配置路径重写与超时参数。
  • lemes-eureka:示例注册中心模板(如需保留可按需启用)。
  • Redis:ConfigMap 注入配置,NodePort 暴露,带健康检查。

图表来源

章节来源

CI/CD 流水线

  • devops-ci.yml:定义打包产物、环境 profiles 与 Sonar 扫描参数。
  • Jenkinsfile:引入公共库,设置 JDK 与构建命令,控制是否构建镜像。

图表来源

章节来源

依赖关系分析

  • 组件耦合
    • Gateway 依赖 Nacos 进行注册发现;Web 通过 Ingress 将请求转发至 Gateway。
    • Redis 为共享缓存,Gateway/业务服务可按需访问。
  • 外部依赖
    • Nacos 可对接外部 MySQL;Ingress 依赖 Flannel 提供网络连通性。
  • 潜在风险
    • 单点:Nacos 默认模板为单实例,生产建议使用 StatefulSet 集群。
    • 网络:确保 Flannel 与 Ingress 的 RBAC 权限正确,避免 403/转发失败。

图表来源

章节来源

性能考量

  • 网络性能
    • 启用 ipvs 与 Flannel VXLAN,保证跨主机通信效率。
    • Ingress 超时与代理大小参数已配置,避免大文件上传/下载阻塞。
  • 资源配额
    • Nacos/Redis/网关建议设置合理的 requests/limits,避免资源争抢。
  • 负载均衡
    • Ingress 使用 NodePort 暴露,结合后端服务副本数实现水平扩展。
  • 日志与可观测性
    • 建议接入集中式日志(如 ELK/ Loki),采集容器 stdout 与应用日志目录。

故障排查指南

  • 网络问题
    • 检查 Flannel DaemonSet 是否正常,确认 CNI 配置与主机端口可达。
    • 查看 kube-flannel 与 kube-system 命名空间权限。
  • 入口问题
    • 检查 ingress-nginx 控制器状态与日志,确认 Service 类型与端口映射。
    • 校验 Ingress 路由规则与注解(如路径重写、超时)。
  • 注册中心
    • Nacos 集群状态与 Pod 健康检查;确认外部 MySQL 连通性与凭据。
  • 缓存问题
    • Redis 探针与密码配置;确认 NodePort 可达与持久化卷挂载。

章节来源

结论

本指南基于仓库现有配置,给出了从 Docker Compose 到 Kubernetes 的完整部署路径,明确了网关、注册/配置中心、缓存与入口的协作方式,并提供了 CI/CD、性能与故障排查要点。建议在生产环境中优先采用 K8s 模板,完善 Nacos 集群、日志与监控体系,持续优化资源配额与网络策略。

附录

生产部署步骤(K8s)

  • 准备阶段
    • 执行安装脚本完成系统与组件安装,初始化 Master 节点。
  • 网络与入口
    • 应用 Flannel 与 Nginx Ingress 清单,确认控制器与 RBAC 正常。
  • 服务编排
    • 应用 lemes-nacos、lemes-gateway、lemes-web、redis 等模板,校验 Ingress 路由与 Service 暴露。
  • 验收
    • 通过浏览器访问 Web 与 API,检查日志、探针与网络连通性。

章节来源