Is there a way to remove double slash using regex in ambassador emissary ingress?

2/28/2022

I have deployed ambassador edge stack and I am using hosts and mapping resources to route my traffic. I want to implement the mapping in such a way that if there is any double slash in the path, using regex (or any other available way) to remove one slash from it. For example, if client request https://a.test.com//testapi I want it to be https://a.test.com/testapi.

I search through the ambassador documents but I am unable to find anything that can be of help.

Thank You

-- Susanta Gautam
ambassador
api-gateway
kubernetes
kubernetes-ingress

1 Answer

3/1/2022

There is the Module Resource for emissary ingress.

If present, the Module defines system-wide configuration. This module can be applied to any Kubernetes service (the ambassador service itself is a common choice). You may very well not need this Module. To apply the Module to an Ambassador Service, it MUST be named ambassador, otherwise it will be ignored. To create multiple ambassador Modules in the same namespace, they should be put in the annotations of each separate Ambassador Service.

You should add this to the module's yaml file:

spec:
...
  config:
...
    merge_slashes: true

If true, Emissary-ingress will merge adjacent slashes for the purpose of route matching and request filtering. For example, a request for //foo///bar will be matched to a Mapping with prefix /foo/bar.

-- mozello
Source: StackOverflow