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

Enterprise Distributed Application Service:Kubernetes アプリケーションのカナリアリリース実装

最終更新日:Mar 11, 2026

マイクロサービスの新しいバージョンをデプロイする際、全面展開ではすべてのユーザーを潜在的な問題にさらすリスクがあります。カナリアリリースは、まず新しいバージョンを少数のインスタンスにデプロイすることで、このリスクを軽減します。カナリアインスタンスが正常であることを確認した後、新しいバージョンを残りのインスタンスにバッチで昇格させます。

このトピックでは、Enterprise Distributed Application Service (EDAS) コンソールを使用して、Kubernetes クラスター内の Spring Cloud および Dubbo マイクロサービスに対してカナリアリリースを実行する方法について説明します。

仕組み

EDAS におけるカナリアリリースは、次のライフサイクルに従います。

  1. EDAS はカナリアインスタンスグループを作成し、指定した数のインスタンスに新しいバージョンをデプロイします。

  2. 設定したルール (コンテンツベースのマッチング、割合ベースの分割、またはレーンベースのルーティング) に基づいて、トラフィックがカナリアグループにルーティングされます。

  3. 新しいバージョンが期待どおりに動作することを確認するために、カナリアトラフィックをモニターします。

  4. 検証が成功した後、手動で昇格を承認します。これにより、新しいバージョンが残りのインスタンスに1つ以上のバッチでデプロイされます。

  5. 問題が発生した場合は、カナリアグループを以前のバージョンにロールバックできます。

説明

カナリアバッチの後続のバッチを開始する前に、手動での承認が必要です。EDAS はカナリアを全面展開に自動的に昇格させません。

制限事項

アプリケーションタイプカナリアリリースサポート
High-Speed Service Framework (HSF)サポートされていません。
Dubbo制限なくサポートされています。
Spring Cloudサポートされています。アプリケーションが Deployment.Metadata.Name または Deployment.Metadata.Uid に依存して機能を構成している場合、カナリアリリースを使用しないでください。そうしないと、カナリアリリース後にアプリケーションのネイティブ機能が異常になる可能性があります。
Ingress アプリケーション制限付きでサポートされています。Server Load Balancer (SLB) インスタンスがトラフィックをアプリケーションに直接転送する場合、SLB のトラフィック転送はカナリアリリース ポリシーに従いません。
説明

Ingress アプリケーションでカナリアリリースを使用するには、クライアントアプリケーションと複数のレプリカを持つサーバーアプリケーションを作成します。サーバーアプリケーションでカナリアリリースを実行し、SLB インスタンスをクライアントアプリケーションに関連付けて外部トラフィックを処理します。

カナリアリリースの開始

事前準備

以下を確認してください。

操作手順

  1. EDAS コンソールにログインします。

  2. 左側のナビゲーションウィンドウで、[アプリケーション管理] > [アプリケーション] を選びます。上部のナビゲーションバーで、リージョンを選択します。ページ上部で、[microservices Namespace] ドロップダウンリストから microservices namespace を選択します。

  3. [アプリケーション] ページで、[Kubernetes クラスタ] を [クラスタータイプ] ドロップダウンリストから選択します。カナリアリリースを実行するアプリケーションの名前をクリックします。

  4. [アプリケーション概要] ページの右上隅で、[デプロイ] > [デプロイ] を選択します。[デプロイメントモードの設定] ページで、[カナリアリリース (段階的)] セクションの [デプロイメントの開始] をクリックします。

  5. [カナリアリリース (段階的)] ページで、デプロイメントメソッド、リリース ポリシー、およびカナリアリリースルールを設定し、[OK] をクリックします。以降のセクションでは、各構成エリアについて説明します。

ステップ 1: デプロイ方法の設定

デプロイパラメーターは、アプリケーションが最初にデプロイされた方法 (JAR/WAR パッケージまたはコンテナイメージ) によって異なります。

JAR/WAR パッケージのデプロイ

