V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
oldboy627
V2EX  ›  程序员

kong 网关 request-transform 插件正则配置

  •  
  •   oldboy627 · 2021-04-19 17:36:15 +08:00 · 1698 次点击
    这是一个创建于 1312 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大家好,目前正在整合 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
    
    

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

    3 条回复    2021-04-19 20:01:54 +08:00
    foMM
        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"
    foMM
        2
    foMM  
       2021-04-19 19:49:45 +08:00
    话说回复的话怎么粘贴代码?没有 indentation 真是蛋疼
    oldboy627
        3
    oldboy627  
    OP
       2021-04-19 20:01:54 +08:00
    @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

    ```
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3086 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 13:41 · PVG 21:41 · LAX 05:41 · JFK 08:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.