Day 20 / 共 20 天 · 第 4 周 前端/部署

收官串讲:全栈全貌 + 五站串联

恭喜坚持到最后一天!今天把 Console 的四周内容收成一条主线,再把整个 higress-group 系列(Envoy→Istio→Higress→Console)串起来——你将看清"一个 AI 网关产品"从数据面到管理界面的完整全貌。

📍 你在整门课的位置 · 第 4 周 前端/部署(Day 16-20)· 🎓 最后一天
D16 前端技术栈 D17 前端结构 D18 动态表单 D19 部署 D20 收官串讲
L01

一句话回顾

💡 一句话本质:Console = 网关的"驾驶舱 + 翻译官" 你在网页上点点点(驾驶舱),Console 把每个操作翻译成 K8s 原生对象(翻译官),写进 K8s;剩下的交给上一站的 Higress 控制器去执行。它是"人机接口",从不直接碰 Envoy。
📝 举个例子(一次操作的归宿) 你在界面建一条路由 /order → order-service,点保存 → Console 生成一个带 higress.io/* 注解的 Ingress 写进 K8s。就这么简单——所有配置(路由/域名/证书/插件/AI/消费者/MCP)都是这套"点击 → K8s 对象"。
Higress Console = Spring Boot(console 模块:Web/REST/鉴权/仪表盘)+ 纯 Java SDK(sdk 模块:封装 K8s client)+ React 前端。
所有网关配置(路由/域名/证书/插件/AI/消费者/MCP)都被翻译成 K8s 原生对象(Ingress+注解、ConfigMap、Secret、WasmPlugin/McpBridge/EnvoyFilter CRD)写入 K8s,由 Higress 控制器 watch 后下发;仅少量只读运维数据(服务发现列表、endpoint)通过 HTTP 直连控制器 /debug/*Console 是"人机接口",不碰 Envoy。
L02

四周主线

🧠 一句口诀记住四周 「搭骨架 → 落 K8s → 编插件 → 画界面」:第 1 周搭后端骨架、第 2 周把一切落成 K8s 资源、第 3 周把 AI/插件/鉴权/MCP 这些高层能力编排成底层插件、第 4 周画前端界面并打包部署。四周合起来就是"把网页点击变成集群里生效的网关配置"这一件事。
第 1 周 后端架构:全栈打包 → Spring Boot 启动 → 三层分层 → REST API → 切面(鉴权/异常)。核心:SdkConfig 桥接 console↔sdk。
第 2 周 SDK 与存储:门面 + 手写 DI → 存储=薄封装 → K8s 客户端 → 领域模型 → "创建路由"端到端。核心:一切落 K8s。
第 3 周 AI/插件/消费者:AI 一对多编排 → 插件定义/实例 → 消费者=key-auth 实例 → 服务源=McpBridge → MCP 双策略工厂。核心:高层抽象→底层资源。
第 4 周 前端/部署:ice.js/React → 结构与页面 → schema 动态表单 → Docker/Helm。核心:schema 驱动 UI + 配置注入闭环。
L03

全栈请求链(把四周串成一条)

前端(第 4 周) ① 抽屉填表+权重校验 ② service+拦截器 POST /v1/routes 后端(第 1/2/3 周) ③ Controller+切面鉴权 ④ ServiceImpl 编排 ⑤ route2Ingress→写 K8s ⑥(离开 Console)Higress 控制器 watch → Istio 配置 → xDS → Envoy 生效(上一站)
全栈请求链:①②在前端、③④⑤在后端、⑥交给上一站——从用户点击到流量生效,每一段你都学过了。
① 浏览器:路由页抽屉填表 + 权重校验(第4周)
  → ② 前端 service + request 拦截器带 token POST /v1/routes(第4周)
    → ③ RoutesController 校验 + 切面鉴权(第1周)
      → ④ RouteServiceImpl.add 编排 + writeAuthConfigResources(第2/3周)
        → ⑤ route2Ingress 转注解 + createIngress 写 K8s(第2周)
          → ⑥(离开 Console)Higress 控制器 watch → Istio 配置 → xDS → Envoy 生效
读法:①②在前端,③④⑤在后端,⑥交给上一站。这条链就是全课的"任督二脉"——从用户点击到流量生效,每一段你都学过了。
L04

五大设计智慧

  1. 无数据库,一切存 K8s:复用 K8s 的持久化/watch/一致性,Console 天然无状态可扩。
  2. SDK 不依赖 Spring:业务能力与 Web 框架解耦,SDK 可独立复用。
  3. 高层抽象 → 底层资源编排:一条 AI 路由展开成 Ingress + 多插件 + EnvoyFilter,用户无感。
  4. 策略模式 + 注册表:LLM Provider Handler、MCP 双策略工厂——加新类型不改老代码(开闭原则)。
  5. schema 驱动 UI:后端给 JSON Schema,前端动态渲染表单,加新插件前端零改动。
这些智慧能迁移到你的项目吗? 能!"用现成基础设施当存储"(无数据库)、"核心逻辑不绑框架"(可复用 SDK)、"用注册表 + 策略应对多类型"、"用 schema 驱动动态 UI"——这四条几乎适用于任何管理后台。看懂 Console 怎么用,你就能在自己的项目里照搬。
L05

higress-group 五站串讲

👶 小白 vs 👨‍🏫 老师 👶:学了这么多站——Envoy、Istio、Higress、Console,它们到底谁听谁的?
👨‍🏫:想象一家餐厅:Console 是点菜的平板(顾客下单),Higress 是把订单翻译成后厨流程的经理,Istio 是把流程贴到各灶台的传菜系统,Envoy 是真正颠勺出菜的厨师,wasm-go 插件是厨师手里的定制工具。
👶:那配置是怎么一路传下去的?
👨‍🏫:Console 写成 K8s 对象 → Higress Core watch 到、翻成 Istio 配置 → 经 xDS 下发给 Envoy → Envoy 执行流量。Console 是入口、Envoy 是出口,中间三层层层翻译。
Envoy数据面
C++ 代理,执行流量
Istio控制面
istiod 生成 xDS
HigressAI 网关
Core 喂配置给 istiod
Console管理界面
生成 K8s 配置(本课)
wasm-go插件 SDK
写扩展插件(下一站)
五站怎么协作(一条完整链):
你在 Console 点点点(本课) → 写成 K8s Ingress+CRD → Higress Core watch 到、翻译成 Istio 配置 → 经 MCP-over-xDS 喂给 istiod(Istio) → istiod 生成 xDS 下发给 Envoy → Envoy 执行流量 + 运行 wasm-go 写的插件
Console 是"入口",Envoy 是"出口",中间三层把配置层层翻译落地。
L06

待改进的 TODO(练手好素材)

  • 后端 JSONSchema 校验是空 TODOWasmPluginConfig.validateAndCleanUp,Day 12)——可引入 json-schema-validator 做真正的服务端校验。
  • 自定义插件的 queryConfig/queryReadme 也是 TODO(返回空)——可实现从 CRD/OCI 读取自定义插件的 schema。
  • 鉴权只支持 key-auth(Day 13)——可新增 CredentialHandler 实现 jwt-auth 并注册。
读法:这些不是缺陷,而是清晰的扩展点——想给开源社区贡献代码,或练手真实工程,这三个是绝佳入口。
L07

学习路径建议

如果你要基于 Higress 做二次开发,建议顺序:

  1. 先跑起来:helm install 部署一套,界面点一圈,感性认识。
  2. 抓一个功能通读:以"路由"为例,前端 route 页 → service → 后端 Controller → RouteServiceImpl → Converter → K8s,端到端走一遍。
  3. 动手改一个 TODO:从上面三个里挑一个实现,跑通测试。
  4. 对照上一站 Higress:看你在 Console 建的资源,怎么被 Higress 控制器消费。
L08

毕业 + 动手

🎓 20 天后,你已经能

  • 说清 Console 的全栈架构和"一切存 K8s"的核心设计。
  • 追踪任意一个功能从界面到 K8s 的完整链路。
  • 看懂 AI 路由的一对多编排、插件的 schema 动态表单、鉴权的 allow list 机制。
  • 把 Envoy→Istio→Higress→Console 五站串成一个 AI 网关产品的全貌。

✋ 毕业动手

# 通读一个功能的完整链路(以路由为例)
cd /Users/bitmart/work/codes/github/higress-group/higress-console
echo "前端:" && ls frontend/src/pages/route/ frontend/src/services/route.ts
echo "后端:" && ls backend/console/src/main/java/com/alibaba/higress/console/controller/RoutesController.java
echo "SDK:" && ls backend/sdk/src/main/java/com/alibaba/higress/sdk/service/RouteServiceImpl.java
# 挑一个 TODO 动手实现,向社区提 PR
下一站预告:higress-group 系列最后一站 wasm-go——Higress 插件开发 SDK,学会自己写 Wasm 插件(SetCtx/三级 Context/RuleMatcher)。学完你就能给这个 AI 网关加自定义能力了。
← Day 19 返回总目录 →