2017-08-24 68 views
2

在Google Container引擎上運行集羣。GKE Ingress不尊重重寫規則

預計它遵守重寫規則。運行調試echo server它顯示它不尊重http-rewrite規則,如kubernetes ingress docs中記錄的那樣。

在minikube本地工作就好了。儘管在匹配後重寫是剝離的,但realpath參數仍然附有調試附件。預計/foo/bar//debug/foo/bar

URL +響應

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

+0

在此GCE入口控制器上不支持此功能時間 https://github.com/kubernetes/ingress/issues/1120#issuecomment-322002168 – stanzheng

回答

0

你可以在這個博客中解釋使用Nginx上進入控制器:

http://rahmonov.me/posts/nginx-ingress-controller/

一旦你遵循這些步驟,你需要添加以下對註冊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