EDAS使用Java Agent技术以无侵入的方式增强托管的Spring Cloud Gateway应用,支持动态路由和插件配置能力。本文介绍如何在EDAS中进行Spring Cloud Gateway的常见两类配置:路由(Route)和插件(GatewayFilter)。
使用限制
支持Spring Cloud Gateway版本范围:2.x、3.x。由于4.x版本依赖Spring Boot 3.0等较高版本的特性,因此暂不支持。
支持应用类型:Spring Cloud Gateway。
注意事项
功能发布于2023-09-27,如果应用部署早于该日期,需重启应用触发拉取最新Java Agent以支持该特性。如果Spring Cloud Gateway应用部署后,应用详情内仍未出现应用网关相关菜单,可能和应用挂载的探针版本有关,请加入钉群(钉群号:23197114)联系技术专家咨询处理。
EDAS在不影响应用原本的逻辑前提下,对Spring Cloud Gateway进行增强,即应用本身的路由、断言、插件、自定义插件等配置与该功能配置不会造成冲突。
创建路由
登录EDAS控制台。
在左侧导航栏,单击 ,在顶部菜单栏选择地域,并在页面上方选择微服务空间。
在应用列表页面,选择一个Spring Cloud Gateway应用,单击应用名称进入应用详情页,然后在左侧导航栏,单击应用网关 > 路由管理。
方式一
在路由管理页面,单击创建,在创建路由面板,完成相关配置,然后单击确认。
配置项
描述
路由ID
自定义路由ID。EDAS会强制添加
r-
前缀,避免与应用原有的路由ID发生冲突。URI
网关上游服务的URI。支持
http://
、https://
、lb://
三种前缀的URI,其中lb://
代表服务发现场景。说明URI配置
lb://svcName
服务发现类型时,要求Spring Cloud Gateway应用内引用相关的服务发现依赖,并且确保svcName与当前网关处于同一微服务空间内。路由优先级
当多个路由存在冲突时,路由优先级数值更小的优先匹配。
请求路径
支持多种匹配模式。
精确匹配:
/red
。占位符匹配 :
/red/{blue}
。模糊匹配 :
/red/**
。
单击+添加参数可添加多条路径。
请求域名
设置匹配HTTP请求头中的Host参数。不填表示匹配所有Host、单击+添加参数添加。
请求方法
设置匹配HTTP请求中的Method参数。不填表示匹配所有参数,支持选择多种HTTP方法。
请求Header
设置匹配HTTP请求中的Header参数。相同匹配规则时,参数越多优先级越高。单击+添加参数添加。
请求Cookie
设置匹配HTTP请求中的Cookie参数,相同匹配规则时,参数越多优先级越高。单击+添加参数添加。
请求Query
设置匹配HTTP请求中的Query参数,相同匹配规则时,参数越多优先级越高。单击+添加参数添加。
路由截取级数
删除指定级数的路径前缀。例如,级数为1时,
/red/blue
请求将会被重写为/blue
,对应生成一个StripPrefix插件。元数据
路由元数据是一个扩展字段。例如,配置
{"response-timeout": 2000,"connect-timeout": 2000}
,控制请求超时时间和连接超时时间,在自定义插件中可以获取元数据配置信息。方式二
在路由管理页面,单击使用YAML创建。
使用YAML创建时,YAML定义的格式为Spring Cloud Gateway标准的定义格式,支持批量导入,文本大小限制为512 KB。您可以选择使用该功能将静态文件中的路由配置迁移至EDAS,迁移完成后,可以删除本地的配置文件,实现路由的动态配置管理。
编辑路由
登录EDAS控制台。
在左侧导航栏,单击 ,在顶部菜单栏选择地域,并在页面上方选择微服务空间。
在应用列表页面,选择一个Spring Cloud Gateway应用,单击应用名称进入应用详情页,然后在左侧导航栏,单击应用网关 > 路由管理。
在路由管理页面,单击路由操作列的编辑,可修改已创建好的Spring Cloud Gateway路由。
配置插件
登录EDAS控制台。
在左侧导航栏,单击 ,在顶部菜单栏选择地域,并在页面上方选择微服务空间。
在应用列表页面,选择一个Spring Cloud Gateway应用,单击应用名称进入应用详情页,然后在左侧导航栏,单击应用网关 > 路由管理。
在路由列表页面,选择一个路由,单击操作列的绑定插件,在插件配置页签,单击添加路由插件。
EDAS支持Spring Cloud Gateway大多数已有的插件。插件功能列表如下表所示:
插件名
描述
AddRequestHeader
添加请求头。
AddRequestParameter
添加请求参数。
AddResponseHeader
添加响应头。
SetRequestHeader
修改请求头。
SetResponseHeader
修改响应头。
SetStatus
修改响应码。
SetPath
修改请求路径。
MapRequestHeader
请求头参数映射。
PrefixPath
为请求路径添加前缀。
StripPrefix
删除请求路径前缀。
RemoveRequestHeader
删除请求头。
RemoveResponseHeader
删除响应头。
RemoveRequestParameter
删除请求参数。
DedupeResponseHeader
删除响应的重复头。
PreserveHostHeader
保留请求的域名属性。
RedirectTo
重定向。
RequestSize
请求大小限制。
RequestHeaderSize
请求头大小限制。
RewritePath
重写请求路径。
RewriteResponseHeader
重写响应头。
全局插件
登录EDAS控制台。
在左侧导航栏,单击 ,在顶部菜单栏选择地域,并在页面上方选择微服务空间。
在应用列表页面,选择一个Spring Cloud Gateway应用,单击应用名称进入应用详情页,然后在左侧导航栏,单击应用网关 > 全局插件。
在全局插件详情页面,单击添加全局插件或使用YAML创建添加。
全局插件和路由插件的交互一致,当全局插件配置后,会对当前网关实例全局开启。全局插件支持状态管理,不希望全局插件产生作用时,可以对其禁用。
结果验证
配置完成后,可通过请求应用的路由路径验证该功能。如果请求可以通过网关正常转发,且插件正常,表明路由和插件配置成功。