2017-08-24 15 views
2

Google Containerエンジンでクラスタを実行しています。GKE Ingressが書き換えルールを遵守していません

書き換えルールを尊重することを期待してください。デバッグecho serverを実行すると、kubernetes ingress docsにここに記載されているように、http-rewriteルールを遵守していないことが示されます。

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 
関連する問題