minikube で 2 つのサービスを実行していFooますBar。サービスにアクセスすると、サービスにデータを取得するFooように要求します。サービスには と の 2 つのバージョンがあります。すべてのリクエストを次の場所にルーティングするようにデフォルト設定をセットアップしました。BarBar"1.0""2.0"RouteRuleistio"1.0"
apiVersion: config.istio.io/v1alpha2
kind: RouteRule
metadata:
name: bar-default
spec:
destination:
name: bar-server
precedence: 1
route:
- labels:
version: "1.0"
正常に動作し、すべてのリクエストが に転送されていることがわかります"1.0"。RouteRuleここで、ヘッダーに基づいて別のヘッダーを追加したいので、Chromeブラウザーからのすべてのリクエストは次の場所に転送され"2.0"ます。
apiVersion: config.istio.io/v1alpha2
kind: RouteRule
metadata:
name: bar-v2
spec:
destination:
name: bar-server
precedence: 2
match:
request:
headers:
user-agent:
regex: ".*Chrome.*"
route:
- labels:
version: "2.0"
そして、それは機能しません。すべての要求は引き続き にルーティングされ"1.0"ます。RouteRuleが作成されていることがわかります。
> istioctl get routerules
NAME KIND NAMESPACE
bar-default RouteRule.v1alpha2.config.istio.io default
bar-v2 RouteRule.v1alpha2.config.istio.io default
UserAgentブラウザの開発者ツールで、ヘッダーが存在することがわかります。に転送されない理由を確認するためにリクエストをデバッグするにはどうすればよい"2.0"ですか?