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

Enterprise Distributed Application Service:更新中の Kubernetes クラスター内のアプリケーションをロールバックするための API 操作の呼び出し

最終更新日:Jan 07, 2025

このトピックでは、Enterprise Distributed Application Service (EDAS) SDK for Java を使用して、更新中の Kubernetes クラスター内のアプリケーションをロールバックするための API 操作を呼び出す方法について説明します。

前提条件

変更オーダー ID の例: 47e2b863-adc8-4a0e-ac23-8361b95a****

更新を開始したときに ChangeOrderId パラメーターの値を保存した場合は、ListRecentChangeOrder オペレーションを呼び出す必要はありません。

サンプルコード

次のサンプルコードは、更新中に EDAS Kubernetes クラスター内のアプリケーションをロールバックする方法の例を示しています。

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.edas.model.v20170801.AbortAndRollbackChangeOrderRequest;
import com.aliyuncs.edas.model.v20170801.AbortAndRollbackChangeOrderResponse;

public class AbortAndRollbackChangeOrder {

    public static void main(String[] args)  {
        // Alibaba Cloud アカウントの AccessKey ペアは、すべての API 操作に対する権限を持っています。EDAS で操作を実行するためにこれらの資格情報を使用することは、リスクの高い操作です。API 操作の呼び出しや日常的な O&M の実行には、Resource Access Management (RAM) ユーザーを使用することをお勧めします。RAM ユーザーを作成するには、RAM コンソールにログオンします。
        // このサンプルコードでは、AccessKey ID と AccessKey シークレットは環境変数に含まれています。AccessKey ID と AccessKey シークレットは、構成ファイルに保存できます。
        // キーの漏洩を防ぐため、AccessKey ID と AccessKey シークレットをコードに含めないことをお勧めします。
        String aliyun_user_ak = System.getenv("ACCESS_KEY_ID");
        String aliyun_user_sk = System.getenv("ACCESS_KEY_SECRET");
        // ロールバックするアプリケーションが存在するリージョンの ID。
        String region_id = "cn-hangzhou";

        DefaultProfile defaultProfile = DefaultProfile.getProfile(region_id, aliyun_user_ak, aliyun_user_sk);
        DefaultAcsClient client = new DefaultAcsClient(defaultProfile);

        // API リクエストを開始し、関連パラメーターを構成します。
        AbortAndRollbackChangeOrderRequest request = new AbortAndRollbackChangeOrderRequest();
        // 更新中のアプリケーションの変更オーダー ID。
        request.setChangeOrderId("47e2b863-adc8-4a0e-ac23-8361b95a****");

        try {
            AbortAndRollbackChangeOrderResponse response = client.getAcsResponse(request);
            System.out.println("ChangeOrderId=" + response.getData().getChangeOrderId() + "\nMessage=" + response.getMessage() + "\nTraceId=" + response.getTraceId());
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            e.printStackTrace();
        }
    }
}

サンプルレスポンス:

ChangeOrderId=aef94ee3-3142-4abc-9d7c-57249686****
Message=success
TraceId=210e815316184954351417778d****

サンプルコード

アプリケーションの更新中にロールバックした後、GetChangeOrderInfo オペレーションを呼び出して、アプリケーションの変更の詳細と変更ステータスをクエリできます。特定の API パラメーターについては、GetChangeOrderInfo をご参照ください。

GetChangeOrderInfo オペレーション呼び出し後のサンプルレスポンス:

{
  "Message": "success",
  "RequestId": "92C41E0B-949F-44A2-A386-AECA8909225E",
  "Code": 200,
  "changeOrderInfo": {
    "Status": 2,
    "Desc": "Deployment Method: Phased Release | Version: 2021-04-15 14:01:12 | Package Name: sc-consumer-D-0.0.1-SNAPSHOT.jar",
    "PipelineInfoList": {
      "PipelineInfo": [
        {
          "PipelineStatus": 2,
          "PipelineName": "Batch 1 Change",
           ...... 
           "TaskMessage": "Apply success. <br>application is ready at desired state, version: 22"
            ......
           // サンプルレスポンスは不完全であり、参照用にのみ提供されています。

アプリケーションがロールバックされたかどうかを確認するには、changeOrderInfo.Status パラメーターの値を確認します。

changeOrderInfo.Status パラメーターの有効な値:

  • 0: 準備完了

  • 1: 実行中

  • 2: 成功

  • 3: 失敗

  • 6: 終了

  • 8: 手動段階的リリース中に次のフェーズの手動確認を待機中

  • 9: 自動段階的リリース中に次のフェーズの自動確認を待機中

  • 10: システム例外により失敗

説明

3changeOrderInfo.Status パラメーターで タスクメッセージ の値が返された場合、更新中にアプリケーションのロールバックは失敗します。失敗の原因を特定するには、 パラメーターの値を確認します。問題を解決した後、アプリケーションを再度更新します。