Virtual Service

トラフィックルーティングに影響を与える構成。トラフィックルーティングのコンテキストで定義するのに役立ついくつかの用語を以下に示します。

サービス サービスレジストリ内で一意の名前にバインドされたアプリケーション動作の単位。サービスは、ポッド、コンテナ、VMなどで実行されているワークロードインスタンスによって実装された複数のネットワークエンドポイントで構成されます。

サービスバージョン(別名サブセット) - 継続的デプロイメントシナリオでは、特定のサービスに対して、異なるバリアントのアプリケーションバイナリを実行するインスタンスの異なるサブセットが存在する可能性があります。これらのバリアントは必ずしも異なるAPIバージョンではありません。それらは、異なる環境(本番、ステージング、開発など)にデプロイされた、同じサービスへの反復的な変更である可能性があります。これが発生する一般的なシナリオには、A/Bテスト、カナリアロールアウトなどがあります。特定のバージョンの選択は、さまざまな基準(ヘッダー、URLなど)と/または各バージョンに割り当てられた重みに基づいて決定できます。各サービスには、そのすべてのインスタンスで構成されるデフォルトバージョンがあります。

ソース - サービスを呼び出すダウンストリームクライアント。

ホスト - クライアントがサービスへの接続を試行する際に使用するアドレス。

アクセスモデル - アプリケーションは、個々のサービスバージョン(サブセット)に関する知識を持たずに、宛先サービス(ホスト)のみにアドレスを指定します。バージョンの実際の選択はプロキシ/サイドカーによって決定され、アプリケーションコードが依存サービスの進化から切り離されることが可能になります。

VirtualServiceは、ホストがアドレス指定されたときに適用する一連のトラフィックルーティングルールを定義します。各ルーティングルールは、特定のプロトコルのトラフィックの一致基準を定義します。トラフィックが一致した場合、レジストリに定義されている名前付きの宛先サービス(またはそのサブセット/バージョン)に送信されます。

トラフィックのソースもルーティングルールで一致させることができます。これにより、特定のクライアントコンテキストに合わせてルーティングをカスタマイズできます。

Kubernetesの次の例では、すべてのHTTPトラフィックをデフォルトでラベル「version: v1」のreviewsサービスのポッドにルーティングします。さらに、`/wpcatalog/`または`/consumercatalog/`で始まるパスを持つHTTPリクエストは`/newcatalog`に書き換えられ、ラベル「version: v2」のポッドに送信されます。

apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: reviews-route
spec:
  hosts:
  - reviews.prod.svc.cluster.local
  http:
  - name: "reviews-v2-routes"
    match:
    - uri:
        prefix: "/wpcatalog"
    - uri:
        prefix: "/consumercatalog"
    rewrite:
      uri: "/newcatalog"
    route:
    - destination:
        host: reviews.prod.svc.cluster.local
        subset: v2
  - name: "reviews-v1-route"
    route:
    - destination:
        host: reviews.prod.svc.cluster.local
        subset: v1

ルート宛先のサブセット/バージョンは、対応するDestinationRuleで宣言する必要がある名前付きサービスサブセットへの参照によって識別されます。

apiVersion: networking.istio.io/v1
kind: DestinationRule
metadata:
  name: reviews-destination
spec:
  host: reviews.prod.svc.cluster.local
  subsets:
  - name: v1
    labels:
      version: v1
  - name: v2
    labels:
      version: v2

VirtualService

トラフィックルーティングに影響を与える設定。

項目説明必須
hostsstring[]

トラフィックが送信される宛先ホスト。ワイルドカードプレフィックス付きのDNS名またはIPアドレスにすることができます。プラットフォームによっては、FQDN(つまり、名前にドットが含まれていない)の代わりに短縮名を使用することもできます。そのようなシナリオでは、ホストのFQDNは基盤となるプラットフォームに基づいて導出されます。

単一のVirtualServiceを使用して、複数のHTTPおよびTCPポートを含む対応するホストのすべてのトラフィックプロパティを記述できます。あるいは、特定の注意事項に従って、複数のVirtualServiceを使用してホストのトラフィックプロパティを定義することもできます。運用ガイドで詳細を参照してください。

Kubernetesユーザー向け注記:短縮名(例:「reviews.default.svc.cluster.local」の代わりに「reviews」)を使用する場合、Istioはサービスではなく、ルールの名前空間に基づいて短縮名を解釈します。「default」名前空間にホスト「reviews」を含むルールは、reviewsサービスに関連付けられている実際の名前空間とは関係なく、「reviews.default.svc.cluster.local」として解釈されます。潜在的な設定ミスを回避するために、短縮名よりも常に完全修飾ドメイン名を使用することをお勧めします。

hostsフィールドは、HTTPサービスとTCPサービスの両方に適用されます。メッシュ内のサービス(つまり、サービスレジストリにあるサービス)は、常に英数字の名前を使用して参照する必要があります。IPアドレスは、Gatewayを介して定義されたサービスに対してのみ許可されます。

注記:委任VirtualServiceの場合は空にする必要があります。

いいえ
gatewaysstring[]

これらのルートを適用する必要があるゲートウェイとサイドカーの名前。他の名前空間のゲートウェイは、<gateway namespace>/<gateway name>で参照できます。名前空間修飾子なしでゲートウェイを指定することは、VirtualServiceの名前空間を指定することと同じです。単一のVirtualServiceは、メッシュ内のサイドカーと1つ以上のゲートウェイの両方で使用されます。このフィールドによって課せられる選択条件は、プロトコル固有のルートの一致条件のsourceフィールドを使用してオーバーライドできます。予約語meshは、メッシュ内のすべてのサイドカーを意味するために使用されます。このフィールドを省略した場合、デフォルトゲートウェイ(mesh)が使用され、メッシュ内のすべてのサイドカーにルールが適用されます。ゲートウェイ名のリストが提供されている場合、ルールはゲートウェイのみに適用されます。ゲートウェイとサイドカーの両方にルールを適用するには、ゲートウェイ名の1つとしてmeshを指定します。

いいえ
httpHTTPRoute[]

