微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Ingress k8s 对象中使用 Kong 的捕获组来重新编写逻辑?

如何解决如何在 Ingress k8s 对象中使用 Kong 的捕获组来重新编写逻辑?

我想在 Ingress k8s 对象中使用 Kong 的捕获组来执行 uri 重写。 我想实现以下逻辑: https://kong_host:30000/service/audits/health -> (重写) https://kong_host:30000/service/audit/v1/health

入口资源:

apiVersion: extensions/v1beta1
kind: Ingress
Metadata:
  name: audits
  annotations:
    konghq.com/plugins: audits-rewrite
spec:
  rules:
  - http:
      paths:
      - path: /service/audits/(?<path>\\\S+)
        backend:
          serviceName: audits
          servicePort: 8080

插件

apiVersion: configuration.konghq.com/v1
kind: KongPlugin
Metadata:
  name: audits-rewrite
config: 
  replace:
    uri: /service/audit/v1/$(uri_captures["path"])
plugin: request-transformer

谢谢。

解决方法

如文档中所述,您无法使用 v1beat1 ingress API 版本来捕获路径中的组。

https://docs.konghq.com/hub/kong-inc/request-transformer/#examples

您需要将 k8s 集群升级到 1.19 或更高版本才能使用此功能。

我也遇到了类似的问题,并通过以下配置解决了它:

入口资源:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: audits
  annotations:
    konghq.com/plugins: audits-rewrite
spec:
  rules:
  - http:
      paths:
      - path: /service/audits/(.*)
        backend:
          serviceName: audits
          servicePort: 8080

孔插件

apiVersion: configuration.konghq.com/v1
kind: KongPlugin
metadata:
  name: audits-rewrite
config: 
  replace:
    uri: /service/audit/v1/$(uri_captures[1])
plugin: request-transformer

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。