多数のインスタンスにデプロイされているアプリケーション、または複雑なサービスアーキテクチャを持つアプリケーションを、複数のフェーズでリリースできます。アプリケーションは、各フェーズで少数のインスタンスでのみ更新されます。段階的リリースは、すべてのインスタンスでアプリケーションが更新されると完了します。このトピックでは、Enterprise Distributed Application Service(EDAS)コンソールでアプリケーションの段階的リリースを実装する方法について説明します。
概要
段階的リリース中は、アプリケーションは各フェーズで少数のインスタンスでのみ更新されます。段階的リリース中にエラーが発生した場合、プロセスを終了し、アプリケーションをロールバックできます。エラーが修正された後、アプリケーションを再度段階的にリリースできます。
Kubernetesクラスター内のアプリケーションが複数のフェーズでリリースされる場合、アプリケーションのインスタンスは各フェーズに均等に割り当てられます。インスタンスを均等に割り当てることができない場合、前のフェーズに割り当てられるインスタンスの数は、後のフェーズに割り当てられるインスタンスの数よりも少なくなります。
シナリオ
たとえば、アプリケーションが10個のインスタンスにデプロイされており、アプリケーションのバージョンをすべてのインスタンスでV1からV2に更新する必要があるとします。
次の図は、特定のポリシーに基づいて、3つのフェーズでアプリケーションがインスタンスにリリースされる方法を示しています。

使用上の注意
Kubernetesクラスター内のアプリケーションを複数のフェーズでリリースする場合、アプリケーションリリース用にDeploymentが作成されます。
手順
にログインします。
左側のナビゲーションペインで、 を選択します。トップナビゲーションバーで、リージョンを選択します。[アプリケーション] ページの上部にある [マイクロサービス名前空間] ドロップダウンリストからマイクロサービス名前空間を選択します。次に、管理するアプリケーションの名前をクリックします。
[アプリケーションの概要] ページの右上隅にある を選択します。
段階的リリース[デプロイモードの選択] ページの デプロイの開始 セクションで、右上隅にある をクリックします。
[段階的リリース] ページで、新しいバージョンのアプリケーションデプロイパッケージをアップロードします。
パラメーター
説明
アプリケーションランタイム環境
アプリケーションのランタイム環境を指定します。デフォルト値:標準javaアプリケーションランタイム環境。
Java環境
アプリケーションのJava環境を指定します。有効な値:Open JDK 8 [最新バージョン: 1.8.0_191]、Open JDK 7、Open JDK 17、Open JDK 11、JDK 8、JDK 7、Dragonwell 8、Dragonwell 17、Dragonwell 11。
現在の環境
アプリケーションの現在のランタイム環境が表示されます。現在のランタイム環境は、JARパッケージまたはWARパッケージを使用してアプリケーションがデプロイされている場合にのみ表示されます。EDASは、アプリケーションのJava環境またはランタイム環境を最新バージョンに自動的に更新します。
ファイルアップロード方法
ファイルのアップロード方法を指定します。有効な値:JARパッケージのアップロード および JARパッケージのアドレス。
説明指定するファイルアップロード方法は、アプリケーションのデプロイに使用するファイルアップロード方法と同じである必要があります。JARパッケージ、WARパッケージ、およびイメージがサポートされています。この例では、JARパッケージが使用されています。
JARパッケージのアップロード
[ファイルアップロード方法] パラメーターを [JARパッケージのアップロード] に設定した場合は、[クリックしてアップロード] をクリックしてJARパッケージをアップロードします。
JARパッケージのアドレス
[ファイルアップロード方法] パラメーターを [JARパッケージのアドレス] に設定した場合は、JARパッケージのURLを入力します。
説明署名付きのObject Storage Service(OSS)オブジェクトのURLを入力すると、アプリケーションを段階的にリリースするときに、EDASはロールバックやスケールアウトなどの後続の操作のためにオブジェクトをキャッシュします。
コンテナーレジストリリポジトリタイプ
説明[コンテナーレジストリリポジトリタイプ] パラメーターは、ACKクラスターにJava、Tomcat、またはEDAS-Container(HSF)アプリケーションをデプロイする場合にのみ使用できます。 ACK Serverless(ASK)クラスターにアプリケーションをデプロイする場合は、このパラメーターは使用できません。
aliyun-acr-credential-helperコンポーネントをインストールする必要があります。詳細については、「aliyun-acr-credential-helperコンポーネントを使用してシークレットなしでイメージをプルする」をご参照ください。
Container Registry Enterprise Editionのイメージリポジトリを使用する場合は、VPC経由のアクセスを設定します。詳細については、「VPC経由のアクセスを設定する」をご参照ください。
アプリケーションのイメージビルドタスクはクラスター内で実行され、リソースを消費します。単一イメージビルドタスクのデフォルトのリソース制限は、コアあたり 1 GBです。イメージビルドタスクのリソース制限を調整する方法の詳細については、「イメージビルドのリソース制限を調整するにはどうすればよいですか?」をご参照ください。
Container Registry Personal Edition または Container Registry Enterprise Edition のリポジトリを使用して作成されたイメージを保存する場合、イメージビルドタスクはクラスター内で実行されます。ビルドタスクには、次のスケジューリングアフィニティと容認ルールが適用されます。
EDASは、
edas.image.build=disableラベルが付いたノードにビルドタスクをスケジュールしません。{/* 翻訳不要 */}EDASは、
edas.image.build=enableラベルが付いたノードにビルドタスクを優先的にスケジュールします。ただし、EDASは、edas.image.buildラベルが付いていないノードにもビルドタスクをスケジュールする場合があります。{/* 翻訳不要 */}ビルドタスクは、
key=edas.image.build, effect=NoScheduletaintを持つノードを許容できます。{/* 翻訳不要 */}
説明特定のノードにビルドタスクをスケジュールしたくない場合は、ノードに
edas.image.build=disableラベルを追加します。{/* 翻訳不要 */}ノードをビルドタスクの専用ノードとして使用する場合、ノードに
edas.image.build=enableラベルとkey=edas.image.build, effect=NoScheduletaintを追加できます。これにより、taintを許容しないポッドがノードにスケジュールされるのを防ぎます。{/* 翻訳不要 */}
コンテナーレジストリのリージョン
コンテナーレジストリイメージが存在するリージョンを選択します。このパラメーターは、[コンテナーレジストリリポジトリタイプ] パラメーターを [container Registry Enterprise Edition] に設定した場合にのみ必須です。
コンテナーレジストリ
コンテナーイメージを選択します。このパラメーターは、[コンテナーレジストリリポジトリタイプ] パラメーターを [container Registry Enterprise Edition] に設定した場合にのみ必須です。
イメージリポジトリの名前空間
ドロップダウンリストから、イメージリポジトリが存在するマイクロサービス名前空間を選択します。[+ 名前空間の作成] をクリックしてマイクロサービス名前空間を作成することもできます。
バージョン
JARデプロイパッケージのバージョン番号。バージョン番号を指定するか、[タイムスタンプをバージョン番号として使用する] をクリックしてバージョン番号を生成します。
タイムゾーン
アプリケーションのタイムゾーン。指定されたリージョンのタイムゾーンをUTCで指定します。
単一ポッドのリソースクォータ
ポッドに予約するCPU、メモリ、および一時ストレージ。制限を指定する場合は、数値を入力します。デフォルト値:0。値 0 は、制限が課されないことを指定します。CPU、メモリ、および一時ストレージの最大または最小クォータは、クラスターのパフォーマンスによって異なります。
[リリースポリシー] セクションのパラメーターを設定します。

