CI/CD パイプラインやプロビジョニングスクリプトなどから Enterprise Distributed Application Service (EDAS) へのアプリケーションデプロイメントを自動化する必要がある場合、Alibaba Cloud CLI を使用すると、ターミナルを離れることなく、名前空間、クラスター、アプリケーションの作成、そして WAR または JAR パッケージのデプロイが可能です。
EDAS は、SDK と API を通じて、Spring Cloud、Dubbo、および High-speed Service Framework (HSF) アプリケーションをサポートしています。
ワークフローの概要
Elastic Compute Service (ECS) クラスターにアプリケーションをデプロイするには、主に次の API オペレーションが必要です。
| ステップ | API | 目的 |
|---|---|---|
| 1 | InsertOrUpdateRegion | マイクロサービス名前空間 (サービスを論理的に隔離する境界) を作成します |
| 2 | InsertCluster | ECS クラスター (アプリケーションをホストするリソースグループ) を作成します |
| 3 | TransformClusterMember | 既存の ECS インスタンスをクラスターにインポートします |
| 4 | InsertApplication | EDAS にアプリケーションを登録します |
| 5 | DeployApplication | WAR または JAR パッケージを Object Storage Service (OSS) にアップロードし、デプロイメントをトリガーします |
以下のセクションでは、各ステップについて説明します。
前提条件
開始する前に、以下を確認してください。
実行中の ECS インスタンス。詳細については、「ECS インスタンスの作成」をご参照ください。
ご利用のオペレーティングシステムに Alibaba Cloud CLI がインストールされていること。
デプロイメントパッケージを OSS にアップロードするための ossutil がインストールされていること。
Alibaba Cloud CLI の設定
aliyun configure を実行して、AccessKey ペア、デフォルトリージョン、出力フォーマットを設定します。
aliyun configure
Configuring profile 'default' ...
Aliyun Access Key ID [None]: <your-access-key-id>
Aliyun Access Key Secret [None]: <your-access-key-secret>
Default Region Id [None]: cn-hangzhou
Default output format [json]: json
Default Language [zh]: zh| プレースホルダー | 説明 |
|---|---|
<your-access-key-id> | ご利用の AccessKey ID |
<your-access-key-secret> | ご利用の AccessKey Secret |
設定が完了すると、CLI に Configure Done!!! というバナーが表示されます。
ECS クラスターでのアプリケーションの作成
以下の手順では、ワークフローの概要で説明した最初の 4 つの API 呼び出し (名前空間の作成、クラスターの作成、ECS インスタンスのインポート、アプリケーションの登録) を実行します。
コマンドを実行する前に、プレースホルダー変数を実際の値に置き換えてください。
| 変数 | 説明 | 例 |
|---|---|---|
REGION | アプリケーションがデプロイされるリージョン | cn-beijing |
ECS_ID | インポートする ECS インスタンスの ID | i-2z************b6 |
VPC_ID | ECS インスタンスが属する Virtual Private Cloud (VPC) の ID | vpc-t**********c |
NAMESPACE | マイクロサービス名前空間の名前 (存在しない場合は自動的に作成されます) | myNamespace |
CLUSTER_NAME | ECS クラスターの名前 (存在しない場合は自動的に作成されます) | myCluster |
APP_NAME | アプリケーションの名前 | myApp |
変数の設定
REGION="cn-beijing"
ECS_ID="i-2z************b6"
VPC_ID="vpc-t**********c"
NAMESPACE="myNamespace"
CLUSTER_NAME="myCluster"
APP_NAME="myApp"ステップ 1:マイクロサービス名前空間の作成
タグ <region>:<namespace> を使用して名前空間を作成します。
aliyun edas InsertOrUpdateRegion \
--RegionTag "$REGION:$NAMESPACE" \
--RegionName "$NAMESPACE" \
--region "$REGION" \
--endpoint "edas.cn-beijing.aliyuncs.com" >> /dev/nullステップ 2:ECS クラスターの作成
VPC モードの ECS クラスター (ClusterType 2、NetworkMode 2) を作成し、クラスター ID を取得します。
CLUSTER_ID=$(aliyun edas InsertCluster \
--ClusterName "$CLUSTER_NAME" \
--ClusterType 2 \
--NetworkMode 2 \
--VpcId "$VPC_ID" \
--logicalRegionId "$REGION:$NAMESPACE" \
--region "$REGION" \
--endpoint "edas.cn-beijing.aliyuncs.com" \
| sed -E 's/.*"ClusterId":"([a-z0-9-]*)".*/\1/g')
echo "Cluster ID: $CLUSTER_ID"ステップ 3:ECS インスタンスのインポート
ECS インスタンスをクラスターにインポートします。このスクリプトは、インスタンスが ECU ID をレポートするまで、最大 300 秒間 ListClusterMembers をポーリングします。
aliyun edas TransformClusterMember \
--InstanceIds "$ECS_ID" \
--TargetClusterId "$CLUSTER_ID" \
--Password Hello1234 >> /dev/null
for i in $(seq 300); do
OUT=$(aliyun edas ListClusterMembers --ClusterId "$CLUSTER_ID" | grep EcuId) && break
sleep 1
done
ECU_ID=$(echo "$OUT" | sed -E 's/.*"EcuId":"([a-z0-9-]*)".*/\1/g')
echo "ECU ID: $ECU_ID"ステップ 4:アプリケーションの作成
BuildPackId 51 とステップ 3 で取得した ECU を使用してアプリケーションを登録します。
APP_ID=$(aliyun edas InsertApplication \
--ApplicationName "$APP_NAME" \
--BuildPackId 51 \
--EcuInfo "$ECU_ID" \
--ClusterId "$CLUSTER_ID" \
--logicalRegionId "$REGION:$NAMESPACE" \
| sed -E 's/.*"AppId":"([a-z0-9-]*)".*/\1/g')
echo "Application created. App ID: $APP_ID"デプロイメントステップのために APP_ID の値を保存します。
アプリケーションのデプロイ
アプリケーションが作成されたら、WAR または JAR パッケージをデプロイします。以下の手順では、パッケージを OSS バケットにアップロードし、非同期デプロイメントリクエストを送信し、デプロイメントが完了するまでポーリングします。
変数
以下の変数を実際の値に置き換えてください。
| 変数 | 説明 | 例 |
|---|---|---|
APP_ID | 前のセクションで取得したアプリケーション ID、または EDAS コンソールから取得したアプリケーション ID | 87a6*********************4d1 |
GROUP_ID | アプリケーションのグループ ID | 54b*********************f27 |
OSS_BUCKET | デプロイメントパッケージ用のパブリック読み取り可能な OSS バケット | eda*****mo |
PACKAGE | WAR または JAR ファイルへのローカルパス | hello-edas.war |
APP_ID="87a6*********************4d1"
GROUP_ID="54b*********************f27"
OSS_BUCKET="eda*****mo"
PACKAGE="hello-edas.war"
VERSION=$(date +%s) # Timestamp-based versionステップ 1:デプロイメントパッケージの OSS へのアップロード
ossutil cp -f "$PACKAGE" "oss://$OSS_BUCKET/$PACKAGE" >> /dev/null
PKG_URL=$(ossutil sign "oss://$OSS_BUCKET/$PACKAGE" | head -1)
echo "Package URL: $PKG_URL"ステップ 2:デプロイメントのトリガー
CO_ID=$(aliyun edas DeployApplication \
--AppId "$APP_ID" \
--PackageVersion "$VERSION" \
--DeployType url \
--WarUrl "$PKG_URL" \
--GroupId "$GROUP_ID" \
| grep '.*"ChangeOrderId":' \
| sed -E 's/.*"ChangeOrderId":\s"([a-z0-9-]*)".*/\1/g')
echo "Change order ID: $CO_ID"ステップ 3:デプロイメント完了の待機
スクリプトは最大 300 秒間 GetChangeOrderInfo をポーリングします。PipelineStatus の値が 2 の場合は成功を示します。
for i in $(seq 300); do
STATUS=$(aliyun edas GetChangeOrderInfo --ChangeOrderId "$CO_ID" \
| grep '.*"PipelineStatus":' \
| sed -E 's/.*"PipelineStatus":\s(.).*/\1/g')
[[ 2 = ${STATUS} ]] && break
sleep 1
done
echo "Deployment complete. Change order ID: $CO_ID"コンソールでの APP_ID と GROUP_ID の確認
作成ステップでこれらの値を取得していない場合は、EDAS コンソールから取得します。
EDAS コンソールにログインします。
左側のナビゲーションウィンドウで、 [アプリケーション管理] > [アプリケーション] を選択し、アプリケーション名をクリックします。
[基本情報] タブの右上隅にある [デプロイ] をクリックします。
[デプロイモードの選択] ページで、 [通常リリース (単一バッチ/複数バッチ)] の横にある [デプロイの開始] をクリックします。
[Maven プラグイン設定の生成] をクリックして、パラメーターの値を表示します。

デプロイメントの確認
デプロイメントスクリプトの完了後、アプリケーションが実行中であることを確認します。
EDAS コンソールにログインします。
左側のナビゲーションウィンドウで、[アプリケーション管理] > [アプリケーション] を選択します。
デプロイされたアプリケーションの名前をクリックし、[基本情報] の横にある [インスタンス情報] タブをクリックします。
デプロイメントは、インスタンスステータスが 正常 を示すときに成功します。
関連ドキュメント
EDAS 開発者ツールコミュニティ
EDAS の開発者ツールの使用に関してご質問やご提案がある場合は、DingTalk で ID 34556175 を検索して DingTalk グループにご参加ください。