HTTPトラフィックのルーティングルールの順序付きリスト。HTTPルートは、HTTP/HTTP2/GRPCプロトコルを使用するプラットフォームサービスポート、HTTP/HTTP2/GRPC/TLS終端HTTPSプロトコルを使用するゲートウェイポート、およびHTTP/HTTP2/GRPCプロトコルを使用するサービスエントリポートに適用されます。着信リクエストと一致する最初のルールが使用されます。

いいえ
tlsTLSRoute[]

終端されていないTLSおよびHTTPSトラフィックのルーティングルールの順序付きリスト。ルーティングは通常、ClientHelloメッセージによって提示されるSNI値を使用して実行されます。TLSルートは、'https-*'、'tls-*'という名前のプラットフォームサービスポート、HTTPS/TLSプロトコルを使用する終端されていないゲートウェイポート(つまり、「パススルー」TLSモードを使用)、およびHTTPS/TLSプロトコルを使用するサービスエントリポートに適用されます。着信リクエストと一致する最初のルールが使用されます。注:関連付けられた仮想サービスのない'https-*'または'tls-*'ポートへのトラフィックは、不透明なTCPトラフィックとして扱われます。

いいえ
tcpTCPRoute[]

不透明なTCPトラフィックのルーティングルールの順序付きリスト。TCPルートは、HTTPポートまたはTLSポートではないポートに適用されます。着信リクエストと一致する最初のルールが使用されます。

いいえ
exportTostring[]

この仮想サービスがエクスポートされる名前空間のリスト。仮想サービスをエクスポートすると、他の名前空間に定義されているサイドカーとゲートウェイで使用できるようになります。この機能により、サービス所有者とメッシュ管理者は、名前空間の境界を越えて仮想サービスの可視性を制御するメカニズムを提供します。

名前空間が指定されていない場合、仮想サービスはデフォルトですべての名前空間にエクスポートされます。

値「.」は予約されており、仮想サービスが宣言されているのと同じ名前空間へのエクスポートを定義します。同様に、値「*」は予約されており、すべて名前空間へのエクスポートを定義します。

いいえ

Destination

宛先は、ルーティングルールを処理した後にリクエスト/接続が送信されるネットワークアドレス可能なサービスを示します。destination.hostは、サービスレジストリ内のサービスを明確に参照する必要があります。Istioのサービスレジストリは、プラットフォームのサービスレジストリ(例:Kubernetesサービス、Consulサービス)にあるすべてのサービスと、ServiceEntryリソースを介して宣言されたサービスで構成されます。

Kubernetesユーザー向け注記:短縮名(例:「reviews.default.svc.cluster.local」の代わりに「reviews」)を使用する場合、Istioはサービスではなく、ルールの名前空間に基づいて短縮名を解釈します。「default」名前空間にホスト「reviews」を含むルールは、reviewsサービスに関連付けられている実際の名前空間とは関係なく、「reviews.default.svc.cluster.local」として解釈されます。潜在的な設定ミスを回避するために、短縮名よりも常に完全修飾ドメイン名を使用することをお勧めします。

次のKubernetesの例では、すべてのトラフィックをデフォルトでラベル「version: v1」(つまり、サブセットv1)のreviewsサービスのポッドにルーティングし、一部をサブセットv2にルーティングします(Kubernetes環境)。

apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: reviews-route
  namespace: foo
spec:
  hosts:
  - reviews # interpreted as reviews.foo.svc.cluster.local
  http:
  - match:
    - uri:
        prefix: "/wpcatalog"
    - uri:
        prefix: "/consumercatalog"
    rewrite:
      uri: "/newcatalog"
    route:
    - destination:
        host: reviews # interpreted as reviews.foo.svc.cluster.local
        subset: v2
  - route:
    - destination:
        host: reviews # interpreted as reviews.foo.svc.cluster.local
        subset: v1

および関連付けられたDestinationRule

apiVersion: networking.istio.io/v1
kind: DestinationRule
metadata:
  name: reviews-destination
  namespace: foo
spec:
  host: reviews # interpreted as reviews.foo.svc.cluster.local
  subsets:
  - name: v1
    labels:
      version: v1
  - name: v2
    labels:
      version: v2

次のVirtualServiceは、Kubernetesのproductpage.prod.svc.cluster.localサービスへのすべての呼び出しのタイムアウトを5秒に設定します。このルールにはサブセットが定義されていないことに注意してください。Istioは、サービスレジストリからproductpage.prod.svc.cluster.localサービスのすべてのインスタンスを取得し、サイドカーのロードバランシングプールに格納します。また、このルールはistio-system名前空間で設定されていますが、productpageサービスの完全修飾ドメイン名productpage.prod.svc.cluster.localを使用していることに注意してください。したがって、ルールの名前空間はproductpageサービスの名前解決に影響しません。

apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: my-productpage-rule
  namespace: istio-system
spec:
  hosts:
  - productpage.prod.svc.cluster.local # ignores rule namespace
  http:
  - timeout: 5s
    route:
    - destination:
        host: productpage.prod.svc.cluster.local

メッシュ外のサービスへのバインドトラフィックのルーティングを制御するには、最初にServiceEntryリソースを使用して、外部サービスをIstioの内部サービスレジストリに追加する必要があります。その後、VirtualServiceを定義して、これらの外部サービスにバインドされたトラフィックを制御できます。たとえば、次のルールはwikipedia.orgのサービスを定義し、HTTPリクエストのタイムアウトを5秒に設定します。

apiVersion: networking.istio.io/v1
kind: ServiceEntry
metadata:
  name: external-svc-wikipedia
spec:
  hosts:
  - wikipedia.org
  location: MESH_EXTERNAL
  ports:
  - number: 80
    name: example-http
    protocol: HTTP
  resolution: DNS
---
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: my-wiki-rule
spec:
  hosts:
  - wikipedia.org
  http:
  - timeout: 5s
    route:
    - destination:
        host: wikipedia.org
項目説明必須
hoststring

サービスレジストリからのサービスの名前。サービス名は、プラットフォームのサービスレジストリ(例:Kubernetesサービス、Consulサービスなど)とServiceEntryで宣言されたホストから検索されます。どちらにも見つからない宛先に転送されたトラフィックは破棄されます。

