すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud Service Mesh:ASMSwimLaneGroup および ASMSwimLane フィールドの説明

最終更新日:Jan 13, 2025

サービスメッシュ(ASM)では、ASMSwimLaneGroup および ASMSwimLane CustomResourceDefinitions(CRD)を使用して、サービスの呼び出しチェーンにトラフィックレーン機能を実装できます。 ASM を使用すると、アプリケーションの特定のバージョンのサービス、または特定の特性を持つアプリケーションを、独立したランタイム環境(レーンと呼ばれる)に分離できます。 その後、ルールに一致するリクエストを、アプリケーションの特定のバージョンのサービス、または特定の特性を持つアプリケーションにルーティングするように、レーンルールを設定できます。

設定例

次の設定は、Kubernetes クラスタの default ネームスペースにある mocka、mockb、および mockc サービスに対して、mock という名前のレーングループが作成されることを示しています。 レーングループには、v1 と v2 の 2 つのトラフィックレーンが含まれています。 v1 と v2 は、それぞれこれらのサービスの v1 と v2 のバージョンに対応しています。 バージョンは、ポッドのバージョンラベルによって区別されます。 mocka、mockb、および mockc サービスが互いに呼び出す場合、同じバージョンのサービスのみが呼び出されます。 これにより、v1 と v2 のサービスが分離されます。 さらに、istio-system ネームスペースにある ingressgateway という名前の Istio ゲートウェイに基づいて仮想サービスが作成され、リクエストが 2 つのレーンにルーティングされます。

YAML ファイルを表示

apiVersion: istio.alibabacloud.com/v1
kind: ASMSwimLaneGroup
metadata:
  name: mock
spec:
  ingress:
    gateway:
      name: ingressgateway
      namespace: istio-system
      type: ASM
  services:
  - name: mocka
    namespace: default
  - name: mockb
    namespace: default
  - name: mockc
    namespace: default
---
apiVersion: istio.alibabacloud.com/v1
kind: ASMSwimLane
metadata:
  labels:
    swimlane-group: mock
  name: v1
spec:
  ingressRules:
  - hosts:
    - '*'
    match:
      uri:
        exact: /mock
    name: r1
    online: true
    route:
      destination:
        host: mocka.default.svc.cluster.local
  labelSelector:
    version: v1
---
apiVersion: istio.alibabacloud.com/v1
kind: ASMSwimLane
metadata:
  labels:
    swimlane-group: mock
  name: v2
spec:
  ingressRules:
  - hosts:
    - '*'
    match:
      uri:
        exact: /mock
    name: r2
    online: true
    route:
      destination:
        host: mocka.default.svc.cluster.local
  labelSelector:
    version: v2

ASMSwimLaneGroup フィールドの説明

ASMSwimLaneGroup は、トラフィックレーングループを定義します。 トラフィックレーングループは、トラフィックレーンを作成する必要があるサービスと、リクエストルーティングに使用される仮想サービスを作成する必要がある Istio ゲートウェイなど、複数のトラフィックレーンで共有される情報を定義します。 トラフィックレーングループは、複数のトラフィックレーンに関連付けることができます。 swimlane-group: {トラフィックレーングループの名前} を指定することで、トラフィックレーンをトラフィックレーングループに関連付けることができます。

ASMSwimLaneGroupSpec

ASMSwimLaneGroupSpec、つまり上記の例の spec セクションは、ASMSwimLaneGroup のコア設定です。

フィールド

タイプ

必須

説明

services

ClusterServiceRef[]

はい

レーンを作成する必要がある Kubernetes クラスタ内のサービスを指定します。 Kubernetes サービスの名前、ネームスペース、クラスタ ID、およびクラスタ名を指定することで、Kubernetes クラスタ内のサービスを参照できます。

ingress

SwimLaneGroupIngressConfiguration

はい

トラフィックレーングループのイングレスゲートウェイの設定を指定します。 イングレスゲートウェイは、主にレーングループ内のサービスの複数のバージョンにリクエストをルーティングするために使用されます。

isPermissive

bool

いいえ

