クラウドネイティブゲートウェイでは、サービスバージョンは主にタグベースルーティングに使用されます。適切なルーティングポリシーを設定することで、カナリアリリース、タグベースルーティング、高可用性デプロイメントなどのユースケースを実現できます。
サービスバージョンの管理は、[固定アドレス] または [DNS ドメイン名] サービスではサポートされていません。
背景情報
マイクロサービスアーキテクチャにおいて、サービスとはアプリケーションの機能単位であり、通常は注文サービスやユーザーサービスなど、独立したビジネスドメインを持ちます。物理的には、サービスはネットワークアドレスを持つコンテナ、仮想マシン、または物理マシン上で実行されます。論理的には、サービスは同じ機能を提供するネットワークインスタンスのグループで構成されます。
サービスバージョンは、サービスのインスタンスのサブセットであり、そのメタデータに基づいてグループ化されます。サービスバージョンの一般的なユースケースには、カナリアリリース、タグベースルーティング、高可用性デプロイメントなどがあります。
-
カナリアリリース:新しいサービスバージョンを安全に展開するために、カナリアリリースを使用できます。この戦略では、少量のトラフィックを新しいバージョンに転送して検証します。新しいバージョンが期待どおりに動作することを確認した後、すべてのトラフィックを古いバージョンから新しいバージョンに徐々に移行します。
-
タグベースルーティング:サービスには、それぞれ特定のリクエストを対象とした、機能の異なる複数のバージョンが存在する場合があります。たとえば、同じ API であっても、特定ヘッダー値を持つリクエストは特定のサービスバージョンにルーティングされます。また、サービスバージョンを使用して、リクエストの属性に基づいて、テスト、ステージング、本番などの適切な開発環境にリクエストをルーティングすることもできます。
-
高可用性デプロイメント:サービスの可用性を確保するために、複数の Kubernetes (K8s) クラスターにまたがってサービスをデプロイできます。各クラスターのインスタンスを個別のサービスバージョンとして扱うことで、各クラスターにルーティングされるトラフィックの重みを調整できます。あるクラスターで障害が発生した場合、その重みを 0 に設定することでトラフィックをリダイレクトできます。
サービスバージョンの管理は、サービスインスタンスに関連付けられたメタデータに依存します。
-
Container Service for Kubernetes (ACK) の場合、サービスインスタンスのメタデータは Pod の
Labels属性から派生します。たとえば、Kubernetes Service に関連付けられた Spring Cloud アプリケーションを使用する場合、Kubernetes Deployment YAML ファイルのspec.template.metadata.labelsの下にタグキーとタグ値を追加できます。 -
Nacos レジストリの場合、サービスインスタンスのメタデータは、インスタンス登録時にアプリケーションが提供するメタデータに基づきます。たとえば、Nacos レジストリを持つ Spring Cloud アプリケーションを使用する場合、
spring.cloud.nacos.discovery.metadataフィールドを使用してインスタンスメタデータを設定できます。
サービスバージョンの追加
-
MSE コンソールにログインします。トップナビゲーションバーで、リージョンを選択します。
-
左側のナビゲーションウィンドウで、Cloud-Native Gateway > ゲートウェイリスト を選択します。[ゲートウェイ] ページで、対象ゲートウェイの ID をクリックします。
-
左側のナビゲーションウィンドウで、Routes をクリックします。次に、[サービス] タブをクリックします。
-
変更するサービスの名前をクリックします。Service Version セクションで、Add Version をクリックします。
-
サービスバージョンリストに表示される新しい行で、パラメーターを設定し、Actions 列の
アイコンをクリックします。パラメーター
説明
Version Name
サービスバージョンの名前を入力します。読みやすく、内容が分かりやすい名前を使用してください。
Tag Name
すべてのサービスインスタンスで利用可能なメタデータキーです。新しいバージョン用にインスタンスをグループ化するためのキーを選択します。
Tag Value
選択した [タグキー] で利用可能な値です。新しいバージョンのインスタンスグループを定義するための値を選択します。
Number of Instances/Proportion
-
インスタンス数:指定されたタグキーと値に一致するインスタンスの数です。
-
割合:このバージョンに属するサービスの総インスタンス数に対する割合です。
説明Tag Name と Tag Value を組み合わせることで、現在のバージョンのインスタンスセットが決定されます。
-
-
確認ダイアログボックスで、OK をクリックします。
新しいサービスバージョンが Service Version セクションに表示されます。
サービスバージョンの編集
-
MSE コンソールにログインします。トップナビゲーションバーで、リージョンを選択します。
-
左側のナビゲーションウィンドウで、Cloud-Native Gateway > ゲートウェイリスト を選択します。[ゲートウェイ] ページで、対象ゲートウェイの ID をクリックします。
-
左側のナビゲーションウィンドウで、Routes をクリックします。次に、[サービス] タブをクリックします。
-
変更するサービスの名前をクリックします。Service Version セクションで、Actions 列の
アイコンをクリックします。 -
新しいTag NameとTag Valueを選択し、Actions列の
アイコンをクリックします。 -
確認ダイアログボックスで、OK をクリックします。
サービスバージョンの削除
-
MSE コンソールにログインします。トップナビゲーションバーで、リージョンを選択します。
-
左側のナビゲーションウィンドウで、Cloud-Native Gateway > ゲートウェイリスト を選択します。[ゲートウェイ] ページで、対象ゲートウェイの ID をクリックします。
-
左側のナビゲーションウィンドウで、Routes をクリックします。次に、[サービス] タブをクリックします。
-
変更するサービスの名前をクリックします。Service Versionリストで、Actions列の
アイコンをクリックします。 -
確認ダイアログボックスで、OK をクリックします。