
# AI推理网关插件
随着大规模语言模型（LLM）及人工智能（AI）推理服务的迅猛发展，云原生AI团队面临着愈加复杂的推理流量治理难题。在AI推理应用场景中，除了传统的基于HTTP路径和协议的流量路由外，还需根据"模型名称"、"推理优先级"以及"模型版本"等AI业务属性，灵活地进行流量分发与灰度发布，以满足日益多样化的业务需求。
为此，CCE Standard/Turbo集群提供AI推理网关插件（[Gateway API Inference Extension](https://github.com/kubernetes-sigs/gateway-api-inference-extension)），以简化前端与后端服务的交互，提高AI服务的性能、可靠性和安全性。该插件是Kubernetes社区基于[Gateway API](https://gateway-api.sigs.k8s.io/)推出的推理流量治理解决方案，其具体优势如下：
- **模型感知路由**：支持根据模型名、模型版本、LoRA适配等业务属性进行流量分发，而不仅限于传统的HTTP路径匹配。
- **推理优先级调度**：支持为不同模型或业务场景设定Criticality，实现更灵活的任务调度和资源利用。
- **模型灰度发布**：支持基于模型名进行流量拆分，实现新模型版本的平滑上线。
- **智能负载均衡**：通过采集模型服务端的实时指标，实现基于负载、健康度的"端点选择"，从而优化推理延迟与资源利用率。
- **标准开放、可扩展**：完全遵循Kubernetes Gateway API生态，支持自定义推理路由扩展，便于和Istio等主流网关集成。
AI推理网关插件适用于需要灵活调度、稳定推理及多环境协同的AI生产化场景，具体如下：
- 在大规模语言模型（LLM）在线推理场景中，AI推理网关插件能够通过"模型名"、"版本"和"优先级"实现智能流量治理与精确调度。
- 在支持多模型、多版本共存的AI推理平台中，AI推理网关插件能够提供灰度发布和灵活的流量分配，确保资源的高效利用与推理性能的优化。
- 在云原生AI平台中，AI推理网关插件能够无缝集成主流推理引擎（如[vLLM](https://github.com/vllm-project/vllm)、Triton），从而实现平台的高度可扩展性与灵活部署。
#### 前提条件
- 已安装v1.30及以上版本的CCE Standard/Turbo集群。
- 请根据业务类型创建对应类型的节点和插件，且节点资源充足。
  - NPU业务：已创建NPU节点，且已安装[CCE AI套件（Ascend NPU）](https://support.huaweicloud.com/usermanual-cce/cce_10_0239.html)插件。
  
  - GPU业务：已创建GPU节点，且已安装[CCE AI套件（NVIDIA GPU）](https://support.huaweicloud.com/usermanual-cce/cce_10_0141.html)插件。
   
- 已安装Istio（dev版本：1.26-alpha.80c74f7f43482c226f4f4b10b4dda6261b67a71f），并启用Gateway API相关能力，具体操作请参见[Istio / Getting Started](https://istio.io/latest/docs/setup/getting-started/#download)和[Istio / Kubernetes Gateway API](https://istio.io/latest/docs/tasks/traffic-management/ingress/gateway-api/)。
  - 使用Istio作为基础路由能力，通过安装AI推理网关插件，在流量入口层实现AI场景下基于模型名等业务维度的智能流量分发和自定义路由策略，从而确保外部请求能够根据业务需求被正确转发到相应的AI模型服务实例。
  
  - 启用Gateway API相关能力，用于定义外部流量进入Kubernetes集群的入口，指定监听的端口、协议和绑定的网关地址，作为所有HTTP流量（如/v1/completions等API调用）进入AI推理服务的统一入口。
   
- （可选）当用户业务有需求（例如业务流量较大时），建议提前创建LoadBalancer类型的Service，作为生产流量入口，具体操作请参见[负载均衡（LoadBalancer）](https://support.huaweicloud.com/usermanual-cce/cce_10_0014.html)。
 
#### 注意事项
- 该插件安装后不会影响现有Service、Ingress等Kubernetes原生流量入口资源。
- 该插件属于实验性插件，功能随社区快速演进，升级或变更需关注版本兼容性。
- 该插件当前正处于上线阶段，**已发布区域请以控制台实际为准**。
- **该插件处于公测阶段** ，您可体验最新插件特性，但**需要注意该版本的稳定性未得到完全的验证，不适用于CCE服务SLA**。
 
#### 安装插件
安装插件前，请确保已安装Istio（dev版本：1.26-alpha.80c74f7f43482c226f4f4b10b4dda6261b67a71f），并启用Gateway API相关能力，否则插件可能安装失败。
1. 登录[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)，单击集群名称进入集群。
2. 在左侧导航栏中选择"插件中心"，在右侧找到**AI推理网关** **插件**，单击"安装"。
3. 在"插件安装"页面右下角单击"安装"。此时，插件将自动部署Inference Extension相关CRD（不含运行时容器）。当"插件中心 \> AI推理网关插件"右上角变为"已安装"时，则说明安装成功。 
   安装完成后，即可通过kubectl方式部署自定义HTTPRoute、InferenceModel、InferencePool等AI流量治理资源。
   
   
 
#### 卸载插件
1. 登录[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)，单击集群名称进入集群。
2. 在左侧导航栏中选择"插件中心"，在右侧找到**AI推理网关** **插件**，单击"卸载"。
3. 在"卸载插件"的弹窗中输入"DELETE"，单击"确定"。当"插件中心 \> AI推理网关插件"右上角变为"未安装"时，则说明卸载成功。 
   ![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
   卸载该插件前，可以先清理相关自定义资源（如InferenceModel、InferencePool、HTTPRoute等）。
   
   
 
#### 使用示例
根据Kubernetes Special Interest Groups (SIGs）提供的vLLM GPU部署用例，向您演示AI推理网关插件的典型用法。由于集群需要下载外部YAML文件，所以您需要为集群中任一节点绑定EIP。其中，EIP涉及一定费用，具体请参见[EIP价格计算器](https://www.huaweicloud.com/pricing/calculator.html#/eip)。
1. 在已有的ECS中安装kubectl，并使用kubectl连接集群，具体操作请参见[通过kubectl连接集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0107.html)。
2. 依次执行以下命令，通过[gpu-deployment.yaml](https://github.com/kubernetes-sigs/gateway-api-inference-extension/raw/release-0.3/config/manifests/vllm/gpu-deployment.yaml)部署vLLM（Vectorized Large Language Model）服务，以提供运行AI推理服务实例，为AI Gateway后续的流量分发、模型推理和负载均衡提供真实的后端服务目标。
   
   ```
   kubectl create secret generic hf-token --from-literal=token=<your-hf-token>
   kubectl apply -f https://github.com/kubernetes-sigs/gateway-api-inference-extension/raw/release-0.3/config/manifests/vllm/gpu-deployment.yaml
   ```
   
   
3. 依次执行以下命令，通过[inferencemodel.yaml](https://github.com/kubernetes-sigs/gateway-api-inference-extension/blob/release-0.3/config/manifests/inferencemodel.yaml)和[inferencepool-resources.yaml](https://github.com/kubernetes-sigs/gateway-api-inference-extension/blob/release-0.3/config/manifests/inferencepool-resources.yaml)部署InferenceModel和InferencePool。创建InferenceModel和InferencePool等资源，用于定义模型服务的业务属性、版本、优先级及其后端服务池，实现AI Gateway对多个模型/实例的统一编排和流量治理。
   
   ```
   kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api-inference-extension/refs/heads/release-0.3/config/manifests/inferencemodel.yaml
   kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api-inference-extension/refs/heads/release-0.3/config/manifests/inferencepool-resources.yaml
   ```
   
   
4. 依次执行以下命令，通过[destination-rule.yaml](https://github.com/kubernetes-sigs/gateway-api-inference-extension/raw/release-0.3/config/manifests/gateway/istio/destination-rule.yaml)和[httproute.yaml](https://github.com/kubernetes-sigs/gateway-api-inference-extension/raw/release-0.3/config/manifests/gateway/istio/httproute.yaml)部署DestinationRule及自定义HTTPRoute。
   
   ```
   # 配置DestinationRule
   kubectl apply -f https://github.com/kubernetes-sigs/gateway-api-inference-extension/raw/release-0.3/config/manifests/gateway/istio/destination-rule.yaml
   # 部署自定义HTTPRoute
   kubectl apply -f https://github.com/kubernetes-sigs/gateway-api-inference-extension/raw/release-0.3/config/manifests/gateway/istio/httproute.yaml
   ```
   上述命令中，YAML文件的具体作用如下：
   - **destination-rule.yaml**：用于定义Istio在服务间流量转发时的连接策略和负载均衡行为。在本场景下，主要用于临时关闭TLS校验（因为推理扩展目前用自签名证书），确保流量能够顺利地在网关和后端推理服务之间转发，不被TLS拦截。
   
   - **httproute.yaml**：部署自定义HTTPRoute资源，定义流量在Gateway入口后的详细转发和路由规则。支持基于"模型名、API路径、请求头"等AI业务属性进行智能路由，实现"按需将请求分发到特定模型服务/版本/池"的AI场景流量治理。
   
   
   
   
5. 执行以下命令，验证HTTPRoute状态。当回显结果显示"Accepted=True"和"ResolvedRefs=True"时，表示自定义HTTPRoute部署成功，流量治理已生效。 
   ```
   kubectl get httproute llm-route -o yaml
   ```
   
   
6. 执行以下命令，获取Gateway IP并发起推理请求，以使用推理服务。 
   ```
   IP=$(kubectl get gateway/inference-gateway -o jsonpath='{.status.addresses[0].value}')
   PORT=80
   curl -i ${IP}:${PORT}/v1/completions -H 'Content-Type: application/json' -d '{
     "model": "food-review",
     "prompt": "Write as if you were a critic: San Francisco",
     "max_tokens": 100,
     "temperature": 0
   }'
   ```
   
   
 
#### 版本记录
表1AI推理网关插件版本记录 
| 插件版本  | 支持的集群版本                                                                                                                                | 更新特性                             |
|:---|:---|:---|
| 0.3.0 | v1.30 v1.31 v1.32 | CCE Standard/Turbo集群支持使用AI推理网关插件 |
   
