マイクロサービスの新しいバージョンをデプロイする際、全面展開ではすべてのユーザーを潜在的な問題にさらすリスクがあります。カナリアリリースは、まず新しいバージョンを少数のインスタンスにデプロイすることで、このリスクを軽減します。カナリアインスタンスが正常であることを確認した後、新しいバージョンを残りのインスタンスにバッチで昇格させます。
このトピックでは、Enterprise Distributed Application Service (EDAS) コンソールを使用して、Kubernetes クラスター内の Spring Cloud および Dubbo マイクロサービスに対してカナリアリリースを実行する方法について説明します。
仕組み
EDAS におけるカナリアリリースは、次のライフサイクルに従います。
EDAS はカナリアインスタンスグループを作成し、指定した数のインスタンスに新しいバージョンをデプロイします。
設定したルール (コンテンツベースのマッチング、割合ベースの分割、またはレーンベースのルーティング) に基づいて、トラフィックがカナリアグループにルーティングされます。
新しいバージョンが期待どおりに動作することを確認するために、カナリアトラフィックをモニターします。
検証が成功した後、手動で昇格を承認します。これにより、新しいバージョンが残りのインスタンスに1つ以上のバッチでデプロイされます。
問題が発生した場合は、カナリアグループを以前のバージョンにロールバックできます。
カナリアバッチの後続のバッチを開始する前に、手動での承認が必要です。EDAS はカナリアを全面展開に自動的に昇格させません。
制限事項
| アプリケーションタイプ | カナリアリリースサポート |
|---|---|
| High-Speed Service Framework (HSF) | サポートされていません。 |
| Dubbo | 制限なくサポートされています。 |
| Spring Cloud | サポートされています。アプリケーションが Deployment.Metadata.Name または Deployment.Metadata.Uid に依存して機能を構成している場合、カナリアリリースを使用しないでください。そうしないと、カナリアリリース後にアプリケーションのネイティブ機能が異常になる可能性があります。 |
| Ingress アプリケーション | 制限付きでサポートされています。Server Load Balancer (SLB) インスタンスがトラフィックをアプリケーションに直接転送する場合、SLB のトラフィック転送はカナリアリリース ポリシーに従いません。 |
Ingress アプリケーションでカナリアリリースを使用するには、クライアントアプリケーションと複数のレプリカを持つサーバーアプリケーションを作成します。サーバーアプリケーションでカナリアリリースを実行し、SLB インスタンスをクライアントアプリケーションに関連付けて外部トラフィックを処理します。
カナリアリリースの開始
事前準備
以下を確認してください。
EDAS によって管理される Kubernetes クラスターに Spring Cloud または Dubbo アプリケーションがデプロイされていること
EDAS コンソールへのアクセス
(Container Registry Enterprise Edition を使用している場合) クラスターに
aliyun-acr-credential-helperコンポーネントがインストールされていること。詳細については、「シークレットを使用せずにイメージをプルするための aliyun-acr-credential-helper コンポーネントの使用」をご参照ください。(Container Registry Enterprise Edition を使用している場合) イメージリポジトリの VPC アクセスが構成されていること。詳細については、「VPC ACL の構成」をご参照ください。
操作手順
EDAS コンソールにログインします。
左側のナビゲーションウィンドウで、[アプリケーション管理] > [アプリケーション] を選びます。上部のナビゲーションバーで、リージョンを選択します。ページ上部で、[microservices Namespace] ドロップダウンリストから microservices namespace を選択します。
[アプリケーション] ページで、[Kubernetes クラスタ] を [クラスタータイプ] ドロップダウンリストから選択します。カナリアリリースを実行するアプリケーションの名前をクリックします。
[アプリケーション概要] ページの右上隅で、[デプロイ] > [デプロイ] を選択します。[デプロイメントモードの設定] ページで、[カナリアリリース (段階的)] セクションの [デプロイメントの開始] をクリックします。
[カナリアリリース (段階的)] ページで、デプロイメントメソッド、リリース ポリシー、およびカナリアリリースルールを設定し、[OK] をクリックします。以降のセクションでは、各構成エリアについて説明します。
リリースの監視と推進
カナリーバッチがデプロイされると、EDAS はデプロイの進捗とステータスを [Upgrade History] ページに表示します。
トラフィックが期待どおりに分散されていることを確認します。詳細については、「カナリアトラフィックの監視」をご参照ください。
カナリアインスタンスが正常な場合は、[Change List] ページに移動し、[Start The Next Batch] をクリックして、リリースを後続のバッチに適用します。
すべてのバッチが完了するまで繰り返します。
リリースのロールバック
カナリア検証中に問題が発生した場合:
「[変更リスト]」ページで、右上隅の「[ロールバック]」をクリックします。
確認ダイアログボックスで、[OK] をクリックします。
リリースの検証
すべてのバッチが完了した後、アプリケーションが新しいバージョンを実行していることを確認します。
アプリケーションの [アプリケーションの概要] ページに移動します。
[デプロイメント仕様] セクションで、デプロイパッケージバージョンが新しくデプロイされたバージョンと一致することを確認します。