使用Gateway with Inference Extension路由外部MaaS服务

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 本文介绍如何通过Gateway with Inference Extension对接百炼服务,实现请求路由时自动添加API Key并重写路径,包含操作步骤及验证方法。

本文以对接百炼为例,演示如何通过Gateway with Inference Extension路由至外部MaaS服务,在路由到指定MaaS服务时、自动添加请求API Key并修改请求路径。

前提条件

操作步骤

步骤一:在集群中创建包含API Key的Secret

执行以下指令,在集群中部署包含百炼API Key的Secret,用于网关路由请求时添加API Key验证信息。

TOKEN=<百炼 API Key>
kubectl create secret generic jwt-credential --from-literal=credential=" Bearer $TOKEN"

步骤二:创建用于自动添加请求API Key的HTTPRouteFilter资源

HTTPRouteFilter用于指定向请求中自动注入请求验证凭据的过程。默认情况下,凭据将被注入到 Authorization 头部中。您也可以通过在 HTTPRouteFilter 的 credentialInjection 部分指定头部字段,将凭据注入到其他头部。

如果请求中已经存在 Authorization 头部或指定的头部,则除非您将 overwrite 设置为 true,否则凭据不会被注入。

执行以下指令,创建HTTPRouteFilter资源。

kubectl apply -f- <<EOF
apiVersion: gateway.envoyproxy.io/v1alpha1
kind: HTTPRouteFilter
metadata:
  name: credential-injection
spec:
  credentialInjection:
    overwrite: true
    credential:
      valueRef:
        name: bailian-credential
EOF

步骤三:创建外部MaaS服务后端声明

Backend资源向网关注册了外部后端服务dashscope.aliyuncs.com,BackendTLSPolicy 指定网关需要以https和百炼服务进行通信。

执行以下指令,创建Backend和BackendTLSPolicy资源。

kubectl apply -f- <<EOF
apiVersion: gateway.envoyproxy.io/v1alpha1
kind: Backend
metadata:
  name: bailian
spec:
  endpoints:
    - fqdn:
        hostname: dashscope.aliyuncs.com
        port: 443
---
apiVersion: gateway.networking.k8s.io/v1alpha3
kind: BackendTLSPolicy
metadata:
  name: enable-backend-tls
spec:
  targetRefs:
  - group: gateway.envoyproxy.io
    kind: Backend
    name: bailian
  validation:
    hostname: dashscope.aliyuncs.com
    wellKnownCACertificates: System
EOF

步骤四:创建网关和网关路由规则

Gateway资源声明了在集群中创建一个带有8080端口监听的网关,HTTPRoute指定了网关上的路由规则:在转发到百炼服务dashscope.aliyuncs.com时,将请求中以/v1开头的路径的请求重写为/compatible-mode/v1开头的请求,以实现与百炼API的兼容。

执行以下指令,创建Gateway和HTTPRoute资源。

apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: bailian-gateway
spec:
  gatewayClassName: ack-gateway
  listeners:
  - name: http-bailian
    protocol: HTTP
    port: 8080
---
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: bailian-route
spec:
  parentRefs:
    - name: bailian-gateway
  rules:
    - backendRefs:
        - group: gateway.envoyproxy.io
          kind: Backend
          name: bailian
      filters:
        - type: URLRewrite
          urlRewrite:
            hostname: dashscope.aliyuncs.com
            path:
              type: ReplacePrefixMatch
              replacePrefixMatch: /compatible-mode/v1
        - type: ExtensionRef
          extensionRef:
            group: gateway.envoyproxy.io
            kind: HTTPRouteFilter
            name: credential-injection
      matches:
        - path:
            type: PathPrefix
            value: /v1

步骤五:验证网关路由

  1. 获取网关公网IP
export GATEWAY_HOST=$(kubectl get gateway/qwen-inference-gateway -o jsonpath='{.status.addresses[0].value}')
  1. 验证网关在8080端口正常将请求转发到百炼服务,并自动添加API Key。
curl http://$GATEWAY_HOST:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen3-32b",
    "messages": [
      {"role": "user", "content": "你好,这是一个测试"}
    ],
    "enable_thinking": false
  }' -v