パラメーター説明
アプリケーション実行環境以前のデプロイメントと一致している必要があります。JAR パッケージでは 標準 Java アプリケーション実行環境 を使用します。WAR パッケージでは Apache Tomcat を使用します。Tomcat のバージョンは変更できますが、ランタイムの種別は変更できません。
Java 環境JDK のバージョンを選択します。
ファイルアップロード方法パッケージの種別(JAR または WAR)は、以前のデプロイメントと一致している必要があります。パッケージを直接アップロードするか、パッケージの URL を指定します。
バージョンデプロイメントパッケージのバージョン番号です。タイムスタンプを用いるのが推奨されます。
タイムゾーンアプリケーションで使用するタイムゾーンを選択します。

コンテナイメージのデプロイ

パラメーター説明
Container Registry リポジトリタイプJava、Tomcat、または EDAS-Container (HSF) アプリケーションが Container Service for Kubernetes (ACK) クラスターにある場合にのみ利用可能です。サーバーレス Kubernetes クラスターではサポートされていません。
Container Registry のリージョンContainer Registry Enterprise Edition の場合にのみ必須です。イメージが存在するリージョンを選択します。
Container Registry[Container Registry Enterprise Edition] の場合にのみ必須です。デプロイするイメージを選択します。
イメージリポジトリの名前空間名前空間を選択するか、+ 名前空間の作成 をクリックして作成できます。
説明

イメージビルドタスクはクラスター内で実行され、クラスターリソースを消費します。ビルドタスクあたりのデフォルトのリソース制限は、コアあたり 1 GB です。これを調整するには、「イメージビルドのリソース制限を調整する方法」をご参照ください。

イメージビルドのスケジューリングルール

作成したイメージを[Container Registry Personal Edition]または[Container Registry Enterprise Edition]のリポジトリに保存する場合、EDASはノード ラベルおよびTaintに基づいてイメージのビルド タスクをスケジュールします。

動作ノード構成
EDAS はノードへのビルドタスクのスケジューリングを拒否しますノードに edas.image.build=disable ラベルがある
EDAS はノードへのビルドタスクのスケジューリングを優先しますノードに edas.image.build=enable ラベルがある
ビルドタスクはノードを許容しますノードに key=edas.image.build, effect=NoSchedule Taint がある
説明

ビルドタスク専用のノードを割り当てるには、edas.image.build=enable ラベルと key=edas.image.build, effect=NoSchedule Taint の両方を追加します。これにより、Taint を許容しない Pod がノードにスケジュールされるのを防ぎながら、ビルドタスクをノードで実行できます。

リソースクォータ (すべてのデプロイタイプ)

パラメーター説明
単一 Pod のリソースクォータ各 Pod に予約されている CPU、メモリ、およびエフェメラルストレージ。0 (デフォルト) の値は制限なしを意味します。エフェメラルストレージが指定されていない場合、最大値はクラスター容量によって異なります。

ステップ 2: リリースポリシーの設定

リリースポリシーは、最初のカナリアバッチで新しいバージョンを受け取るインスタンスの数と、その後の残りのインスタンスの更新方法を制御します。

パラメーター説明
カナリーリリースのインスタンス数最初の(カナリー)バッチに含まれるインスタンス数です。合計インスタンス数は、このフィールドの隣に表示されます。安定性を確保するため、合計数の半分未満に設定することを推奨します。
残りのバッチ数カナリーバッチ後に残りのインスタンスを更新するためのバッチ数です。
バッチモード残りのバッチ数 が 1 より大きい場合に必須です。自動:指定された 間隔(分単位)でバッチをリリースします。手動:各バッチを手動でトリガーする必要があります。
バッチ間のデプロイメント間隔バッチに複数のインスタンスが含まれる場合、そのバッチ内の各インスタンスへのデプロイメント間に設定される遅延(秒単位)です。
説明

カナリアバッチがデプロイされた後、残りのバッチを開始するには、手動で昇格を承認する必要があります。

ページ右側の公開ポリシー設定パネルでは、設定に基づいてリリースフローのビジュアルまとめが表示されます。

ステップ 3: カナリアリリースルールの設定