Kubernetesユーザー向け注記:短縮名(例:「reviews.default.svc.cluster.local」の代わりに「reviews」)を使用する場合、Istioはサービスではなく、ルールの名前空間に基づいて短縮名を解釈します。「default」名前空間にホスト「reviews」を含むルールは、reviewsサービスに関連付けられている実際の名前空間とは関係なく、「reviews.default.svc.cluster.local」として解釈されます。潜在的な設定ミスを回避するために、短縮名よりも常に完全修飾ドメイン名を使用することをお勧めします。

はい
subsetstring

サービス内のサブセットの名前。メッシュ内のサービスのみに適用されます。サブセットは、対応するDestinationRuleで定義する必要があります。

いいえ
portPortSelector

アドレス指定されているホストのポートを指定します。サービスが単一のポートのみを公開する場合は、ポートを明示的に選択する必要はありません。

いいえ

HTTPRoute

HTTP/1.1、HTTP2、およびgRPCトラフィックのマッチ条件とルーティングアクションを記述します。使用方法の例については、VirtualServiceを参照してください。

項目説明必須
namestring

デバッグ目的でルートに割り当てられた名前。ルートの名前は一致の名前と連結され、このルート/一致に一致するリクエストのアクセスログに記録されます。

いいえ
matchHTTPMatchRequest[]

ルールを有効にするために満たす必要がある一致条件。単一の一致ブロック内のすべての条件はANDセマンティクスを持ち、一致ブロックのリストはORセマンティクスを持ちます。いずれか1つのマッチブロックが成功した場合、ルールは一致します。

いいえ
routeHTTPRouteDestination[]

HTTPルールは、direct_response、redirect、またはforward(デフォルト)トラフィックを返すことができます。転送ターゲットは、サービスのいくつかのバージョンのいずれかになります(ドキュメントの先頭にある用語集を参照)。サービスバージョンに関連付けられた重みは、それが受信するトラフィックの割合を決定します。

いいえ
redirectHTTPRedirect

HTTPルールは、direct_response、redirect、またはforward(デフォルト)トラフィックを返すことができます。ルールでトラフィックパススルーオプションが指定されている場合、route/redirectは無視されます。redirectプリミティブを使用して、異なるURIまたはAuthorityにHTTP 301リダイレクトを送信できます。

いいえ
directResponseHTTPDirectResponse

HTTPルールは、direct_response、redirect、またはforward(デフォルト)トラフィックを返すことができます。Direct Responseは、クライアントに送信する固定応答を指定するために使用されます。

RouteRedirectが空の場合のみ設定できます。

いいえ
delegateDelegate

delegateは、委任HTTPRouteを定義するために使用できる特定のVirtualServiceを指定するために使用されます。

RouteRedirectが空の場合のみ設定でき、委任VirtualServiceのルーティングルールは現在のものとマージされます。

注記:

  1. 1レベルの委任のみがサポートされています。
  2. 委任されたHTTPMatchRequestはルートの厳密なサブセットである必要があります。そうでない場合は競合が発生し、HTTPRouteは有効になりません。
いいえ
rewriteHTTPRewrite

HTTP URIとAuthorityヘッダーを書き換えます。RewriteはRedirectプリミティブと併用できません。書き換えは転送の前に実行されます。

いいえ
timeoutDuration

HTTPリクエストのタイムアウト、デフォルトは無効です。

いいえ
再試行HTTPRetry

HTTPリクエストの再試行ポリシー。

注:指定されていない場合のデフォルトのクラスタ全体の再試行ポリシーは

attempts: 2
retryOn: "connect-failure,refused-stream,unavailable,cancelled,503"

これはMesh ConfigdefaultHttpRetryPolicyでカスタマイズできます。

いいえ
フォルトHTTPFaultInjection

クライアント側でHTTPトラフィックに適用するフォルトインジェクションポリシー。クライアント側でフォルトが有効になっている場合、タイムアウトまたは再試行は無効になります。

いいえ
ミラーリングDestination

リクエストを目的の宛先に転送することに加えて、別の宛先にHTTPトラフィックをミラーリングします。ミラーリングされたトラフィックはベストエフォートベースであり、サイドカー/ゲートウェイは元の宛先からの応答を返す前に、ミラーリングされたクラスタからの応答を待機しません。ミラーリングされた宛先に関する統計が生成されます。

いいえ
ミラーHTTPMirrorPolicy[]

元の宛先に加えて、HTTPトラフィックをミラーリングする宛先を指定します。ミラーリングされたトラフィックはベストエフォートベースであり、サイドカー/ゲートウェイは元の宛先からの応答を返す前に、ミラーリングされた宛先からの応答を待機しません。ミラーリングされた宛先に関する統計が生成されます。

いいえ
ミラーリング率Percent

mirror フィールドによってミラーリングされるトラフィックの割合。このフィールドが存在しない場合、すべてのトラフィック(100%)がミラーリングされます。最大値は100です。

いいえ
CORSポリシーCorsPolicy

クロスオリジンリソース共有ポリシー(CORS)。クロスオリジンリソース共有の詳細については、CORSを参照してください。

いいえ
ヘッダーHeaders

ヘッダー操作ルール

いいえ

Delegate

委任VirtualServiceを記述します。以下のルーティングルールは、productpageという名前の委任VirtualServiceによってトラフィックを/productpageに転送し、reviewsという名前の委任VirtualServiceによってトラフィックを/reviewsに転送します。

apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: bookinfo
spec:
  hosts:
  - "bookinfo.com"
  gateways:
  - mygateway
  http:
  - match:
    - uri:
        prefix: "/productpage"
    delegate:
       name: productpage
       namespace: nsA
  - match:
    - uri:
        prefix: "/reviews"
    delegate:
        name: reviews
        namespace: nsB
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: productpage
  namespace: nsA
spec:
  http:
  - match:
     - uri:
        prefix: "/productpage/v1/"
    route:
    - destination:
        host: productpage-v1.nsA.svc.cluster.local
  - route:
    - destination:
        host: productpage.nsA.svc.cluster.local
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: reviews
  namespace: nsB
spec:
  http:
  - route:
    - destination:
        host: reviews.nsB.svc.cluster.local
項目説明必須
namestring

Nameは、委任VirtualServiceの名前を指定します。

いいえ
名前空間string

Namespaceは、委任VirtualServiceが存在する名前空間を指定します。デフォルトでは、ルートと同じです。