相关文章
|
人工智能 安全
使用Gateway with Inference Extension对接内容安全实现生成式AI内容审查
通过插入External Processing插件,Gateway with Inference Extension可对接阿里云内容安全,实现生成式AI输出的内容审查,确保AI应用合法合规。需先搭建环境并开通文本审核服务,再部署插件及配置策略,最后验证审查效果。
|
6月前
|
存储 负载均衡 测试技术
ACK Gateway with Inference Extension:优化多机分布式大模型推理服务实践
本文介绍了如何利用阿里云容器服务ACK推出的ACK Gateway with Inference Extension组件,在Kubernetes环境中为多机分布式部署的LLM推理服务提供智能路由和负载均衡能力。文章以部署和优化QwQ-32B模型为例,详细展示了从环境准备到性能测试的完整实践过程。
|
7月前
|
存储 人工智能 Kubernetes
ACK Gateway with AI Extension:面向Kubernetes大模型推理的智能路由实践
本文介绍了如何利用阿里云容器服务ACK推出的ACK Gateway with AI Extension组件,在Kubernetes环境中为大语言模型(LLM)推理服务提供智能路由和负载均衡能力。文章以部署和优化QwQ-32B模型为例,详细展示了从环境准备到性能测试的完整实践过程。
|
7月前
|
存储 人工智能 物联网
ACK Gateway with AI Extension:大模型推理的模型灰度实践
本文介绍了如何使用 ACK Gateway with AI Extension 组件在云原生环境中实现大语言模型(LLM)推理服务的灰度发布和流量分发。该组件专为 LLM 推理场景设计,支持四层/七层流量路由,并提供基于模型服务器负载感知的智能负载均衡能力。通过自定义资源(CRD),如 InferencePool 和 InferenceModel,可以灵活配置推理服务的流量策略,包括模型灰度发布和流量镜像。
|
3月前
|
前端开发 Java API
Spring Cloud Gateway Server Web MVC报错“Unsupported transfer encoding: chunked”解决
本文解析了Spring Cloud Gateway中出现“Unsupported transfer encoding: chunked”错误的原因,指出该问题源于Feign依赖的HTTP客户端与服务端的`chunked`传输编码不兼容,并提供了具体的解决方案。通过规范Feign客户端接口的返回类型,可有效避免该异常,提升系统兼容性与稳定性。
205 0
|
4月前
|
缓存 监控 Java
说一说 SpringCloud Gateway 堆外内存溢出排查
我是小假 期待与你的下一次相遇 ~
531 5
|
4月前
|
Java API Nacos
|
10月前
|
JSON Java API
利用Spring Cloud Gateway Predicate优化微服务路由策略
Spring Cloud Gateway 的路由配置中,`predicates`​(断言)用于定义哪些请求应该匹配特定的路由规则。 断言是Gateway在进行路由时,根据具体的请求信息如请求路径、请求方法、请求参数等进行匹配的规则。当一个请求的信息符合断言设置的条件时,Gateway就会将该请求路由到对应的服务上。
761 69
利用Spring Cloud Gateway Predicate优化微服务路由策略
|
8月前
|
前端开发 Java Nacos
🛡️Spring Boot 3 整合 Spring Cloud Gateway 工程实践
本文介绍了如何使用Spring Cloud Alibaba 2023.0.0.0技术栈构建微服务网关,以应对微服务架构中流量治理与安全管控的复杂性。通过一个包含鉴权服务、文件服务和主服务的项目,详细讲解了网关的整合与功能开发。首先,通过统一路由配置,将所有请求集中到网关进行管理;其次,实现了限流防刷功能,防止恶意刷接口;最后,添加了登录鉴权机制,确保用户身份验证。整个过程结合Nacos注册中心,确保服务注册与配置管理的高效性。通过这些实践,帮助开发者更好地理解和应用微服务网关。
1275 0
🛡️Spring Boot 3 整合 Spring Cloud Gateway 工程实践
|
10月前
|
JavaScript Java Kotlin
深入 Spring Cloud Gateway 过滤器
Spring Cloud Gateway 是新一代微服务网关框架,支持多种过滤器实现。本文详解了 `GlobalFilter`、`GatewayFilter` 和 `AbstractGatewayFilterFactory` 三种过滤器的实现方式及其应用场景,帮助开发者高效利用这些工具进行网关开发。
1302 1