8

私は 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 と同じ機能を提供するかどうかわかりません。

見えない中道があるのか​​もしれない

ご協力ありがとうございました

4

1 に答える 1