いいえ

Headers

Envoyがリクエストを宛先サービスに転送する際、または宛先サービスから応答を返す際に、メッセージヘッダーを操作できます。ヘッダー操作ルールは、特定のルート宛先またはすべての宛先に指定できます。次のVirtualServiceは、すべてのreviewsサービス宛先にルーティングされるリクエストに、値trueを持つtestヘッダーを追加します。また、reviewsサービスのv1サブセット(バージョン)からの応答からのみ、foo応答ヘッダーを削除します。

apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: reviews-route
spec:
  hosts:
  - reviews.prod.svc.cluster.local
  http:
  - headers:
      request:
        set:
          test: "true"
    route:
    - destination:
        host: reviews.prod.svc.cluster.local
        subset: v2
      weight: 25
    - destination:
        host: reviews.prod.svc.cluster.local
        subset: v1
      headers:
        response:
          remove:
          - foo
      weight: 75
項目説明必須
リクエストHeaderOperations

宛先サービスにリクエストを転送する前に適用するヘッダー操作ルール

いいえ
レスポンスHeaderOperations

呼び出し元にレスポンスを返す前に適用するヘッダー操作ルール

いいえ

TLSRoute

非終端TLSトラフィック(TLS/HTTPS)のルーティングのためのマッチ条件とアクションを記述します。以下のルーティングルールは、“mygateway”という名前のゲートウェイのポート443に到着する非終端TLSトラフィックを、SNI値に基づいてメッシュ内の内部サービスに転送します。

apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: bookinfo-sni
spec:
  hosts:
  - "*.bookinfo.com"
  gateways:
  - mygateway
  tls:
  - match:
    - port: 443
      sniHosts:
      - login.bookinfo.com
    route:
    - destination:
        host: login.prod.svc.cluster.local
  - match:
    - port: 443
      sniHosts:
      - reviews.bookinfo.com
    route:
    - destination:
        host: reviews.prod.svc.cluster.local
項目説明必須
matchTLSMatchAttributes[]

ルールを有効にするために満たす必要がある一致条件。単一の一致ブロック内のすべての条件はANDセマンティクスを持ち、一致ブロックのリストはORセマンティクスを持ちます。いずれか1つのマッチブロックが成功した場合、ルールは一致します。

はい
routeRouteDestination[]

接続を転送する宛先。

いいえ

TCPRoute

TCPトラフィックのルーティングのためのマッチ条件とアクションを記述します。次のルーティングルールは、mongo.prod.svc.cluster.localのポート27017に到着するトラフィックを、ポート5555の別のMongoサーバーに転送します。

apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: bookinfo-mongo
spec:
  hosts:
  - mongo.prod.svc.cluster.local
  tcp:
  - match:
    - port: 27017
    route:
    - destination:
        host: mongo.backup.svc.cluster.local
        port:
          number: 5555
項目説明必須
matchL4MatchAttributes[]

ルールを有効にするために満たす必要がある一致条件。単一の一致ブロック内のすべての条件はANDセマンティクスを持ち、一致ブロックのリストはORセマンティクスを持ちます。いずれか1つのマッチブロックが成功した場合、ルールは一致します。

いいえ
routeRouteDestination[]

接続を転送する宛先。

いいえ

HTTPMatchRequest

HttpMatchRequestは、ルールをHTTPリクエストに適用するために満たす必要がある一連の条件を指定します。たとえば、以下の例では、URLパスが/ratings/v2/で始まり、リクエストに値がjasonであるカスタムend-userヘッダーが含まれているリクエストのみにルールを一致させるように制限します。

apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: ratings-route
spec:
  hosts:
  - ratings.prod.svc.cluster.local
  http:
  - match:
    - headers:
        end-user:
          exact: jason
      uri:
        prefix: "/ratings/v2/"
      ignoreUriCase: true
    route:
    - destination:
        host: ratings.prod.svc.cluster.local

HTTPMatchRequestは空にできません。**注:**

  1. ルートVirtualServiceが正規表現でプロパティ(パス、ヘッダーなど)に一致した場合、委任VirtualServiceは同じプロパティに対して他のマッチを持たない必要があります。
  2. 委任VirtualServiceが正規表現でプロパティ(パス、ヘッダーなど)に一致した場合、ルートVirtualServiceは同じプロパティに対して他のマッチを持たない必要があります。
項目説明必須
namestring

マッチに割り当てられた名前。マッチの名前は親ルートの名前に連結され、このルートに一致するリクエストのアクセスログに記録されます。

いいえ
URIStringMatch

URIの一致値は大文字と小文字が区別され、次のようにフォーマットされます。

**注:**大文字と小文字を区別しない一致は、ignoreUriCaseフラグで有効にできます。

いいえ
スキームStringMatch

URIスキーム値は大文字と小文字が区別され、次のようにフォーマットされます。

いいえ
メソッドStringMatch

HTTPメソッド値は大文字と小文字が区別され、次のようにフォーマットされます。

いいえ
オーソリティStringMatch

HTTPオーソリティ値は大文字と小文字が区別され、次のようにフォーマットされます。

いいえ
ヘッダーmap<string, StringMatch>

ヘッダーキーは小文字で、セパレータとしてハイフンを使用する必要があります(例:x-request-id)。

ヘッダー値は大文字と小文字が区別され、次のようにフォーマットされます。

値が空で、ヘッダーの名前のみが指定されている場合、ヘッダーの存在がチェックされます。空の値を指定するには、{}を使用します(例)。

 - match:
   - headers:
       myheader: {}

**注:**キーurischememethod、およびauthorityは無視されます。

いいえ
portuint32

アドレス指定されているホスト上のポートを指定します。多くのサービスは単一のポートしか公開しないか、サポートするプロトコルでポートにラベル付けするため、これらの場合はポートを明示的に選択する必要はありません。

いいえ
ソースラベルmap<string, string>

指定されたラベルを持つソース(クライアント)ワークロードへのルールの適用可能性を制限する1つ以上のラベル。VirtualServiceが最上位のgatewaysフィールドに指定されたゲートウェイのリストを持っている場合、このフィールドを適用可能にするには、予約済みゲートウェイmeshを含める必要があります。

