1. 为什么我用一个网络梗来聊Higress
先说清楚标题里的“中登”是什么梗。
网络语境里,“中登”是对中年男人的戏称——不是贬义,更像是在说那种“家里大小事都得他来扛、平时不声不响、但他不在就转不动”的角色。上有老下有小,工作了一整天回到家还得修水管通马桶,第二天照样西装革履去开会。听起来挺惨,但这种人恰恰是一个家庭最稳的底盘。
我拿Higress出来对比,是因为我在AI项目里越用越觉得,Higress就是技术架构里的那个“中登”。
你仔细想:大模型大家关注的是什么?是模型效果、是RAG链路、是Agent调度、是新出的那个什么框架又火了。没人会为了网关开一场发布会,也没人会因为“网关做得稳”给CTO发奖金。但一旦生产环境里接口超时、限流失效、某个模型的Key被刷爆、或者审计日志对不上的时候,所有人第一个找的还是网关。它就像家里那个平时存在感最低、关键时刻谁都离不开的中年人。
Higress在AI时代被重新发现,原因很简单:AI应用和传统业务应用的流量模型完全不一样。传统网关处理的是HTTP请求转发、负载均衡、灰度发布,这套逻辑在微服务时代很成熟了。但AI时代多了几件新事情——多个大模型服务并存、Token消耗要计量、请求要按模型路由、API Key要统一管理、上下文长度要控制。这些事如果都靠业务代码自己写,每个服务都得维护一套重复的治理逻辑,项目多了就是灾难。
Higress本身并不是新物种。它基于Envoy和Istio生态,是阿里开源的云原生API网关,兼容Kubernetes Ingress和Gateway API标准,同时沉淀了面向AI场景的插件体系,比如AI Proxy、AI Stats、AI Token Limiter这些。换句话说,它不是为AI而生的,但AI时代恰好把它的价值放大了。
这篇文章我想把Higress在AI架构里的真实定位讲透:它凭什么成为AI时代的心头好,怎么用最省事的方式把私有化的大模型服务挂到Higress后面,以及从“技术管理”这个视角看,网关这类中间件为什么会成为AI时代能力模型里的一等公民。文章后面会直接用一套可复现的部署方案讲访问地址到底怎么配,再聊几个我实际踩过的坑。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. AI应用的大门:Higress在大模型架构里到底管什么
如果你只是把一个模型服务部署在K8s集群里,用Service直接暴露给内部调用,其实用不上网关。但AI应用一旦走到生产环境,事情就没那么简单了。
2.1 多模型路由:一个入口,背后一堆模型
生产环境里最常见的场景是:你同时接入了多个模型服务。可能是私有化部署的Qwen、Llama,也可能是云端API。业务方不关心模型部署在哪里、叫什么名字,他们只想要一个稳定的入口,然后指定“我要用哪个模型”就行。
Higress的AI Proxy插件做的就是这件事。它在网关层维护一份模型到后端服务的映射表,接收到请求后根据请求头里的模型名,把流量转发到对应的上游。上游可以是K8s集群内的Service,也可以是一个内网地址,第三方API同样可以。
这意味着业务方不需要感知背后的服务地址变化。今天你从Qwen切到Llama,只需要在Higress配置里改一下映射,业务代码一行不动。这对迭代频繁的AI项目来说非常关键。
2.2 统一认证与API Key管理
AI服务有一个特别麻烦的点:API Key散落在各个业务端。每个服务都持有一份模型平台的Key,一旦Key需要轮换或者某个业务方超出配额,你根本说不清楚是哪个调用方干的。
Higress可以把认证收敛到网关层。业务端访问模型时,统一使用网关分发的Key或JWT,网关再做一次映射,用全局维护的Key去访问真正的模型服务。这样做带来的好处很直接:
- Key的明文不落地业务方服务器,降低泄露面。
- 可以在网关层直接针对每个调用方做独立的配额控制。
- 轮换Key只需要改网关配置,不用通知所有业务方重新部署。
这个模式放在传统微服务里叫“统一接入层”,到了AI时代它的价值被放大了。因为模型的调用成本高、频率高、审计要求也高,没有一个统一的入口,安全管理几乎无从下手。
2.3 Token计量:把成本摊到每个业务头上
老板不会问“网关好不好用”,老板会问“这个月模型调用花了多少钱、哪个部门花的”。
Token计量是AI网关和传统网关最大的差异点。普通的API网关只看请求数、吞吐量、错误率,但AI场景下真正的计费单位是Token。如果不做Token级别的统计,你只能看到某个服务调用了多少次模型接口,但每次调用消耗了多少Token完全是个黑盒。
Higress的AI Stats插件能在网关层解析请求体和响应体,统计每次调用的输入Token、输出Token,以及总消耗。有了这些数据,你就能按业务方、按模型维度圈定成本归属。更进一步,配合AI Token Limiter插件,可以直接在网关层给每个业务方设定Token额度,超出就拒绝或降级,防止一个失控的脚本把整月预算烧光。
2.4 可观测性与AI时代的安全事件处置
热搜词里有一句很有意思:“AI时代网络安全事件处置”。很多团队对AI安全的理解还停留在“别让模型生成违规内容”上,但实际生产环境的安全事件远不止这些。
我见过一次真实的攻击:有人拿到了业务方泄漏的API Key,在凌晨批量调用模型接口做数据抽取。如果没有网关层的访问审计,这个问题可能要等到月底账单出来才会被发现。有了网关之后,你可以快速定位几个关键信息:这个Key在什么时间、从哪个来源IP、调用了哪个模型、每次的请求体是什么、响应体是什么、消耗了多少Token。
这些信息全部可以从Higress的访问日志和AI Stats指标里拉出来。而且网关层的日志天然是集中式的,不需要在各业务服务里逐个翻日志。事后复盘的时候,你能完整还原攻击链路,这在安全处置里是最重要的一步。
从定位上看,Higress在AI架构里扮演的就是“大门”的角色:所有流量从这扇门出入,一眼看清谁进来了、带了什么、拿走了什么。这种掌控感,在AI应用规模起来之后会越来越值钱。
3. 实操:把私有大模型服务挂到Higress后面,访问地址到底怎么配
热搜词里有个特别具体的问题:“higress代理私有大模型服务后,访问地址是多少?”
这个问题看起来简单,但问的人很多,说明文档里这部分对新手不够直观。我直接给出一套完整可复现的操作过程,从环境准备开始,一路到最终验证访问地址。
3.1 环境准备:一套能跑起来的K8s集群
Higress的核心是云原生网关,部署形态有两种:一种是在Kubernetes集群里以Deployment方式运行,另一种是独立部署(Standalone)。生产环境推荐前者,测试环境用Standalone能省不少事。
假设你已经有一套K8s集群(我这里以v1.24+为例),安装Higress用Helm是最省事的路径:
bash复制helm repo add higress.io https://higress.io/helm-charts
helm repo update
helm install higress -n higress-system higress.io/higress --create-namespace
安装完成后,确认一下网关的Pod和Service状态:
bash复制kubectl get pods -n higress-system
kubectl get svc -n higress-system
Higress默认会暴露两个入口Service:一个是HTTP的网关入口,另一个是控制面接口。记录下HTTP入口对应的外部IP或域名,后面配置访问地址要用的就是它。
3.2 部署一个私有大模型服务
我这边用一个vLLM部署的Qwen模型举例,因为这几乎是目前私有化部署最主流的方式。模型服务的部署本身不难:
yaml复制apiVersion: apps/v1
kind: Deployment
metadata:
name: qwen2-7b-instruct
namespace: ai
spec:
replicas: 1
selector:
matchLabels:
app: qwen2-7b-instruct
template:
metadata:
labels:
app: qwen2-7b-instruct
spec:
containers:
- name: vllm
image: vllm/vllm-openai:latest
command: ["python3", "-m", "vllm.entrypoints.openai.api_server"]
args:
- --model
- Qwen/Qwen2-7B-Instruct
- --served-model-name
- qwen2-7b
- --port
- "8000"
ports:
- containerPort: 8000
---
apiVersion: v1
kind: Service
metadata:
name: qwen2-7b-instruct
namespace: ai
spec:
selector:
app: qwen2-7b-instruct
ports:
- port: 8000
targetPort: 8000
这个配置里有一个容易忽略的细节:--served-model-name 参数。vLLM默认暴露的模型名是它从模型的config.json里读到的原始名称,比如 Qwen/Qwen2-7B-Instruct,中间带斜杠,在网关层做路由匹配时很容易出问题。我习惯在部署时就固定一个干净的模型别名,后面网关配置省心很多。
3.3 配置Higress,路由到模型服务
接下来在Higress上创建一条路由,把外部请求转发到刚才那个vLLM Service。
首先要添加一个上游服务(在Higress控制台或者通过YAML):
yaml复制apiVersion: networking.higress.io/v1
kind: McpBridge
metadata:
name: ai-model-bridge
namespace: higress-system
spec:
type: manually
registries:
- name: qwen2-7b
type: dns
domain: qwen2-7b-instruct.ai.svc.cluster.local
port: 8000
这里用的是Higress的McpBridge自定义资源。type: dns 表示直接通过域名解析的方式找到后端服务,domain 填的是模型服务在K8s集群内部的DNS名称,格式是 服务名.命名空间.svc.cluster.local。
然后创建一条HTTP路由,并挂上AI Proxy插件:
yaml复制apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ai-gateway-route
namespace: higress-system
annotations:
higress.io/route-type: "http"
higress.io/destination: "qwen2-7b:8000"
higress.io/upstream-vhost: "qwen2-7b-instruct.ai.svc.cluster.local"
spec:
ingressClassName: higress
rules:
- host: ai-gateway.example.com
http:
paths:
- path: /v1/chat/completions
pathType: Exact
backend:
service:
name: qwen2-7b-instruct
port:
number: 8000
同时通过Higress的插件配置给这条路由开启AI Proxy。AI Proxy插件会自动识别OpenAI兼容的请求格式,并把请求转发到指定的模型服务上。核心配置项就两个:modelMapping 决定外部请求里的模型名映射到哪个上游,apiKeys 是上游模型服务需要的密钥(如果是私有化服务,通常可以留空或填个占位符)。
3.4 访问地址到底是多少?拆给你看
这个问题要拆成两层回答。
第一层:对外的访问入口。 如果你用上面那种Ingress方式暴露,且你的环境里配置了域名解析,那么访问地址就是:
code复制http://ai-gateway.example.com/v1/chat/completions
但实际生产中,很多人没有域名,只有网关的IP。假设Higress网关的对外IP是 203.0.113.10,那么直接访问:
code复制http://203.0.113.10/v1/chat/completions
请求头里带上你通过Higress配置的业务Key:
bash复制curl http://203.0.113.10/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-business-key" \
-d '{
"model": "qwen2-7b",
"messages": [{"role": "user", "content": "你好,介绍一下你自己"}],
"stream": false
}'
其中 model 字段填的是AI Proxy里配置的模型别名,不是vLLM原始暴露的名称。
第二层:为什么是 /v1/chat/completions 这个路径。 因为私有化部署的大模型服务(无论是vLLM还是TGI)基本都实现了OpenAI兼容接口,Higress的AI Proxy也是按这个规范来识别和转发请求的。除非你在Ingress路由里改了路径重写规则,否则这个路径就是标准的。这也是AI网关和传统网关的一个差别:传统网关转发请求不关心路径语义,AI网关则需要理解请求体的结构,才能做Token统计、模型映射这些事。
3.5 验证转发是否生效
跑完上面的curl命令,如果配置正确,你会收到模型返回的响应,同时Higress的日志里会出现一条包含Token消耗记录的访问日志。
想确认AI Proxy是否真的生效,有个小技巧:故意把 model 字段改成不存在的模型别名,如果返回的是Higress插件的报错信息(类似“model not found”),说明请求确实被AI Proxy拦截并解析了。如果这个错误透传到了后端vLLM的报错,那说明请求是直接透传的,AI Proxy插件没有挂上。这个排查思路能帮你快速定位问题出在路由层还是插件层。
4. 从网关看AI时代的技术管理:能力模型的演变
热搜词里有一条特别有意思:“麦肯锡如何在AI时代下做好顾问能力模型的演变”。表面上看,咨询顾问和API网关八竿子打不着,但我在做Higress落地的时候,突然觉得这两件事的内核是相通的。
4.1 传统顾问到AI顾问:从“我知道”到“我连接”
传统咨询行业的顾问能力模型,核心是“知识+分析”。顾问的价值在于:他们见过足够多的行业案例,知道标杆企业是怎么做的,能够凭经验快速给出诊断和方案。这套能力模型建立在信息不对称的基础上——客户不知道行业最佳实践,顾问知道。
AI时代这个基础被瓦解了。大模型知道的信息比任何一个顾问都多,数据分析能力也不输给初级顾问。那顾问的价值剩下什么?剩下的是:理解业务场景、设计落地方案、协调各方资源、推动组织变革。换句话说,从“我知道答案”变成了“我能把对的资源在合适的时间连接到对的位置”。
技术架构的演变也是同一个逻辑。传统微服务架构里,网关的核心能力是“转发”——我知道请求该去哪个服务,把它送过去就行。AI时代,服务的数量没有变多,但服务的复杂度和差异度急剧上升。模型有多种、上下文长度不同、计费方式不同、安全要求不同。这个时候网关的价值不再是“转发”,而是“连接和治理”——它得理解请求的语义,得知道哪个模型适合这个任务,得在多个模型之间做调度和容灾。
Higress在AI时代的走红,本质上就是能力模型从“传统网络转发”向“AI语义治理”迁移的结果。它不再只是流量的搬运工,而是AI服务编排的枢纽。
4.2 AI时代技术管理者的三个新能力
顺着麦肯锡那个话题往下说,AI时代的技术管理者(CTO、架构师、技术总监)其实也在经历类似的演变。我观察下来,有三个能力变得比以往更重要。
能力一:抽象与分层的能力。 AI项目最容易失控的地方在于,所有技术细节都搅在一起。业务方直接跟模型框架打交道、模型服务自己管限流、每个服务各自维护一套Key,到最后整个系统的复杂度互相纠缠,谁都不敢动。合格的技术管理者要做的第一件事,就是把 “业务” 和 “模型” 中间加一层清晰的边界。这个边界可以是网关,也可以是一个BFF层,但必须存在。
能力二:成本精细化运营的能力。 传统技术架构的成本大头是机器和带宽,这些成本相对固定,按资源预估就行。AI项目的成本大头是Token,它是动态的、跟业务行为强相关的。同样的模型服务,不同业务方的调用模式差异极大。技术管理者如果只看Pod的CPU和内存,不看Token消耗分布,月底账单一出来基本都会懵。
能力三:安全边界的重新定义。 传统安全关注的是端口、漏洞、网络隔离。AI时代新增了一个特殊风险:模型本身可以被攻击者通过提示词操纵,而且模型API的滥用检测比传统API更困难。AI请求的正文是自然语言,无法用简单的WAF规则来过滤。这就要求技术管理者理解模型层安全的特点,把安全能力前移到网关层——至少做到调用可审计、异常可追溯、配额可控制。
Higress这类中间件之所以在AI时代显得重要,就是因为它恰好同时承接了这三个能力。它让抽象分层有了落点,让Token成本有了计量出口,让安全审计有了统一入口。
4.3 中间件的战略价值:不性感,但决定上限
做技术的都有个通病:喜欢追逐前端的新东西,忽视中间的连接件。模型是新的、框架是新的、应用形态是新的,但连接这些新东西的那一层却往往被当成“老掉牙的基础设施”。
麦肯锡那个能力模型演变的例子给我的启发是:真正决定一个组织AI落地上限的,往往不是模型选得有多好,而是中间层能不能把模型的威力稳定地输送出去。网关就是这一层的技术载体。它不产生智能,但没有它,智能无法被安全、可控、经济地分发到每一个业务场景里。
我在多个AI项目里观察到的规律是:项目早期大家拼的是模型效果,中期拼的是工程效率,后期拼的就是治理能力。谁能把多模型调度、成本计量、安全审计这些事情做得干净利落,谁的AI系统就能走得更远。
5. 我踩过的几个坑,希望你绕开
5.1 插件没挂上,请求直接透传了
这是我第一次用Higress代理大模型时遇到的最隐蔽的问题。
Ingress路由创建好了,后端服务也通了,curl一测试——响应也正常返回了。但仔细一看,Cloud Token统计没有数据,限流也不生效。排查了半天,发现AI Proxy插件根本没有挂到这条路由上。原因是Higress的插件绑定和Ingress的annotation体系是分开配置的,我光配置了Ingress路由,忘了在Higress控制台里给这条路由绑定插件。
解决办法是:创建完Ingress路由之后,去Higress控制台(或者用 HigressPlugin CRD)显式地给路由绑定AI Proxy插件,并检查插件状态是否为“生效”。这个动作很容易被漏掉,因为路由本身工作正常,从现象上看不出任何异常。
5.2 模型别名的坑:斜杠和点号会搞乱路由
刚开始我把vLLM服务直接用默认配置部署,没设 --served-model-name,结果模型名是 Qwen/Qwen2-7B-Instruct。在AI Proxy里做映射的时候,我发现模型名带斜杠的Key经常匹配不上,而且配置YAML里还要处理转义问题,非常恶心。
后来统一规范,不管部署什么模型,一律指定一个简短的 --served-model-name,比如 qwen2-7b、llama3-8b。从这之后,路由匹配的问题再也没出现过。
这个坑提醒我的是:AI网关虽然能解析语义,但它本质上还是依赖明确的标识来做路由。模型命名规范一定要在项目第一天就定下来,不然后面改起来牵一发动全身。
5.3 限流参数只看QPS,忘了Token维度
传统网关限流看QPS就够了,但AI场景必须看Token维度。两个请求,一个上下文几百Token,一个上万Token,消耗完全不在一个量级。刚开始我只看QPS限流,结果有个业务方用自动化脚本跑长文档分析,请求数不多,但Token消耗直接把月度预算烧掉一大半。
Higress的AI Token Limiter插件支持按Token维度限流,配置时可以设定每分钟/每小时/每天的Token额度。我的建议是:在网关层同时启用QPS限流和Token限流,QPS防突发流量,Token控整体成本,两个维度缺一不可。
5.4 观测指标要单独建看板
Higress自带的控制台有基础的监控面板,但默认视图偏传统网关指标:QPS、延迟、错误码。Token消耗、按模型维度的调用分布、按业务方的成本占比这些AI场景核心指标,需要自己在Prometheus/Grafana里重新组织。
我的做法是:给Higress单独配一套Grafana看板,把 higress_ai_stats_total 这类指标按模型名、调用方维度做聚合,再加一个每日成本预估的Panel。不看板你根本感受不到“某个模型每天消耗了多少Token”这种数据的冲击力。看完之后,你对模型选型和业务方配额调整的决策就有依据了。
5.5 别忘了网关层的安全基础项
聊了很多AI场景的新能力,但传统网关的安全基础项同样不能放松。Higress支持WAF规则、IP黑白名单、Referer防盗链等能力。AI接口暴露在公网上,如果你不做任何访问控制,很快就会有各种扫描器探测你的接口。
我实际遇到过的情况是:网关IP被扫描工具盯上,几分钟内收到了大量探针请求,问各种奇怪的路径。虽然AI Proxy插件挡住了无效请求,但还是会产生不必要的日志和少量计算开销。后来我加了IP白名单和访问频率限制,才让日志清净下来。
6. 一点个人体会
回到标题那个梗。Higress这种角色,平时确实不太起眼,模型平台出效果的时候没人提网关的功劳,但它一旦出问题,整个AI链路都跟着瘫痪。这种“平时隐形、关键时刻扛事”的属性,跟“中登”在家庭里的位置真的很像。
我在多个AI项目里的感受是:模型能力的天花板其实很高,但实际释放出来的能力,很大程度上取决于中间层做得好不好。网关选得好不好、治理规不规范、成本能不能算清楚,这些看起来不性感的事,反而决定了AI系统能否从Demo走到生产。
Higress当然不是唯一的选择,同类产品还有不少,但它们解决的核心问题是同一个:AI时代的流量和模型治理,需要一个更智能的入口。选型的时候不用迷信某一个产品,关键看它跟你的K8s生态是否契合、插件体系是否满足你的场景、社区是否活跃。Higress在这些维度上的表现,至少在我这边的项目里是达标的。
最后分享一个小技巧:如果你打算在团队里推广Higress,不要从技术角度去讲它有多好,直接给业务方看两样东西——按业务维度拆分的Token成本报表,和一条完整的调用审计链路。这两个东西一亮出来,不用你多解释,每个人都会意识到统一网关的价值,这时候推进落地的阻力会小很多。
毕竟在AI时代,让人直观地看到“省了多少钱、出了问题找得到人”,比任何技术先进性论证都管用。
