Traefik Ingress rewrite-target does nothing
I have a backend service which responds to /
but I want it to run on the ingress route myhost.com/overview
. No matter which configuration I try, traefik does not strip the path /overview
away - I can see the backend getting /overview
.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: registry-ingress
namespace: ingress
annotations:
kubernetes.io/ingress.class: traefik
traefik.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: myhost.com
http:
paths:
- path: /overview
pathType: Prefix
backend:
service:
name: overview
port:
number: 8079
I have tried several variations of this:
traefik.ingress.kubernetes.io/rewrite-target: /$1
...
- path: /overview(.*)
But these lead to 404 on the ingress /overview
requests do not reach the backend.
In summary I want https://myhost.com/overview/
to hit the backend at /
.
Traefik does not support the traefik.ingress.kubernetes.io/rewrite-target
annotation. See the list of available annotations here: https://doc.traefik.io/traefik/routing/providers/kubernetes-ingress/#annotations
But your goal can be achieved using the StipPrefix middleware.
---
# Middleware
# Strip prefix /overview
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
name: mw-admin
namespace: ingress
spec:
stripPrefix:
forceSlash: false
prefixes:
- /overview
---
# Ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: registry-ingress
namespace: ingress
annotations:
kubernetes.io/ingress.class: traefik
traefik.ingress.kubernetes.io/router.middlewares: ingress-mw-admin@kubernetescrd
spec:
tls:
- hosts:
- myhost.com
secretName: tls-secret
rules:
- host: myhost.com
http:
paths:
- path: /overview
pathType: Prefix
backend:
service:
name: overview
port:
number: 8079