いいえ
gatewaysstring[]

ルールを適用するゲートウェイの名前。VirtualServiceの最上位gatewaysフィールド(存在する場合)のゲートウェイ名は上書きされます。ゲートウェイの一致は、sourceLabelsとは独立しています。

いいえ
クエリパラメータmap<string, StringMatch>

一致のためのクエリパラメータ。

  • “?key=true”のようなクエリパラメータの場合、マップキーは“key”になり、文字列マッチはexact: "true"として定義できます。

  • “?key”のようなクエリパラメータの場合、マップキーは“key”になり、文字列マッチはexact: ""として定義できます。

  • “?key=abc”または“?key=abx”のようなクエリパラメータの場合、マップキーは“key”になり、文字列マッチはprefix: "ab"として定義できます。

  • “?key=123”のようなクエリパラメータの場合、マップキーは“key”になり、文字列マッチはregex: "\d+$"として定義できます。この設定は“123”のような値のみに一致し、“a123”または“123a”には一致しません。

いいえ
ignoreUriCasebool

URIの一致で大文字と小文字を区別しないかどうかを指定するフラグ。

**注:**大文字と小文字は、exactprefixのURIマッチの場合のみ無視されます。

いいえ
withoutHeadersmap<string, StringMatch>

withoutHeaderはheaderと同じ構文ですが、意味が逆です。ヘッダーがwithoutHeader内のマッチングルールと一致した場合、トラフィックは一致しなくなります。

いいえ
ソース名前空間string

その名前空間のワークロードへのルールの適用可能性を制限するソース名前空間。VirtualServiceが最上位のgatewaysフィールドに指定されたゲートウェイのリストを持っている場合、このフィールドを適用可能にするには、予約済みゲートウェイmeshを含める必要があります。

いいえ
統計プレフィックスstring

このルートの統計を出力する際に使用する、人間が読み取れるプレフィックス。統計はプレフィックスroute.<stat_prefix>を使用して生成されます。これは、ルートごとの統計を取得したい非常に重要なルートに設定する必要があります。このプレフィックスは、プロキシレベルの統計(envoy_)のみを対象とし、サービスレベル(istio_)の統計は対象としません。https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route_components.proto#envoy-v3-api-field-config-route-v3-route-stat-prefixを参照して、これが設定されたときに生成される統計を確認してください。

いいえ

HTTPRouteDestination

各ルーティングルールには、1つ以上のサービスバージョンが関連付けられています(ドキュメントの先頭の用語集を参照)。バージョンに関連付けられた重みは、それが受信するトラフィックの割合を決定します。たとえば、次のルールは、“reviews”サービスのトラフィックの25%を“v2”タグを持つインスタンスにルーティングし、残りのトラフィック(つまり、75%)を“v1”にルーティングします。

apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: reviews-route
spec:
  hosts:
  - reviews.prod.svc.cluster.local
  http:
  - route:
    - destination:
        host: reviews.prod.svc.cluster.local
        subset: v2
      weight: 25
    - destination:
        host: reviews.prod.svc.cluster.local
        subset: v1
      weight: 75

および関連付けられたDestinationRule

apiVersion: networking.istio.io/v1
kind: DestinationRule
metadata:
  name: reviews-destination
spec:
  host: reviews.prod.svc.cluster.local
  subsets:
  - name: v1
    labels:
      version: v1
  - name: v2
    labels:
      version: v2

新しいサブセットを定義することなく、まったく異なる2つのサービス間でトラフィックを分割することもできます。たとえば、次のルールは、reviews.comへのトラフィックの25%をdev.reviews.comに転送します。

apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: reviews-route-two-domains
spec:
  hosts:
  - reviews.com
  http:
  - route:
    - destination:
        host: dev.reviews.com
      weight: 25
    - destination:
        host: reviews.com
      weight: 75
項目説明必須
宛先Destination

Destinationは、リクエスト/接続を転送するサービスのインスタンスを一意に識別します。

はい
重みint32

Weightは、宛先に転送されるトラフィックの相対的な割合を指定します。宛先はweight/(すべての重みの合計)のリクエストを受信します。ルールに宛先が1つしかない場合、すべてのトラフィックを受信します。そうでない場合、重みが0の場合、宛先はトラフィックを受信しません。

いいえ
ヘッダーHeaders

ヘッダー操作ルール

いいえ

RouteDestination

L4ルーティングルールの重み付けされた宛先。

項目説明必須
宛先Destination

Destinationは、リクエスト/接続を転送するサービスのインスタンスを一意に識別します。

はい
重みint32

Weightは、宛先に転送されるトラフィックの相対的な割合を指定します。宛先はweight/(すべての重みの合計)のリクエストを受信します。ルールに宛先が1つしかない場合、すべてのトラフィックを受信します。そうでない場合、重みが0の場合、宛先はトラフィックを受信しません。

いいえ

L4MatchAttributes

L4接続マッチ属性。L4接続マッチングのサポートは不完全であることに注意してください。

項目説明必須
宛先サブネットstring[]

オプションのサブネット付きの宛先のIPv4またはIPv6 IPアドレス。例:a.b.c.d/xx形式またはa.b.c.dのみ。

いいえ
portuint32

アドレス指定されているホスト上のポートを指定します。多くのサービスは単一のポートしか公開しないか、サポートするプロトコルでポートにラベル付けするため、これらの場合はポートを明示的に選択する必要はありません。

いいえ
ソースラベルmap<string, string>

指定されたラベルを持つワークロードへのルールの適用可能性を制限する1つ以上のラベル。VirtualServiceが最上位のgatewaysフィールドに指定されたゲートウェイのリストを持っている場合、このフィールドを適用可能にするには、予約済みゲートウェイmeshを含める必要があります。

いいえ
gatewaysstring[]

ルールを適用するゲートウェイの名前。VirtualServiceの最上位gatewaysフィールド(存在する場合)のゲートウェイ名は上書きされます。ゲートウェイの一致は、sourceLabelsとは独立しています。

いいえ
ソース名前空間string

その名前空間のワークロードへのルールの適用可能性を制限するソース名前空間。VirtualServiceが最上位のgatewaysフィールドに指定されたゲートウェイのリストを持っている場合、このフィールドを適用可能にするには、予約済みゲートウェイmeshを含める必要があります。

