私は Istio をテストする旅に出ており、現在、トラフィックをルーティングする「カナリア」機能をテストしようとしています。
私のテストでは、5 つのマイクロサービス (serviceA、serviceB、serviceC、serviceD、serviceE) で構成される小さなサービスメッシュを作成しました。それぞれが他の人を呼び出すことができます。A、E、C、B、B、D のようなパスを渡すだけで、リクエストはこのパスに従います。クラスターの外部からサービス メッシュを呼び出すために、serviceA ポッドを指すイングレス ルールを持つNginx イングレス コントローラーがあります。
これはうまくいっています。
私が直面している問題は、次のようなカスタム ヘッダー マッチングを使用したトラフィック スイッチングに関するものです。
kind: VirtualService
metadata:
name: ServiceA
namespace: demo
labels:
app: demo
spec:
hosts:
- service-a
http:
- route:
- destination:
host: service-a
subset: v1
- match:
- headers:
x-internal-request:
exact: true
route:
- destination:
host: service-a
subset: v2
ここでは、カスタム ヘッダーx-internal-requestを true に設定したときに、トラフィックを ServiceA の v2 バージョンにルーティングしようとします。
質問:
この機能を使用するために、サービスは x-internal-header を認識している必要がありますか? また、リクエスト内の次のサービスにそれを渡す必要がありますか? それとも、Istio が代わりに仕事をしてくれるので、彼らはそれに対処する必要はありませんか?
この機能を使用するには、Nginx Ingress Controller の代わりに Istio Ingress Controller (Istio Gateway を使用) を使用する必要がありますか?
現在、Nginx Ingress Controller を使用してサービスの一部を公開しています。Nginx を選択したのは、多くの作業を節約できる「外部認証」などの機能があり、代わりに Istio Ingress コントローラーを使用する必要がある場合、Nginx と同じ機能を提供するかどうかわかりません。
見えない中道があるのかもしれない
ご協力ありがとうございました