Si necesita automatizar los despliegues de aplicaciones en Enterprise Distributed Application Service (EDAS), por ejemplo, desde un pipeline de CI/CD o un script de aprovisionamiento, Alibaba Cloud CLI le permite crear namespaces, clústeres y aplicaciones. Posteriormente, podrá desplegar paquetes WAR o JAR sin salir de la terminal.
EDAS admite aplicaciones de Spring Cloud, Dubbo y High-speed Service Framework (HSF) a través de sus SDK y API.
Descripción general del flujo de trabajo
El despliegue de una aplicación en un clúster de Elastic Compute Service (ECS) implica las siguientes operaciones principales de la API:
|
Paso |
API |
Propósito |
|
1 |
|
Crear un namespace de microservices, que funciona como límite de aislamiento lógico para sus servicios |
|
2 |
|
Crear un clúster de ECS, es decir, un resource group que aloja sus aplicaciones |
|
3 |
|
Importar una instancia de ECS existente al clúster |
|
4 |
|
Registrar la aplicación en EDAS |
|
5 |
|
Cargar un paquete WAR o JAR en Object Storage Service (OSS) e iniciar el despliegue |
En las siguientes secciones se detalla cada paso.
Requisitos previos
Antes de empezar, asegúrese de contar con lo siguiente:
Una instancia de ECS en ejecución. Para obtener más información, consulte Create an ECS instance
-
Alibaba Cloud CLI instalada para su sistema operativo:
ossutil instalado para cargar paquetes de despliegue en OSS
Configuración de Alibaba Cloud CLI
Ejecute aliyun configure para establecer su par de AccessKey, la región predeterminada y el formato de salida.
Cree o consulte su par de AccessKey en la
del panel de User Management. Si no dispone de uno, póngase en contacto con su administrador.
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
|
Marcador |
Descripción |
|
|
Su AccessKey ID |
|
|
Su AccessKey secret |
Una vez finalizada la configuración, la CLI muestra el mensaje Configure Done!!!.
Creación de una aplicación en un clúster de ECS
Los siguientes pasos abarcan las primeras cuatro llamadas a la API descritas en la descripción general del flujo de trabajo: creación de un namespace, creación de un clúster, importación de una instancia de ECS y registro de una aplicación.
Antes de ejecutar los comandos, reemplace las variables de marcador con sus valores reales:
|
Variable |
Descripción |
Ejemplo |
|
|
Región donde se despliega la aplicación |
|
|
|
ID de la instancia de ECS que se va a importar |
|
|
|
ID de la Virtual Private Cloud (VPC) a la que pertenece la instancia de ECS |
|
|
|
Nombre del namespace de microservices (se crea automáticamente si no existe) |
|
|
|
Nombre del clúster de ECS (se crea automáticamente si no existe) |
|
|
|
Nombre de la aplicación |
|
Establecimiento de las variables
REGION="cn-beijing"
ECS_ID="i-2z************b6"
VPC_ID="vpc-t**********c"
NAMESPACE="myNamespace"
CLUSTER_NAME="myCluster"
APP_NAME="myApp"
Paso 1: Crear un namespace de microservices
Cree el namespace con la etiqueta <region>:<namespace>:
aliyun edas InsertOrUpdateRegion \
--RegionTag "$REGION:$NAMESPACE" \
--RegionName "$NAMESPACE" \
--region "$REGION" \
--endpoint "edas.cn-beijing.aliyuncs.com" >> /dev/null
Paso 2: Crear un clúster de ECS
Cree un clúster de ECS en modo VPC (ClusterType 2, NetworkMode 2) y capture el ID del clúster:
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"
Paso 3: Importar la instancia de ECS
Importe la instancia de ECS al clúster. El script consulta ListClusterMembers durante un máximo de 300 segundos hasta que la instancia reporta su ECU ID:
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"
El proceso de importación puede tardar varios minutos. El bucle realiza una comprobación por segundo durante un máximo de 5 minutos.
Paso 4: Crear la aplicación
Registre la aplicación con BuildPackId 51 y la ECU obtenida en el paso 3:
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"
Guarde el valor de APP_ID para utilizarlo en el paso de despliegue.
Despliegue de la aplicación
Una vez creada la aplicación, despliegue un paquete WAR o JAR. Los siguientes pasos cargan el paquete en un bucket de OSS, envían una solicitud de despliegue asíncrona y consultan el estado hasta que este finaliza.
Variables
Reemplace las siguientes variables con sus valores reales:
|
Variable |
Descripción |
Ejemplo |
|
|
ID de la aplicación obtenido en la sección anterior o desde la consola de EDAS |
|
|
|
ID del grupo de la aplicación |
|
|
|
Bucket de OSS con lectura pública para el paquete de despliegue |
|
|
|
Ruta local al archivo WAR o JAR |
|
APP_ID="87a6*********************4d1"
GROUP_ID="54b*********************f27"
OSS_BUCKET="eda*****mo"
PACKAGE="hello-edas.war"
VERSION=$(date +%s) # Timestamp-based version
Paso 1: Cargar el paquete de despliegue en 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"
Paso 2: Iniciar el despliegue
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"
Paso 3: Esperar a que finalice el despliegue
El script consulta GetChangeOrderInfo durante un máximo de 300 segundos. Un valor de PipelineStatus igual a 2 indica que la operación fue exitosa:
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"
Búsqueda de APP_ID y GROUP_ID en la consola
Si no obtuvo estos valores durante el paso de creación, recupérelos desde la consola de EDAS:
Inicie sesión en la EDAS consoleEDAS console.
En el panel de navegación izquierdo, seleccione Application Management > Applications y haga clic en el nombre de su aplicación.
En la esquina superior derecha de la pestaña Basic Information, haga clic en Deploy.
En la página Select Deployment Mode, haga clic en Start Deployment junto a Regular Release (Single-batch/Multi-batch).
Haga clic en Generate Maven Plug-in Configuration para consultar los valores de los parámetros.

Verificación del despliegue
Cuando finalice el script de despliegue, confirme que la aplicación se está ejecutando correctamente:
Inicie sesión en la EDAS consoleEDAS console.
En el panel de navegación izquierdo, seleccione Application Management > Applications.
Haga clic en el nombre de la aplicación desplegada y luego en la pestaña Instance Information, situada junto a Basic Information.
El despliegue se considera exitoso cuando el estado de la instancia muestra Normal.
Si el despliegue falla, consulte
Error codes that may be returned in a change process
para solucionar problemas.
Véase también
Comunidad de herramientas de desarrollo de EDAS
Si tiene preguntas o sugerencias sobre el uso de herramientas de desarrollo en EDAS, únase al grupo de DingTalk buscando el ID 34556175 en dicha plataforma.