タグベースのルーティング機能を使用して、トラフィックまたはマシンにタグを付けることができます。これにより、特定の特性を満たすトラフィックを特定のノードにルーティングできます。タグベースのルーティング機能は、ブルーグリーンデプロイメントやカナリアリリースなどのシナリオに適しています。
前提条件
Microservices Governance がアクティブ化されていること。詳細については、「Microservices Governance のアクティブ化」をご参照ください。
Container Service for Kubernetes (ACK) 専用クラスターまたは ACK マネージドクラスターが作成されていること。詳細については、「ACK 専用クラスターの作成」または「ACK マネージドクラスターの作成」をご参照ください。
制限事項
このセクションでは、Microservices Governance が有効になっているアプリケーションに適用される制限事項について説明します。
タブベースのルーティングでサポートされている Java のバージョンとフレームワークの詳細については、「Microservices Governance でサポートされている Java フレームワーク」をご参照ください。
シナリオ
複数バージョンの開発とテスト
複数のバージョンが同時に開発されている場合は、バージョンごとに開発環境を準備する必要があります。開発環境のコストは高くなります。コストを削減するために、タグベースのルーティングを使用してエンドツーエンドのトラフィック調整を実装できます。エンドツーエンドのトラフィック調整は、タグベースのルーティング機能に基づいて実装されます。エンドツーエンドのトラフィック調整により、特定のトラフィックを特定の開発環境にルーティングできます。たとえば、開発環境 1 で、アプリケーション B(V1.1)とアプリケーション D(V1.1)のタグ 1 を作成し、タグベースのルーティングルールを設定します。このようにして、アプリケーション A がアプリケーション B を呼び出すと、システムはトラフィックがタグベースのルーティングルールの条件を満たしているかどうかを確認します。条件を満たしている場合、トラフィックは開発環境 1 のアプリケーション B(V1.1)にルーティングされます。条件を満たしていない場合、トラフィックはベースライン環境のアプリケーション B(V1)にルーティングされます。アプリケーション C がアプリケーション D を呼び出すと、トラフィックはタグベースのルーティングルールに基づいてアプリケーション D(V1)またはアプリケーション D(V1.1)にルーティングされます。
複数バージョンアプリケーションのトラフィック調整
アプリケーションの複数のバージョンが同時にオンラインで実行され、共通環境や特殊環境など、異なる環境にデプロイされている場合、タグベースのルーティング機能を使用して、異なる環境の異なるバージョン宛てのトラフィックを分離できます。たとえば、フラッシュセールスの注文のトラフィック、または異なるチャネルからの注文のトラフィックを特殊環境にルーティングし、共通のトラフィックを共通環境にルーティングできます。このようにして、特殊環境宛てのトラフィックは、特殊環境で例外が発生した場合でも共通環境にルーティングされず、共通環境は影響を受けません。
A/B テスト
アプリケーションの複数のバージョンが同時にオンラインで実行されます。アプリケーションの異なるバージョンで A/B テストを実行するには、エンドツーエンドのトラフィック調整を使用して、リージョン A から開始されたトラフィックをアプリケーション V1 にルーティングし、リージョン B から開始されたトラフィックをアプリケーション V1.1 にルーティングできます。その後、異なるバージョンを検証できます。これは、新製品や新機能をリリースする際のリスクを軽減し、製品の革新を促進するのに役立ちます。
ACK クラスター内のアプリケーションに対して Microservices Governance を有効にし、アプリケーションインスタンスにタグを追加する
このセクションでは、spring-cloud-a という名前のアプリケーションのインスタンスに tag1 と tag2 が追加され、インスタンスはタグに基づいて 2 つのグループに分割されます。リクエストがルールに一致する場合、リクエストは特定のタグを持つインスタンスにルーティングされます。ルールが一致しない場合、リクエストはトラフィックルーティングに設定された割合に基づいてインスタンスにルーティングされます。
[ACK コンソール] にログインします。
左側のナビゲーションペインで、[クラスター] をクリックします。次に、管理するクラスターの名前をクリックします。
左側のナビゲーションペインで、 を選択します。
[デプロイメント] ページの右上隅にある [イメージから作成] をクリックします。
[作成] ウィザードで、spring-cloud-a-tag1 と spring-cloud-a-tag2 という名前の 2 つのデプロイメントを作成します。詳細については、「デプロイメントを使用してステートレスアプリケーションを作成する」をご参照ください。
パラメーター
説明
レプリカ
このパラメーターを 1 に設定します。
タイプ
このパラメーターをデプロイメントに設定します。
イメージ名
作成したイメージを選択します。[イメージ名] フィールドの横にある [イメージの選択] をクリックします。[イメージとイメージタグの選択] ダイアログボックスで、リージョンドロップダウンリストから [中国 (杭州)] を選択し、
registry.cn-hangzhou.aliyuncs.com/mse-governance-demo/spring-cloud-a:3.0.1を選択します。spring-cloud-a-tag1 と spring-cloud-a-tag2 に対して Microservices Governance を有効にし、spring-cloud-a-tag1 と spring-cloud-a-tag2 にタグを追加します。
[デプロイメント] ページに移動します。[名前空間] ドロップダウンリストから spring-cloud-a-tag1 が属する名前空間を選択します。spring-cloud-a-tag1 を見つけ、[アクション] 列で [詳細] > [YAML で表示] を選択します。spring-cloud-a-tag2 に対しても同じ操作を実行します。
[YAML の編集] ダイアログボックスで、spring-cloud-a-tag1 の に次のラベルを追加します。spring-cloud-a-tag2 に対しても同じ操作を実行します。この手順を実行すると、spring-cloud-a-tag1 と spring-cloud-a-tag2 に対して Microservices Governance が有効になります。
labels: msePilotAutoEnable: "on" msePilotCreateAppName: <your-app-name> alicloud.service.tag: <tag>説明<your-app-name> は、Microservices Governance で使用するアプリケーション名に置き換えます。この例では、アプリケーション名は spring-cloud-a です。
<tag> は、tag1 または tag2 に置き換えます。
[更新] をクリックします。
MSE コンソールでアプリケーションのタグベースのルーティングルールを作成する
[MSE コンソール] にログインし、上部のナビゲーションバーでリージョンを選択します。
左側のナビゲーションペインで、Microservices Governance > Application Governance を選択します。
[アプリケーションリスト] ページで、目的の名前空間を選択し、ACK クラスターで作成したアプリケーション spring-cloud-a を検索してクリックします。
左側のナビゲーションペインで、[トラフィック管理] をクリックします。表示されるページで、[ラベルルーティング] タブをクリックして、タグベースのルーティング設定を表示します。
[ラベルルーティング] タブで、タグに固有の [フロー比率] を設定し、[保存] をクリックします。