トラフィックレーングループのモードを指定します。有効な値:

  • true:許可モード。

  • false または空:厳格モード。

厳格モードと許可モードのトラフィックレーンの詳細については、「トラフィックレーンの概要」をご参照ください。

permissiveModeConfiguration

PermissiveSwimLaneGroupConfiguration

いいえ

許可モードのレーングループの設定。レーングループが許可モードの場合、このフィールドを設定する必要があります。

ClusterServiceRef

各 ClusterServiceRef は、Kubernetes クラスタにデプロイされた 1 つのサービスを参照します。レーンは、サービスの参照に基づいて作成されます。

フィールド

タイプ

必須

説明

name

string

はい

Kubernetes サービスの名前。

namespace

string

はい

Kubernetes サービスが存在するネームスペース。

cluster

ClusterRef

いいえ

Kubernetes クラスタに関する参照情報。

ClusterRef

ClusterRef は、ASM インスタンスに追加された Kubernetes クラスタに関する参照情報を提供します。

フィールド

タイプ

必須

説明

name

string

いいえ

Kubernetes クラスタの表示名。

id

string

いいえ

Kubernetes クラスタの ID。

SwimLaneGroupIngressConfiguration

SwimLaneGroupIngressConfiguration は、レーングループ内のサービスのリクエストをルーティングするために使用されるイングレスゲートウェイに関する情報を定義します。

フィールド

タイプ

必須

説明

gateway

SwimLaneGatewayConfiguration

はい

イングレスゲートウェイに関連付けられた Istio ゲートウェイに関する情報。

ingressRouting

SwimLaneGroupIngressRouteConfiguration

いいえ

レーングループ内のサービスのリクエストをルーティングするために使用されるリクエストルーティングルールの設定。

説明

V1.21.6.92 以降の ASM インスタンスのみがこのフィールドをサポートしています。

SwimLaneGatewayConfiguration

SwimLaneGatewayConfiguration は、イングレスゲートウェイに関連付けられた Istio ゲートウェイに関する情報を定義します。

フィールド

タイプ

必須

説明

name

string

はい

Istio ゲートウェイの名前。

namespace

string

はい

Istio ゲートウェイが存在するネームスペース。

type

string

はい

Istio ゲートウェイのタイプ。このフィールドは、ASM によって提供される Istio ゲートウェイを示す ASM に設定する必要があります。

SwimLaneGroupIngressRouteConfiguration

SwimLaneGroupIngressRouteConfiguration は、レーングループ内のサービスのリクエストをルーティングするために使用されるリクエストルーティングルールの設定を指定します。

フィールド

タイプ

必須

説明

ingressRoutingStrategy

string

いいえ

レーングループ内のサービスのリクエストをルーティングするために使用されるポリシー。有効な値:

  • rule_based:デフォルトのリクエストルーティングポリシー。各レーンは ingressRules フィールドを使用して独自のリクエストルーティングルールを指定します。リクエストルーティングルールに一致するリクエストは、対応するレーンに送信されます。

  • weighted:重みベースのリクエストルーティングポリシー。レーングループ内のすべてのサービスは、統一されたリクエストルーティングルールに基づいてリクエストを照合します。一致したリクエストは、指定された比率で異なるレーンのサービスに送信されます。

weightedRoutingRule

WeightedSwimLaneIngressConfiguration

いいえ

重みベースのリクエストルーティングポリシーが使用される場合に、すべてのリクエストを照合するために使用される統一されたリクエストルーティングルール。このフィールドは、ingressRoutingStrategy フィールドが weighted に設定されている場合にのみ有効になります。

WeightedSwimLaneIngressConfiguration

WeightedSwimLaneIngressConfiguration は、重みベースのリクエストルーティングポリシーが使用される場合に、すべてのリクエストを照合するために使用される統一されたリクエスト照合ルールの設定を指定します。

フィールド

タイプ

必須

説明

hosts

[]string

はい

リクエストに一致するホスト。ホストは、レーングループに関連付けられた Istio ゲートウェイで宣言する必要があります。

requestMatches

SwimLaneIngressRequestMatch

いいえ

リクエストの URI とヘッダーを照合するために使用されるリクエスト照合ルール。