いいえ

TLSMatchAttributes

TLS接続マッチ属性。

項目説明必須
sniHostsstring[]

一致させるSNI(サーバー名インジケータ)。ワイルドカードプレフィックスをSNI値で使用できます(例:*.comはfoo.example.comとexample.comの両方に一致します)。SNI値は、対応する仮想サービスのホストのサブセット(つまり、ドメイン内にある)である必要があります。

はい
宛先サブネットstring[]

オプションのサブネット付きの宛先のIPv4またはIPv6 IPアドレス。例:a.b.c.d/xx形式またはa.b.c.dのみ。

いいえ
portuint32

アドレス指定されているホスト上のポートを指定します。多くのサービスは単一のポートしか公開しないか、サポートするプロトコルでポートにラベル付けするため、これらの場合はポートを明示的に選択する必要はありません。

いいえ
ソースラベルmap<string, string>

指定されたラベルを持つワークロードへのルールの適用可能性を制限する1つ以上のラベル。VirtualServiceが最上位のgatewaysフィールドに指定されたゲートウェイのリストを持っている場合、このフィールドを適用可能にするには、予約済みゲートウェイmeshを含める必要があります。

いいえ
gatewaysstring[]

ルールを適用するゲートウェイの名前。VirtualServiceの最上位gatewaysフィールド(存在する場合)のゲートウェイ名は上書きされます。ゲートウェイの一致は、sourceLabelsとは独立しています。

いいえ
ソース名前空間string

その名前空間のワークロードへのルールの適用可能性を制限するソース名前空間。VirtualServiceが最上位のgatewaysフィールドに指定されたゲートウェイのリストを持っている場合、このフィールドを適用可能にするには、予約済みゲートウェイmeshを含める必要があります。

いいえ

HTTPRedirect

HTTPRedirectは、Authority/HostとレスポンスのURIを指定された値で交換できる301リダイレクトレスポンスを呼び出し元に送信するために使用できます。たとえば、次のルールは、ratingsサービスの/v1/getProductRatings APIのリクエストを、bookratingsサービスが提供する/v1/bookRatingsにリダイレクトします。

apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: ratings-route
spec:
  hosts:
  - ratings.prod.svc.cluster.local
  http:
  - match:
    - uri:
        exact: /v1/getProductRatings
    redirect:
      uri: /v1/bookRatings
      authority: newratings.default.svc.cluster.local
  ...
項目説明必須
URIstring

リダイレクト時に、URLのPath部分をこの値で上書きします。リクエストURIが正確なパスまたはプレフィックスとして一致するかに関係なく、パス全体が置き換えられます。

いいえ
オーソリティstring

リダイレクト時に、URLのAuthority/Host部分をこの値で上書きします。

いいえ
portuint32 (oneof)

リダイレクト時に、URLのポート部分をこの値で上書きします。

いいえ
derivePortRedirectPortSelection (oneof)

リダイレクト時に、ポートを動的に設定します。

  • FROM_PROTOCOL_DEFAULT:HTTPの場合は80、HTTPSの場合は443に自動的に設定されます。
  • FROM_REQUEST_PORT:リクエストのポートを自動的に使用します。
いいえ
スキームstring

リダイレクト時に、URLのスキーム部分をこの値で上書きします。たとえば、httpまたはhttps。設定されていない場合、元のスキームが使用されます。derivePortFROM_PROTOCOL_DEFAULTに設定されている場合、これにより使用されるポートにも影響します。

いいえ
redirectCodeuint32

リダイレクト時に、リダイレクトレスポンスで使用されるHTTPステータスコードを指定します。デフォルトのレスポンスコードはMOVED_PERMANENTLY(301)です。

いいえ

HTTPDirectResponse

HTTPDirectResponseは、クライアントに固定されたレスポンスを送信するために使用できます。たとえば、次のルールは、/v1/getProductRatings APIのリクエストに固定された503ステータスと本文を返します。

apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: ratings-route
spec:
  hosts:
  - ratings.prod.svc.cluster.local
  http:
  - match:
    - uri:
        exact: /v1/getProductRatings
    directResponse:
      status: 503
      body:
        string: "unknown error"
  ...

バイナリレスポンス本文を指定することもできます。これは、gRPCなどのテキスト以外のプロトコルで主に役立ちます。

apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: ratings-route
spec:
  hosts:
  - ratings.prod.svc.cluster.local
  http:
  - match:
    - uri:
        exact: /v1/getProductRatings
    directResponse:
      status: 503
      body:
        bytes: "dW5rbm93biBlcnJvcg==" # "unknown error" in base64
  ...

HTTPRouteとdirect_responseの両方でヘッダーを追加することをお勧めします(例:返されるContent-Typeを指定する場合)。

apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: ratings-route
spec:
  hosts:
  - ratings.prod.svc.cluster.local
  http:
  - match:
    - uri:
        exact: /v1/getProductRatings
    directResponse:
      status: 503
      body:
        string: "{\"error\": \"unknown error\"}"
    headers:
      response:
        set:
          content-type: "text/plain"
  ...
項目説明必須
ステータスuint32

返されるHTTPレスポンスステータスを指定します。

はい
本文HTTPBody

レスポンス本文の内容を指定します。この設定を省略すると、生成されたレスポンスに本文は含まれません。

いいえ

HTTPBody

項目説明必須
string文字列 (oneof)

文字列としてのレスポンスボディ

いいえ
バイトバイト (oneof)

Base64エンコードされたバイトとしてのレスポンスボディ。

いいえ

HTTPRewrite

HTTPRewriteは、リクエストを宛先に転送する前に、HTTPリクエストの特定の部分を書き換えるために使用できます。Rewriteプリミティブは、HTTPRouteDestinationでのみ使用できます。次の例は、API呼び出し(/ratings)のURLプレフィックスをratingsサービスに書き換えてから実際のAPI呼び出しを行う方法を示しています。

apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: ratings-route
spec:
  hosts:
  - ratings.prod.svc.cluster.local
  http:
  - match:
    - uri:
        prefix: /ratings
    rewrite:
      uri: /v1/bookRatings
    route:
    - destination:
        host: ratings.prod.svc.cluster.local
        subset: v1
