通常、入力書き換えターゲットは次のように機能します。
nginx.ingress.kubernetes.io/rewrite-target: /
これにより、サービス名のターゲットがルートディレクトリにあるように書き換えられます。だから私がこれを持っているなら:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: demo-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
tls:
rules:
http:
paths:
- path: /
backend:
serviceName: front-main
servicePort: 80
- path: /api
backend:
serviceName: back-main
servicePort: 80
私のサービスは、/
にあるのと同じようにデータを受信します。ただし、サービスfront-main
にルート/
を送信し、サーバーback-main
に/someotherpath/
を送信したいと思います。これどうやってするの?
次のようなものはありますか?
nginx.ingress.kubernetes.io/rewrite-target: "front-main: / ; back-main: /someotherpath"
ドキュメントに答えが見つからないようです。
残念ながら、Nginxの無料バージョンに基づくIngressにはその機能がありません。
ただし、 Nginx PlusベースのIngress を使用できる場合は、アノテーションを使用して実行できます。
これが 例 公式リポジトリからです:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: cafe-ingress
annotations:
nginx.org/rewrites: "serviceName=tea-svc rewrite=/;serviceName=coffee-svc rewrite=/beans/"
spec:
rules:
- Host: cafe.example.com
http:
paths:
- path: /tea/
backend:
serviceName: tea-svc
servicePort: 80
- path: /coffee/
backend:
serviceName: coffee-svc
servicePort: 80
以下は、tea-svc
へのリクエストのURIがどのように書き換えられるかの例です(/ teaリクエストは/ tea /にリダイレクトされることに注意してください)。
/tea/ -> /
/tea/abc -> /abc
以下は、coffee-svc
へのリクエストのURIがどのように書き換えられるかの例です(/ coffeeリクエストは/ coffee /にリダイレクトされることに注意してください)。
/coffee/ -> /beans/
/coffee/abc -> /beans/abc
別の解決策は、2つの入力yamlファイルを作成することです
それぞれが異なる注釈を使用しています。できます!