PermissiveSwimLaneGroupConfiguration

PermissiveSwimLaneGroupConfiguration は、許可モードのトラフィックレーングループに指定する必要があるパラメータを定義します。

フィールド

タイプ

必須

説明

routeHeader

string

はい

許可モードのトラフィックレーンのリクエストルーティングヘッダーの名前。

リクエストルーティングヘッダーは、リクエストが呼び出しチェーンで渡されるときに、リクエストのレーンを決定するために使用されます。

許可モードでは、リクエストがイングレスゲートウェイを介してアップストリームサービスに転送されるときに、リクエストは、リクエストが存在するレーンを決定するために使用されるリクエストルーティングヘッダーを伝送する必要があります。

traceHeader

string

はい

許可モードのトラフィックレーンのエンドツーエンド(E2E)パススルーリクエストヘッダーの名前。

E2E パススルーリクエストヘッダーには、次の特性が必要です。

  • E2E パススルーリクエストヘッダーは、呼び出しチェーンで渡されます。

  • E2E パススルーリクエストヘッダーがリクエストルーティングヘッダーと異なる場合、E2E パススルーリクエストヘッダーはリクエストごとに異なる必要があります。トレース ID は、E2E パススルーリクエストヘッダーとして使用できます。たとえば、x-b3-trace-id を E2E パススルーリクエストヘッダーとして使用できます。

fallbackTarget

string

いいえ

許可モードのベースラインレーンの名前。リクエストが目的のレーン内の対応するバージョンのサービスにルーティングできない場合、リクエストはベースラインレーン内の対応するバージョンのサービスに送り返されます。

ASMSwimLane フィールドの説明

ASMSwimLane は、トラフィックレーンを定義します。トラフィックレーンは、サービスの特定のバージョンまたは特定の特性に関連する情報を定義します。swimlane-group: {トラフィックレーングループの名前} ラベルをトラフィックレーンに追加して、対応するトラフィックレーングループに関連付けることができます。

ASMSwimLaneSpec

ASMSwimLaneSpec、つまり spec セクションは、ASMSwimLane のコア設定です。

フィールド

タイプ

必須

説明

labelSelector

map<string, string>

はい

レーン内のサービスのポッドを照合するために使用される 1 つ以上のラベル。一般に、バージョン情報を含むラベルを使用して、特定のレーン内のポッドを照合できます。たとえば、version: v1 ラベルを使用して、v1 のサービスのポッドを照合できます。

services

ClusterServiceRef[]

いいえ

レーンにデプロイされているサービスを指定します。このフィールドは、ASMSwimLaneGroupSpec の services フィールドに似ています。 Kubernetes サービスの名前、ネームスペース、クラスタ ID、およびクラスタ名を指定することで、Kubernetes クラスタ内のサービスを参照できます。

  • トラフィックレーンが厳格モードのレーングループに関連付けられている場合、このフィールドを指定する必要はありません。デフォルトでは、レーンにはレーングループのすべてのサービスが含まれている必要があります。

  • トラフィックレーンが許可モードのレーングループに関連付けられている場合、このフィールドを指定する必要があります。この場合、ASMSwimLaneSpec セクションの services フィールドは、ASMSwimLaneGroupSpec セクションの services フィールドのサブセットである必要があります。レーン内のサービスが互いに呼び出すときに、呼び出されるサービスがレーンに存在しない場合、リクエストはベースラインレーン内の同じサービスに転送されます。

ingressRules

SwimLaneIngressRule[]

いいえ

レーンへのリクエストをルーティングするためのイングレスゲートウェイルールの定義。定義は、レーングループに関連付けられたイングレスゲートウェイの仮想サービスに自動的に変換されます。仮想サービスは、イングレスゲートウェイからのリクエストをレーン内のサービスにルーティングします。

ingressRules フィールドを指定しない場合は、イングレスゲートウェイの仮想サービスを手動で作成して、リクエストをレーン内のサービスにルーティングできます。

ingressWeight

SwimLaneIngressWeight

いいえ