項目説明必須
URIstring

URIのパス(またはプレフィックス)部分をこの値で書き換えます。元のURIがプレフィックスに基づいて一致した場合、このフィールドに指定された値は、対応する一致したプレフィックスを置き換えます。

いいえ
オーソリティstring

Authority/Hostヘッダーをこの値で書き換えます。

いいえ
uriRegexRewriteRegexRewrite

指定された正規表現を使用してURIのパス部分を書き換えます。

いいえ

RegexRewrite

項目説明必須
matchstring

RE2スタイルの正規表現ベースの一致.

いいえ
rewritestring

元のURIの一致部分に置き換える文字列。パターン内のキャプチャグループは、新しいURIで参照できます。例

例1:キャプチャグループを使用した書き換え パスパターン「/service/update/v1/api」、一致パターン「^/service/([^/]+)(/.*)$」、書き換え文字列「/customprefix/\2/\1」は「/customprefix/v1/api/update」に変換されます。

例2:大文字と小文字を区別しない書き換え パスパターン「/aaa/XxX/bbb」、一致パターン「(?i)/xxx/」、書き換え文字列「/yyy/」は、大文字と小文字を区別しない一致を行い、パスを「/aaa/yyy/bbb」に変換します。

いいえ

StringMatch

HTTPヘッダー内の特定の文字列の照合方法を記述します。exactおよびprefixの一致は大文字と小文字を区別します。regexの一致は大文字と小文字を区別しません。

項目説明必須
exact文字列 (oneof)

完全一致

いいえ
prefix文字列 (oneof)

プレフィックスベースの一致

いいえ
regex文字列 (oneof)

RE2スタイルの正規表現ベースの一致.

例:(?i)^aaa$は、3つの「a」からなる文字列と大文字と小文字を区別しない一致に使用できます。

いいえ

HTTPRetry

HTTPリクエストが失敗した場合に使用するリトライポリシーについて説明します。たとえば、次のルールは、ratings:v1サービスを呼び出す際の最大リトライ回数を3回に設定し、リトライ試行ごとに2秒のタイムアウトを設定します。接続失敗、refused_stream、またはアップストリームサーバーがサービス利用不可(503)で応答した場合に、リトライが試行されます。

apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: ratings-route
spec:
  hosts:
  - ratings.prod.svc.cluster.local
  http:
  - route:
    - destination:
        host: ratings.prod.svc.cluster.local
        subset: v1
    retries:
      attempts: 3
      perTryTimeout: 2s
      retryOn: gateway-error,connect-failure,refused-stream
項目説明必須
attemptsint32

特定のリクエストに対して許可されるリトライ回数。リトライ間の間隔は自動的に決定されます(25ms+)。HTTPルートのリクエストtimeoutまたはper_try_timeoutが設定されている場合、試行された実際のリトライ回数は、指定されたリクエストtimeoutおよびper_try_timeoutの値にも依存します。0以上でなければなりません。0の場合、リトライは無効になります。行われるリクエストの最大数は、1 + attemptsになります。

いいえ
perTryTimeoutDuration

最初の呼び出しとリトライを含む、特定のリクエストの試行ごとのタイムアウト。形式:1h/1m/1s/1ms。1ms以上でなければなりません。デフォルトはHTTPルートのリクエストtimeoutと同じ値であり、タイムアウトはありません。

いいえ
retryOnstring

リトライが行われる条件を指定します。カンマ区切りのリストを使用して、複数のポリシーを指定できます。リトライポリシーおよびgRPCリトライポリシーの詳細については、こちらをご覧ください。

上記で指定されたポリシーに加えて、retryOn: "503,reset"などのHTTPステータスコードのリストを渡すことができます。これらのステータスコードは、宛先から受信した実際の応答を参照していることに注意してください。たとえば、接続がリセットされた場合、Istioはこれをその応答に対して503に変換します。ただし、宛先は503エラーを返さなかったため、これは"503"とは一致しません(ただし、"reset"とは一致します)。

指定されていない場合、デフォルトはconnect-failure,refused-stream,unavailable,cancelled,503になります。

いいえ
retryRemoteLocalitiesBoolValue

リトライが他のロケーションにもリトライするかどうかを指定するフラグ。リトライプラグインの設定の詳細については、こちらをご覧ください。

いいえ

CorsPolicy

特定のサービスのクロスオリジンリソース共有(CORS)ポリシーについて説明します。クロスオリジンリソース共有の詳細については、CORSを参照してください。たとえば、次のルールは、example.comドメインから発信されるHTTP POST/GETを使用するクロスオリジンリクエストを制限し、Access-Control-Allow-Credentialsヘッダーをfalseに設定します。さらに、X-Foo-barヘッダーのみを公開し、1日の有効期限を設定します。

apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: ratings-route
spec:
  hosts:
  - ratings.prod.svc.cluster.local
  http:
  - route:
    - destination:
        host: ratings.prod.svc.cluster.local
        subset: v1
    corsPolicy:
      allowOrigins:
      - exact: https://example.com
      allowMethods:
      - POST
      - GET
      allowCredentials: false
      allowHeaders:
      - X-Foo-Bar
      maxAge: "24h"
項目説明必須
allowOriginsStringMatch[]

許可されたオリジンと一致する文字列パターン。文字列マッチャーのいずれかと一致する場合、オリジンは許可されます。一致が見つかった場合、発信されるAccess-Control-Allow-Originは、クライアントによって提供されたオリジンに設定されます。

いいえ
allowMethodsstring[]

リソースへのアクセスが許可されているHTTPメソッドのリスト。内容はAccess-Control-Allow-Methodsヘッダーにシリアライズされます。

いいえ
allowHeadersstring[]

リソースを要求するときに使用できるHTTPヘッダーのリスト。Access-Control-Allow-Headersヘッダーにシリアライズされます。

いいえ
exposeHeadersstring[]

ブラウザーがアクセスできるHTTPヘッダーのリスト。Access-Control-Expose-Headersヘッダーにシリアライズされます。

いいえ
maxAgeDuration

プリフライトリクエストの結果をキャッシュできる期間を指定します。Access-Control-Max-Ageヘッダーに変換されます。

いいえ
allowCredentialsBoolValue

