Kubernetes ingress not working on redirect on some path like "/myapp", but only working for "/"

5k Views Asked by At

I have a container running on url like http://localhost:8000/ps/app/ui/?pid=201. The container is deployed on kubernetes and exposed to a service as "ps-app-ui:8000" I want to create an ingress which can be accessible from outside. Ingress template is like:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ps-ingress
spec:
  rules:
  - http:
      paths:
      - path: /myapp/
        backend:
          serviceName: ps-app-ui
          servicePort: 8000

The problem is its not working with this ingress. I also tried adding "ingress.kubernetes.io/rewrite-target: /" but had no success. Can anyone help me to get my application accessible via "http://INGRESS-IP/myapp/ps/app/ui/?pid=201"

Will be really grateful.

3

There are 3 best solutions below

0
On

I'm thinking

- path: /myapp/

matches your app at http://myapp/myapp/

So if I have a definition:

  - host: app.example.com
    http:
      paths:
      - path: /myapp

This would be http://app.example.com/myapp

3
On

if you want to use http://myapp/ps/app/ui/?pid=201 you need to:

  • make sure that your operating system translates myapp to a IP address where your ingress controller is listening
  • add the host myapp to the ingress
  • you can leave the path empty (assuming that your application is handling the complete /ps/app/ui/?pid=201 path)

This results in

rules:
  - host: myapp
    http:
      paths:
      - backend:
          serviceName: ps-app-ui
          servicePort: 8000

This ingress will forward all traffic to the host myapp to your service

0
On

Ingress version 0.22.0 or higher has changed the way how rewrite-target works. You'll need to regex-match the path and add it to the rewrite-target.

nginx.ingress.kubernetes.io/rewrite-target: /$2
...
...
  rules:
  - host: rewrite.bar.com
    http:
      paths:
      - backend:
          serviceName: http-svc
          servicePort: 80
        path: /something(/|$)(.*)

Refer to changelog here. How to article here