複数のアップストリームサービスのトラフィック管理

ポリシー名

複数のアップストリームサービスのトラフィック管理

概要

1 つのコンシューマーエンドポイントから複数のアップストリームサービスへの API インスタンストラフィックを管理する

使用可能な最小 Flex Gateway バージョン

v1.0.0

返される状況コード

このポリシーの戻りコードは存在しません。

次の情報は、ローカルモードで実行されている Flex Gateway にのみ適用されます。接続モードで実行されている Flex Gateway 用に複数のアップストリームサービスを設定するには、​「Multiple Upstream Services for Flex Gateway Running in Connected Mode (接続モードで実行されている Flex Gateway 用の複数のアップストリームサービス)」​を参照してください。

概要

Flex Gateway は、トラフィックを複数のアップストリームサービスに転送できるさまざまなルートを使用して要求トラフィックを管理します。Flex Gateway はルート順と各ルートのルールを使用してトラフィックをルートに転送します。さらに、ルート内の各アップストリームサービスに加重率を追加してアップストリームサービスに送信される要求の割合を管理できます。加重率の追加については、複数のアップストリームサービスポリシーのトラフィック管理 (加重)を参照してください。

ApiInstance​ に ​spec.services​ が含まれていない場合に要求を ​Service​ に転送できるようにするには、複数のアップストリームサービスポリシーのトラフィック管理 (​route​) ポリシーを使用して ​PolicyBinding​ 設定を定義する必要があります。カスタムポリシーで要求を管理している場合は、​route​ ポリシーを設定する必要はありません。

ポリシーのパラメーターの設定

以下のポリシー定義とパラメーターの表を参照してください。

policyRef:
  name: route
config:
  destinationPath: <string> // OPTIONAL, default: "/"
  destinationRef:
      name: <string> // REQUIRED
      kind: <string> // OPTIONAL, default: "Service"
      namespace: <string> // OPTIONAL, default: ""
rules:
  - path: <URL-regex> // OPTIONAL, Example: (.*)
    methods: <regex-string> // OPTIONAL, Example: GET|POST
    headers:
      <header-name>: <regex-string> // OPTIONAL
    host: <regex-string> // OPTIONAL
パラメーター 必須または省略可能 デフォルト値 説明

destinationPath

省略可能

"/"

アップストリームサービスのパス

destinationRef.name

必須

なし

Service​ 設定リソースで定義されているアップストリームサービスの名前

destinationRef.kind

省略可能

"Service"

destinationRef.namespace

省略可能

""

rules

省略可能

このルートのルールセットの配列。
各ルートで複数のルールセットをサポートできます。

rules.path

省略可能

ルートがサービスできる要求パス。
ルールセットごとに 1 つの「URI テンプレート正規表現」パスしか定義できません。定義済みのパスがある要求しかこのルートには送信できません。

rules.methods

省略可能

ルートがサービスできる要求メソッドの種別を定義する配列。
ルールセットごとに複数のメソッドを選択できます。定義済みのメソッドのいずれかである要求しかこのルートには送信できません。サポートされている値は ​GET​、​POST​、​PUT​、​PATCH​、​DELETE​、​OPTIONS​、​HEAD​、​TRACE​、​CONNECT​ です。

rules.headers

省略可能

このルートが要求をサービスするために存在している必要があるヘッダーと正規表現を定義する配列。
指定されたすべてのヘッダー要件を満たす要求しかこのルートには送信できません。ルールで特に定義されていない要求に存在する追加のヘッダーは無視されます。

rules.host

省略可能

ルートがサービスできる要求ホスト URL。
ルールセットごとに 1 つのホスト URL しか定義できません。定義済みのホストから行われる要求しかこのルートには送信できません。

リソースの設定例

spec.services​ パラメーターが含まれない ​ApiInstance​ 設定を定義できます。

apiVersion: gateway.mulesoft.com/v1alpha1
kind: ApiInstance
metadata:
  name: ingress-http
spec:
  address: http://0.0.0.0:8080/api

spec.services​ パラメーターがない場合、​PolicyBinding​ 設定で ​route​ ポリシーを定義する必要があります。

apiVersion: gateway.mulesoft.com/v1alpha1
kind: PolicyBinding
metadata:
  name: ingress-httpbin-route
spec:
  targetRef:
    name: ingress-http
  policyRef:
    name: route
  config:
    destinationPath: /orders
    destinationRef:
      name: orders-svc
  rules:
  - path: /foo(/.*)

関連する ​Service​ 設定:

apiVersion: gateway.mulesoft.com/v1alpha1
kind: Service
metadata:
  name: orders-svc
spec:
  address: https://orders.svc.local:443/

要求パスの決定

次の表で、ルーティングと要求のパスの想定される変換を決定する属性の例を使用して、考えられるすべてのパラメーターの組み合わせを示しています。列は、前の設定例の属性のデータ値を参照しています。

ApiInstance .address .path PolicyBinding(route) .rules .path PolicyBinding(route) .config .destinationPath Input Path (入力パス) Output Path (出力パス)

<empty>

/api/.*

<empty>

/api/foo/bar

/api/foo/bar

<empty>

/api(/.*)

<empty>

/api/foo/bar

/foo/bar

<empty>

/api/.*

/orders

/api/foo/bar

/orders/api/foo/bar

<empty>

/api(/.*)

/orders

/api/foo/bar

/orders/foo/bar

/api

/foo/.*

<empty>

/api/foo/bar

/foo/bar

/api

/foo(/.*)

<empty>

/api/foo/bar

/bar

/api

/foo/.*

/orders

/api/foo/bar

/orders/foo/bar

/api

/foo(/.*)

/orders

/api/foo/bar

/orders/bar

/api

/api/foo/.*

/orders

/api/foo/bar

<no match> (/api/api/foo/bar などのパスを想定)

/api

/foo(/.)/bar(/.)

<empty>

/api/foo/abc/bar/def

/abc/def

/api

/foo(/.)/bar(/.)

/orders

/api/foo/abc/bar/def

/orders/abc/def