一、项目迁移需求分析

1.2.1 项目介绍

项目架构图

Day016-综合练习-SpringCloud项目迁移至K8s-图1

整体架构分层

  1. 用户层:浏览器访问域名 demo.kubeasy.com
  2. 前端层:Vue 静态资源服务,处理页面渲染。
  3. 网关层:Spring Cloud Gateway 或 Zuul,负责 API 路由和负载均衡。
  4. 注册中心:Eureka Server,管理所有后端服务的注册与发现。
  5. 后端服务层:多个 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