大家好,目前正在整合 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
metadata:
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
目前我这个配置没有生效,所以请问下大家要如何设置?
1
foMM 2021-04-19 19:49:05 +08:00
你这不是还没把插件设在置 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" |
2
foMM 2021-04-19 19:49:45 +08:00
话说回复的话怎么粘贴代码?没有 indentation 真是蛋疼
|
3
oldboy627 OP @foMM 其实是加了的,只是漏掉忘记写在 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/(?<url>\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 ``` |