技术解析

kong 网关 request-transform 插件正则配置
0
2021-06-03 21:12:48
idczone

大家好,目前正在整合 kong 网关,使用 request-transform 插件匹配和修改 route 路径。

前端发送请求为 http://www.xxx.com/code/api/xxx/xxx/, 当经过 kong 转发到后端 service 的时候,路径应该变为 /code/api/meltSound/ 也就是说

route path: http://www.xxx.com/code/api/xxx/xxx

--- >

server path: http://www.xxx.com/code/api/meltSound/xxx/xxx

ingress 中的 route 配置为:


apiVersion: extensions/v1beta1
kind: Ingress
me抗投诉服务器tadata:
  annotations:
    konghq.com/strip-path: "true"
  name: melt-api
  namespace: app
spec:
  ingressClassName: kong
  rules:
  - host:  
    http:
      paths:
      - path: /code/api/
        pathType: Prefix
        backend:
          serviceName: network-gateway
          servicePort: 9527
          

在 request-transform 插件中设置为:


apiVersion: configuration.konghq.com/v1
kind: KongPlugin
metadata:
 name: add-melt
config: 
 replace:
   uri: '/code/api/meltSound'

plugin: request-transformer

目前我这个配置没有生效,所以请问下大家要如何设置?


你这不是还没把插件设在置 ingress 上,同时也没有使用 kong ingress controller 在你的 ingress 上,试试下面这个
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: melt-api
annotations:
kubernetes.io/ingress.class: "kong"
konghq.com/plugins: add-melt
konghq.com/strip-path: "true"

话说回复的话怎么粘贴代码?没有 indentation 真是蛋疼

其实是加了的,只是漏掉忘记写在 V2EX 上了。
现在问题解决了,解决方案是使用 request transform 插件配合正则表达式来匹配。
完整的配置文件是这样子
ingress 中的 route 配置为:
```yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
konghq.com/strip-path: "true"
konghq.com/plugins: "add-melt"
name: melt-api
namespace: app
spec:
ingressClassName: kong
rules:
- host:
http:
paths:
- path: /code/api/(?\S+)$
pathType: Prefix
backend:
serviceName: network-gateway
servicePort: 9527
```
在 request-transform 插件中设置为:
```yaml
apiVersion: configuration.konghq.com/v1
kind: KongPlugin
metadata:
name: add-melt
config:
replace:
uri: '/code/api/meltSound/$(uri_captures.url)'
plugin: request-transformer
```

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服