一、项目迁移需求分析¶
1.2.1 项目介绍¶
项目架构图

整体架构分层
- 用户层:浏览器访问域名
demo.kubeasy.com。 - 前端层:Vue 静态资源服务,处理页面渲染。
- 网关层:Spring Cloud Gateway 或 Zuul,负责 API 路由和负载均衡。
- 注册中心:Eureka Server,管理所有后端服务的注册与发现。
- 后端服务层:多个 SpringBoot 微服务(如订单服务、用户服务等)。
整体流量走向
1、用户访问前端页面
- 请求路径:
shell
# 用户通过浏览器访问
GET http://demo.kubeasy.com/
- 流量处理:
- Kubernetes Ingress 接收到请求后,根据路径
/将流量路由至 前端服务(Vue 静态资源)。 - 前端服务通过 ClusterIP Service 或 NodePort 暴露,部署在 Kubernetes 的 Pod 中。
2、前端调用后端 API
- 请求路径:
shell
# 前端通过 API 请求后端
POST http://demo.kubeasy.com/receiveapi/order/create
-
流量处理:
-
Ingress 根据路径
/receiveapi将请求转发至网关服务 - 网关服务通过 Eureka 注册中心获取可用后端服务实例列表(如订单服务
order-service)。 - 网关根据路由规则(如
/order/**→order-service)将请求转发至目标后端服务。
3、后端服务间通信
-
场景示例:订单服务需要调用用户服务查询用户信息。
-
请求路径:
shell
# 订单服务内部调用用户服务
GET http://user-service/api/user/{id}
-
流量处理:
-
订单服务通过Eureka 客户端查询用户服务的实例地址
- Kubernetes Service 为每个后端服务提供 DNS 名称(如
user-service.default.svc.cluster.local)。 - 流量通过 Kubernetes 的 Service 负载均衡到用户服务的 Pod。
1.2.2 项目需求¶
现有一个SpringCloud项目需要迁移至Kubernetes,该项目采用Eureka注册中心,并采用前后端分离框架(前端使用Vue,后端使用java)。
该项目首页域名为demo.kubeasy.com,域名的主路径/转发至项目的前端,路径/receiveapi转发至网关服务,其他服务注册至Eureka,由网关服务进行流量转发。
1.3 项目迁移方案¶
项目命名空间:demo
Eureka注册中心:使用StatefulSet组成高可用集群
第一个Java服务Handler:使用deployment部署,通过网关Receive服务进行转发,不需要Service
第二个Java服务Receive(网关服务):使用deployment部署Receive服务(起到网关作用),需要对接Ingress Controller需要Service
前端服务UI:使用deployment部署,需要对接Ingress Controller需要Service