カナリアリリースルールは、トラフィックがカナリアインスタンスグループに到達する方法を決定します。EDAS では、以下の 3 つのルーティング戦略がサポートされています:コンテンツによるカナリアリリース比率によるカナリアリリース、およびレーンによるカナリアリリース

戦略使用タイミング
コンテンツによるカナリアリリース特定のヘッダー、Cookie、またはパラメーターに一致するリクエストをカナリアグループにルーティングします。特定のユーザーまたはリクエストタイプでのターゲットテストに最適です。
割合によるカナリアリリースすべてのトラフィックの固定割合をカナリアグループにルーティングします。代表的なトラフィックサンプルでの広範な検証に最適です。
レーンによるカナリアリリースマイクロサービスチェーン全体でのエンドツーエンドのカナリア検証のために、事前定義されたレーンを介してトラフィックをルーティングします。呼び出しチェーン内の複数のサービスにまたがる変更の検証に最適です。

コンテンツベースルーティング

リクエストが特定の属性に一致する場合、トラフィックをカナリアグループにルーティングします。

  1. [ポリシーの追加] をクリックします。[コンテンツによるカナリアリリースポリシーの追加] パネルで、[ポリシー名] を指定して [インバウンドトラフィックルールの作成] をクリックし、次に [OK] をクリックします。

  2. 作成したポリシーを、[ポリシーの選択] ドロップダウンリストから選択します。

説明

単一のポリシー内に複数のインバウンドトラフィックルールを作成します。すべてのルールは同時に有効になります。

パラメーター説明
プロトコルの種類Spring Cloud の場合:相対 HTTP パスを指定します。 Dubbo の場合:サービスメソッドを選択します。
条件モードすべての条件を満たす (AND ロジック) または いずれかの条件を満たす (OR ロジック)。
条件Spring Cloud の場合:Cookieヘッダー、またはパラメーターに基づいてマッチングします。 Dubbo の場合:ご利用のアプリケーションに合わせて、パラメーターパラメーター値を取得するための式を設定します。

割合ベースのルーティング

トラフィックの固定割合をカナリアグループにルーティングします。

パラメーター説明
トラフィック比率カナリアグループに転送されるトラフィックの割合。

レーンベースのルーティング

呼び出しチェーン内の複数のサービスにまたがるエンドツーエンドのカナリア検証のために、事前定義されたレーンを介してトラフィックをルーティングします。

  1. +ポリシーの追加」をクリックします。[レーン カナリアリリース ポリシーの追加] パネルで、[ポリシー名]、[レーン グループ]、および[レーン] を指定し、「OK」をクリックします。

  2. 作成済みポリシーを、[ポリシーの選択] ドロップダウンリストから選択してください。

パラメーター説明
レーングループ既存のレーングループを選択します。作成するには、「レーングループの作成」をご参照ください。
レーン既存のレーンを選択します。作成するには、「レーンの作成」をご参照ください。
説明

レーンは、トラフィックルーティングのために一連のアプリケーションインスタンスを分離します。このルーティング戦略を使用する前に、レーングループとレーンを設定してください。

リリースの監視と推進

カナリーバッチがデプロイされると、EDAS はデプロイの進捗とステータスを [Upgrade History] ページに表示します。

  1. トラフィックが期待どおりに分散されていることを確認します。詳細については、「カナリアトラフィックの監視」をご参照ください。

  2. カナリアインスタンスが正常な場合は、[Change List] ページに移動し、[Start The Next Batch] をクリックして、リリースを後続のバッチに適用します。

  3. すべてのバッチが完了するまで繰り返します。

リリースのロールバック

カナリア検証中に問題が発生した場合:

  1. [変更リスト]」ページで、右上隅の「[ロールバック]」をクリックします。

  2. 確認ダイアログボックスで、[OK] をクリックします。

リリースの検証

すべてのバッチが完了した後、アプリケーションが新しいバージョンを実行していることを確認します。

  1. アプリケーションの [アプリケーションの概要] ページに移動します。

  2. [デプロイメント仕様] セクションで、デプロイパッケージバージョンが新しくデプロイされたバージョンと一致することを確認します。