トラフィックルールを追加するタグを見つけ、[トラフィックルール] 列の [追加] をクリックします。[タグベースのルーティングの作成] パネルで、パラメーターを設定し、[OK] をクリックします。
説明タグベースのルーティング機能が使用されている場合、トラフィックルール内のルーティング条件が優先的に使用されます。トラフィックルールが満たされている場合、トラフィックはトラフィックルール内のタグに対応する Pod にルーティングされます。それ以外の場合、トラフィックは指定されたトラフィックの割合に基づいてタグに対応する Pod にルーティングされます。
パラメーター
説明
ルーティングルール名
タグベースのルーティングルール名。例:test-springcloud。
アプリケーション
アプリケーションの名前。例:spring-cloud-a。
タグ
ACK クラスターのアプリケーションに追加したタグ。例:tag2。
アプリケーションインスタンス
このタグを持つアプリケーションインスタンスの IP アドレスとポート番号。
トラフィックルール
フレームワークタイプ
アプリケーションのフレームワークに基づいて、[spring Cloud] または [dubbo] を選択します。
Spring Cloud:ドロップダウンリストから URL パス(
/getIpなど)を選択できます。カスタム URL パスを指定することもできます。Dubbo:特定のサービスとインターフェースを選択できます。
条件モード
ビジネス要件に基づいて、[すべての条件を満たす] または [条件のいずれかを満たす] を選択します。
条件
フレームワークタイプ が Spring Cloud に設定されている場合、[パラメータータイプ] ドロップダウンリストから パラメーター、Cookie、ヘッダー、または 本文コンテンツ を選択できます。設定例:パラメータータイプがパラメーターに設定されている場合は
name=xiaoming、パラメータータイプが Cookie に設定されている場合はhello = "world" or hello = "world2"。フレームワークタイプ が Dubbo に設定されている場合は、[パラメーター値を取得するための式] パラメーターを設定する必要があります。
結果の確認
ビジネス要件に基づいて結果を確認します。
すべてのトラフィックを spring-cloud-a-tag1 にルーティングするルールを作成します。

特定の条件を満たすトラフィックを特定のアプリケーションにルーティングするルールを作成します。

関連情報
エンドツーエンドのカナリアリリースの実装方法の詳細については、「エンドツーエンドカナリアリリース」をご参照ください。