パラメーター
説明
リリースバッチ
アプリケーションがインスタンスにリリースされるフェーズの数。
バッチモード
説明[バッチモード] パラメーターは、[リリースバッチ] パラメーターを 1 より大きい値に設定した場合にのみ表示されます。
有効な値:自動 および 手動。
自動:システムは、[間隔] パラメーターで指定された間隔で、アプリケーションを自動的に段階的にリリースします。[間隔] パラメーターは、フェーズがリリースされる間隔を指定します。単位:分。
手動:次のフェーズのリリースを手動でトリガーする必要があります。
バッチ間のデプロイ間隔
インスタンスの数が 1 より大きい場合に、アプリケーションが各フェーズのインスタンスにデプロイされる間隔を指定します。単位:秒。
(オプション) [スケジューリングルール]、[起動コマンド]、[環境変数]、[永続ストレージ]、[ローカルストレージ]、[アプリケーションライフサイクル管理]、[ログ収集設定] セクションのパラメーターなど、ビジネス要件に基づいて詳細設定を行います。詳細については、「詳細設定」をご参照ください。
パラメーターを設定した後、[OK] をクリックします。
結果を確認する
アプリケーションの [変更リスト] ページで、段階的リリースのステータスと、[説明] パラメーターの右側にある [バージョン] パラメーターの値を表示します。すべてのフェーズが [成功] 状態であり、[バージョン] パラメーターの値がV2に変更されている場合、段階的リリースは成功です。
アプリケーションをロールバックする
段階的リリース中に、1つ以上のインスタンスでアプリケーションが新しいバージョンに更新されない場合、段階的リリースは [実行中] 状態になります。アプリケーションを更新するときに、最初のフェーズのアプリケーションインスタンスが応答を停止した場合は、[変更リスト] ページに移動し、[ロールバック] をクリックして、インスタンス上のアプリケーションを以前のバージョンのデプロイパッケージと設定にロールバックできます。
段階的リリース中にエラーが発生する場合があります。エラーのトラブルシューティング方法の詳細については、「変更プロセスでの問題のトラブルシューティング方法」をご参照ください。
デプロイパッケージの利用不可やヘルスチェックの失敗などのエラーにより、アプリケーションの更新が失敗する可能性があります。現在のアプリケーションの更新は自動的に終了し、アプリケーションはロールバックされます。
更新中、単一フェーズの最大タイムアウト期間は 30 分です。タイムアウトエラーのために更新プロセスが中断された場合は、[変更リスト] ページに移動してプロセスを終了し、アプリケーションをロールバックする必要があります。