呼び出し元が資格情報を使用して実際の要求(プリフライトではない)を送信できるかどうかを示します。Access-Control-Allow-Credentialsヘッダーに変換されます。

いいえ
unmatchedPreflightsUnmatchedPreflights

設定された許可されたオリジンと一致しないプリフライトリクエストをアップストリームに転送しないかどうかを示します。デフォルトはアップストリームへの転送です。

いいえ

HTTPFaultInjection

HTTPFaultInjectionは、ルートに指定された宛先にHTTPリクエストを転送する際に挿入する1つ以上の障害を指定するために使用できます。障害の仕様は、VirtualServiceルールの部分です。障害には、ダウンストリームサービスからのHTTPリクエストの中断や、リクエストの転送の遅延などが含まれます。障害ルールには、delayまたはabort、またはその両方が含まれていなければなりません。

注:遅延と中断の障害は、同時に両方指定されている場合でも、互いに独立しています。

項目説明必須
delayDelay

転送前にリクエストを遅延させ、ネットワークの問題、アップストリームサービスの過負荷など、さまざまな障害をエミュレートします。

いいえ
abortAbort

HTTPリクエストの試行を中断し、ダウンストリームサービスにエラーコードを返して、アップストリームサービスに障害が発生したという印象を与えます。

いいえ

HTTPMirrorPolicy

HTTPMirrorPolicyは、元の宛先に加えて、HTTPトラフィックをミラーリングする宛先を指定するために使用できます。ミラーリングされたトラフィックはベストエフォートベースであり、サイドカー/ゲートウェイは、元の宛先からの応答を返す前に、ミラーリングされた宛先が応答するのを待ちません。ミラーリングされた宛先に関する統計が生成されます。

項目説明必須
宛先Destination

Destinationは、ミラー操作のターゲットを指定します。

はい
percentagePercent

destinationフィールドによってミラーリングされるトラフィックの割合。このフィールドがない場合、すべてのトラフィック(100%)がミラーリングされます。最大値は100です。

いいえ

PortSelector

PortSelectorは、最終ルーティングの照合または選択に使用されるポートの番号を指定します。

項目説明必須
numberuint32

有効なポート番号

いいえ

Percent

Percentは、[0.0, 100.0]の範囲のパーセンテージを指定します。

項目説明必須
valuedoubleいいえ

Headers.HeaderOperations

HeaderOperationsは、適用するヘッダー操作について説明します。

項目説明必須
setmap<string, string>

キーで指定されたヘッダーを指定された値で上書きします。

いいえ
addmap<string, string>

キーで指定されたヘッダーに指定された値を追加します(値のカンマ区切りのリストを作成します)。

いいえ
removestring[]

指定されたヘッダーを削除します。

いいえ

HTTPFaultInjection.Delay

遅延の指定は、リクエスト転送パスにレイテンシを挿入するために使用されます。次の例では、「reviews」サービスの「v1」バージョンへの1000リクエストのうち1リクエストに5秒の遅延を導入します(ラベルenv: prodを持つすべてのポッドから)。

apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: reviews-route
spec:
  hosts:
  - reviews.prod.svc.cluster.local
  http:
  - match:
    - sourceLabels:
        env: prod
    route:
    - destination:
        host: reviews.prod.svc.cluster.local
        subset: v1
    fault:
      delay:
        percentage:
          value: 0.1
        fixedDelay: 5s

fixedDelayフィールドは、秒単位の遅延量を示すために使用されます。オプションのpercentageフィールドを使用して、特定の割合のリクエストのみを遅延させることができます。指定されていない場合、リクエストは遅延しません。

項目説明必須
fixedDelayDuration (oneof)

リクエストの転送前に固定遅延を追加します。形式:1h/1m/1s/1ms。1ms以上でなければなりません。

いいえ
percentagePercent

遅延を挿入するリクエストの割合。指定されていない場合、リクエストは遅延しません。

いいえ
percentint32

遅延を挿入するリクエストの割合(0~100)。整数percent値の使用は非推奨です。代わりにdouble percentageフィールドを使用してください。

いいえ

HTTPFaultInjection.Abort

中断の仕様は、事前に指定されたエラーコードでリクエストを早期に中断するために使用されます。次の例では、「ratings」サービスの「v1」バージョンへの1000リクエストのうち1リクエストにHTTP 400エラーコードを返します。

apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: ratings-route
spec:
  hosts:
  - ratings.prod.svc.cluster.local
  http:
  - route:
    - destination:
        host: ratings.prod.svc.cluster.local
        subset: v1
    fault:
      abort:
        percentage:
          value: 0.1
        httpStatus: 400

httpStatusフィールドは、呼び出し元に返すHTTPステータスコードを示すために使用されます。オプションのpercentageフィールドを使用して、特定の割合のリクエストのみを中断することができます。指定されていない場合、リクエストは中断されません。

項目説明必須
httpStatusint32 (oneof)

HTTPリクエストの中断に使用されるHTTPステータスコード。

いいえ
grpcStatus文字列 (oneof)

リクエストの中断に使用されるGRPCステータスコード。https://github.com/grpc/grpc/blob/master/doc/statuscodes.mdでサポートされているコードが記載されています。注:「利用不可」のステータスを返す場合は、コードをUNAVAILABLE(すべて大文字)として指定する必要がありますが、14ではありません。

いいえ
percentagePercent

指定されたエラーコードで中断されるリクエストの割合。指定されていない場合、リクエストは中断されません。

いいえ

google.protobuf.UInt32Value

uint32のラッパーメッセージ。

UInt32ValueのJSON表現はJSON数値です。

項目説明必須
valueuint32

uint32値。

いいえ

HTTPRedirect.RedirectPortSelection

名前説明
FROM_PROTOCOL_DEFAULT
FROM_REQUEST_PORT

CorsPolicy.UnmatchedPreflights

名前説明
UNSPECIFIED

FORWARDにデフォルト設定

FORWARD

設定された許可されたオリジンと一致しないプリフライトリクエストは、アップストリームに転送されます。

IGNORE

設定された許可されたオリジンと一致しないプリフライトリクエストは、アップストリームに転送されません。

この情報は役に立ちましたか?
改善のための提案はありますか?

ご意見ありがとうございます!