レーングループが重みベースのリクエストルーティングポリシーを使用する場合、このフィールドはレーンのリクエストルーティングの重みを指定します。レーングループは、異なるレーンに宣言されたリクエストルーティングの重みに基づいて、リクエストの一定の割合をレーンのイングレスサービスに転送します。このフィールドは、ingressRoutingStrategy フィールドが weighted に設定されている場合にのみ有効になります。

SwimLaneIngressRule

SwimLaneIngressRule は、イングレスゲートウェイがレーン内のサービスにリクエストをルーティングするためのルーティングルールを指定します。ルールは、イングレスゲートウェイの仮想サービスに自動的に変換されます。

フィールド

タイプ

必須

説明

online

bool

はい

リクエストルーティングルールが有効かどうかを指定します。対応する仮想サービスは、online フィールドが true に設定されている場合にのみ、イングレスゲートウェイに対して作成されます。

hosts

string[]

はい

リクエストルーティングルールに一致するホスト。このフィールドは、仮想サービスの hosts フィールドに対応します。

name

string

いいえ

リクエストルーティングルールの名前。仮想サービスの http セクションの下の name フィールドに対応します。

match

SwimLaneIngressRequestMatch

いいえ

リクエストルーティングルールが一致するためにリクエストが満たす必要のある条件。このフィールドは、仮想サービスの http セクションの下の match フィールドに自動的に変換されます。

route

SwimLaneIngressRoute

はい

リクエストのルーティング先となるデスティネーションサービス。このフィールドは、仮想サービスの http セクションの下の route フィールドに自動的に変換されます。

SwimLaneIngressWeight

フィールド

タイプ

必須

説明

weight

int

いいえ

レーンのリクエストルーティングの重み。このフィールドが指定されていない場合、リクエストルーティングの重みは 0 です。重み値は、他のレーンのリクエストルーティングの重みとともに使用されて、リクエストルーティングの比率が決定されます。

destination

RouteDestination

はい

このフィールドは、重みベースのリクエストルーティングポリシーが使用される場合にリクエストが転送されるデスティネーションサービスを指定します。

SwimLaneIngressRequestMatch

SwimLaneIngressRequestMatch は、リクエストルーティングルールが一致するためにリクエストが満たす必要のある条件を指定します。

フィールド

タイプ

必須

説明

uri

StringMatch

いいえ

対応するリクエストが一致するためにリクエスト URI が満たす必要のある条件。有効な値:

  • exact: "value":完全一致。

  • prefix: "value":プレフィックス一致。

  • regex: "value":RE2 正規表現一致。詳細については、「構文」をご参照ください。

headers

map<string, StringMatch>

いいえ

対応するリクエストが一致するためにリクエストヘッダーが満たす必要のある条件。Map コレクションのキーは小文字で、ハイフン(-)を含める必要があります。キー(例:x-request-id)は、ヘッダーの名前を表します。Map コレクションの値は StringMatch タイプです。有効な値:

  • exact: "value":完全一致。

  • prefix: "value":プレフィックス一致。

  • regex: "value":RE2 正規表現一致。詳細については、「構文」をご参照ください。

StringMatch

StringMatch は、リクエストの URI とヘッダーを照合する方法を定義する文字列照合条件を指定します。

フィールド

タイプ

必須

説明

一致モードに基づいてフィールドのいずれか 1 つを指定します

exact

string

いいえ

完全一致。

prefix

string

いいえ

プレフィックス一致。

regex

string

いいえ

RE2 正規表現一致。詳細については、「wiki」をご参照ください。

SwimLaneIngressRoute

SwimLaneIngressRoute は、リクエストのルーティング先となるデスティネーションサービスを指定します。

フィールド

タイプ

必須

説明

destination

RouteDestination

はい

リクエストの転送先となるデスティネーションサービスを指定します。

RouteDestination

フィールド

タイプ

必須

説明

host

string

はい

Kubernetes サービスのドメイン名。例:mocka.default.svc.cluster.local

portNum

int

いいえ

Kubernetes クラスタのサービスポート。例:8000

説明

V1.21.4.104 以降の ASM インスタンスがこのフィールドをサポートしています。

参考文献