Running a cluster on Google Container engine.
Expect it to respect rewrite rule. Running the debug echo server it shows it's not respecting the http-rewrite rule as documented here in kubernetes ingress docs.
Works locally on minikube just fine. The realpath
parameter still has debug attached although rewrite is on to strip after match. Expect /foo/bar/
vs /debug/foo/bar
.
Attached
URL + response
http://homes.stanzheng.com/debug/foo/bar
CLIENT VALUES: client_address=10.12.2.1 command=GET real path=/debug/foo/bar query=nil request_version=1.1 request_uri=http://homes.stanzheng.com:8080/debug/foo/bar SERVER VALUES: server_version=nginx: 1.10.0 - lua: 10001 HEADERS RECEIVED: accept=text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 accept-encoding=gzip, deflate accept-language=en-US,en;q=0.8 connection=Keep-Alive cookie=__cfduid=dfd6a6d8c2a6b361a3d72e3fc493295441494876880; _ga=GA1.2.5098880.1494876881 host=homes.stanzheng.com upgrade-insecure-requests=1 user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36 via=1.1 google x-cloud-trace-context=1586885dcac2d537189444861a8a462c/1232314719683944914 x-forwarded-for=204.154.44.39, 35.190.78.5 x-forwarded-proto=http BODY: -no body in request-
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: rewrite
annotations:
ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: minikube.homes
http:
paths:
- path: /debug/*
backend:
serviceName: echoserver
servicePort: 8080
You could use an Nginx ingress controller as explained in this blog:
http://rahmonov.me/posts/nginx-ingress-controller/
Once you follow those steps, you need to add the following annotation to your ingress yaml:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: rewrite
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: minikube.homes
http:
paths:
- path: /debug/*
backend:
serviceName: echoserver
servicePort: 8080
rewrite-target
is not supported by Google Container Engine Ingress. See this page for a comparison of features:
https://github.com/kubernetes/ingress/blob/master/docs/annotations.md