Despliegue aplicaciones en Serverless App Engine (SAE) a partir de código o imágenes de contenedor. SAE gestiona los recursos de cómputo por usted y es compatible con el escalado automático basado en tráfico y el despliegue multizona.
Descripción general de la solución
En este tutorial desplegará un conjunto de aplicaciones de microservicios que se registran entre sí, invocan métodos entre servicios y reciben tráfico desde internet. A continuación se muestra un diagrama de la arquitectura de ejemplo.
Este tutorial utiliza un microservicio Java como ejemplo, pero SAE es compatible con cualquier lenguaje o arquitectura : sitios web estáticos , aplicaciones front-end y back-end , aplicaciones monolíticas y aplicaciones de microservicios .
En este tutorial, usted:
Desplegará las aplicaciones: desplace las aplicaciones proveedor y consumidora con imágenes de ejemplo. El servicio Nacos integrado en SAE se encarga del registro y descubrimiento de servicios, lo que permite que la aplicación consumidora invoque a la proveedora.
Accederá a la aplicación desde internet: configure un endpoint público para la aplicación consumidora.
Requisitos previos
Procedimiento
SAE admite varios métodos de despliegue. Elija la consola o saectl (compatible con kubectl) para completar este tutorial.
Consola
1. Despliegue las aplicaciones
-
Despliegue la aplicación proveedora: inicie sesión en la consola de SAE. Vaya a . Seleccione una región (este tutorial usa China (Hangzhou)). Haga clic en Create Application, configure los parámetros a continuación y haga clic en Create Application Now para omitir Advanced Settings.
Si no aparece en el panel de navegación, vaya a .
Si el sistema le solicita elegir una edición, seleccione Standard Edition . Las ediciones Lightweight Edition y Professional Edition están en fase beta solo por invitación. Las diferencias entre ediciones no afectan este tutorial.
Introduzca un Application Name personalizado, por ejemplo,
provider.Establezca Namespace Type en
System-created. Esta opción usa el namespace predeterminado y aprovisiona automáticamente los recursos de red (VPC, vSwitch y security group).Establezca Deployment Method en
Deploy Using Image. Haga clic en Set Image. En la pestaña Demo Image, seleccione Microservice Application - Provider con la Image Versionmicroservice-java-provider-v1.0y luego haga clic en OK.En Capacity Settings, establezca la Instance Specification y el Number of Instances de su aplicación.
-
Despliegue la aplicación consumidora: repita los pasos anteriores con los siguientes cambios.
Introduzca un Application Name personalizado, por ejemplo,
consumer.Cuando configure la imagen con Set Image, busque Microservice Application - Consumer y establezca Image Version en
microservice-java-consumer-v1.0.
-
Compruebe el resultado del despliegue: espere aproximadamente un minuto a que finalice el proceso.
Consulte las aplicaciones en la página Application List. Haga clic en una aplicación para abrir sus detalles.
Vaya a Basic Information en el panel de navegación. En la pestaña Instance List, consulte las instancias de la aplicación.
2. Habilite el acceso público
Vincule una instancia CLB orientada a internet a la aplicación consumidora para habilitar el acceso público.
-
Vincule una instancia CLB orientada a internet a la aplicación consumidora: en la página de detalles de la aplicación consumidora, vaya a la pestaña Application Information. En Application Access Settings, seleccione CLB-based Access. Haga clic en Add internet-facing CLB, configure los parámetros a continuación y haga clic en OK.
En CLB Instance, seleccione Create CLB Instance.
En la pestaña HTTP Protocol, establezca HTTP Port en
80y el container port en18082.
-
Compruebe el resultado: después de que SAE cree y vincule la instancia CLB, la consola muestra el endpoint público de la aplicación.
Abra
http://<public_endpoint>/consumer-echo/helloen su navegador y reemplace<public_endpoint>por el valor real.En la página , consulte la topología de llamadas entre las aplicaciones consumidora y proveedora.
3. Limpie los recursos
Elimine los recursos creados en este tutorial para evitar cargos innecesarios.
-
Elimine las aplicaciones: en la página de detalles de cada aplicación, vaya a y siga las instrucciones.
La instancia CLB que creó SAE se libera automáticamente cuando elimina la aplicación.
-
(Opcional) Elimine los recursos de red: durante el despliegue, SAE creó automáticamente una VPC, un vSwitch y un security group.
Consulte la VPC: vaya a y haga clic en default. En Basic Information, haga clic en el enlace de la VPC para abrir su página de detalles.
Consulte el vSwitch y el security group: en la pestaña Resource Management de la VPC, haga clic en los enlaces hacia sus páginas de detalles.
Elimine los recursos desde sus respectivas páginas de detalles.
Herramienta saectl
1. Instale y configure saectl
Instale saectl y configure las credenciales de su cuenta de Alibaba Cloud. Para más información, consulte Install and configure saectl.
2. Despliegue las aplicaciones
-
Cree los archivos de configuración de recursos: cree los siguientes archivos en el mismo directorio. Nota: reemplace
image: ...cn-hangzhou...con su región de despliegue.-
El archivo
deployment-provider.yamlconfigura la aplicación proveedora:apiVersion: apps/v1 kind: Deployment metadata: annotations: sae.aliyun.com/new-sae-version: std # Select the application edition. 'std' indicates Standard Edition. The Lightweight and Professional editions are in invite-only beta. This selection does not affect the tutorial. name: provider # Customizable application name. namespace: default # Select the system-created default namespace, which automatically creates and associates network resources like VPCs, vSwitches, and security groups. spec: replicas: 2 # Number of application instances. selector: matchLabels: sae.aliyun.com/app-name: provider # Must be the same as the application name defined in metadata. template: metadata: labels: sae.aliyun.com/app-name: provider # Must be the same as the application name defined in metadata. spec: containers: - name: main # We recommend that you name the container 'main' to avoid conflicts. image: registry.cn-hangzhou.aliyuncs.com/sae-serverless-demo/sae-demo:microservice-java-provider-v1.0 # The sample image for the provider application. Replace cn-hangzhou with your deployment region. resources: # Specification for a single application instance. 'limits' and 'requests' must have the same configuration. limits: cpu: "2" memory: 4Gi requests: cpu: "2" memory: 4Gi -
El archivo
deployment-consumer.yamlconfigura la aplicación consumidora:apiVersion: apps/v1 kind: Deployment metadata: annotations: sae.aliyun.com/new-sae-version: std # Select the application edition. 'std' indicates Standard Edition. The Lightweight and Professional editions are in invite-only beta. This selection does not affect the tutorial. name: consumer # Customizable application name. namespace: default # Select the system-created default namespace, which automatically creates and associates network resources like VPCs, vSwitches, and security groups. spec: replicas: 2 # Number of application instances. selector: matchLabels: sae.aliyun.com/app-name: consumer # Must be the same as the application name defined in metadata. template: metadata: labels: sae.aliyun.com/app-name: consumer # Must be the same as the application name defined in metadata. spec: containers: - name: main # We recommend that you name the container 'main' to avoid conflicts. image: registry.cn-hangzhou.aliyuncs.com/sae-serverless-demo/sae-demo:microservice-java-consumer-v1.0 # The sample image for the consumer application. Replace cn-hangzhou with your deployment region. resources: # Specification for a single application instance. 'limits' and 'requests' must have the same configuration. limits: cpu: "2" memory: 4Gi requests: cpu: "2" memory: 4Gi
-
Despliegue las aplicaciones: ejecute
saectl apply -f deployment-provider.yaml -f deployment-consumer.yamldesde el directorio que contiene los archivos de configuración.-
Compruebe el resultado:
-
Consulte las aplicaciones: ejecute
saectl get deployments -n default. La bandera-n defaultespecifica el namespace predeterminado. En la salida:El valor
STATERUNNINGindica que la aplicación se está ejecutando.PUBLISHINGsignifica que el despliegue está en curso.El campo
READYmuestran/m, que representanumber of ready instances / desired number of instances.
-
Consulte las instancias de la aplicación: ejecute
saectl get pods -n default. En la salida:El valor
STATUSRUNNINGindica que el contenedor se ejecuta correctamente.ContainerCreatingsignifica que el contenedor se está creando.El campo
READYmuestran/m, que representanumber of ready containers / total number of containers.
-
3. Habilite el acceso público
Vincule una instancia CLB orientada a internet a la aplicación consumidora para habilitar el acceso público.
-
Cree un archivo de configuración de recursos: cree un archivo
svc.yamlpara configurar un Service que exponga la aplicación consumidora a internet mediante una instancia CLB orientada a internet:apiVersion: v1 kind: Service metadata: annotations: sae.aliyun.com/loadbalancer-address-type: internet # Address type. 'internet' for public and 'intranet' for private. name: internet-consumer # Fixed format: ${address-type}-${app-name} spec: ports: - name: port-80 # Fixed format: port-${external-port} port: 80 protocol: HTTP targetPort: 18082 # Container port of the consumer application. selector: sae.aliyun.com/app-name: consumer # Application name. type: LoadBalancer Despliegue el servicio: ejecute
saectl apply -f svc.yamldesde el directorio que contiene el archivo de configuración.-
Compruebe el resultado:
-
Consulte el servicio: ejecute
saectl get services -n default. En la salida:El campo
EXTERNAL-IPmuestra la dirección IP pública.<pending>indica que el servicio aún se está creando.El campo
PORT(S)muestra el puerto de acceso configurado.
Acceda a la aplicación desde internet: ejecute
curl http://<public_endpoint>:<access_port>/consumer-echo/helloy reemplace<public_endpoint>y<access_port>por los valores reales. La salida confirma que la aplicación consumidora invoca a la proveedora.
-
4. Limpie los recursos
Elimine los recursos creados en este tutorial para evitar cargos innecesarios.
Elimine las aplicaciones: ejecute saectl delete -f deployment-provider.yaml -f deployment-consumer.yaml.
La instancia CLB que creó SAE se libera automáticamente cuando elimina la aplicación.
Siguientes pasos
-
Para desplegar sus propias aplicaciones, SAE admite los siguientes métodos:
Deploy an application from an image (Recommended): empaquete su aplicación en una imagen, envíela a un repositorio de imágenes y despliéguela en SAE.
Deploy an application from a code package: SAE proporciona runtimes para versiones específicas de Java, PHP, Python y .NET Core. Create a code package that meets SAE requirements y despliéguelo directamente.
-
Además de SAE's built-in Nacos, utilizado en este tutorial, SAE admite otros métodos de comunicación entre aplicaciones:
Use an MSE Nacos registry (Recommended): un registro gestionado con alto rendimiento, escalabilidad y disponibilidad. No requiere alojamiento propio.
Use a self-managed service registry: use su registro existente (Nacos, ZooKeeper, etc.) con SAE. Asegúrese de que exista conectividad de red y configure la dirección del registro en el código de su aplicación.
Configure application service access based on Kubernetes Service: asigne un nombre de dominio fijo dentro del clúster de SAE para la comunicación entre aplicaciones.
Además de binding a CLB instance, puede bind an NLB instance o configure a gateway route para el acceso entrante. Para el acceso saliente a recursos externos, configure a NAT gateway o bind an EIP to instances.
Use custom namespaces para aislar entornos (desarrollo, pruebas, producción). Cada namespace se vincula a una VPC. Seleccione vSwitches en distintas zonas de disponibilidad para desplegar en varias zonas.
Escale sus aplicaciones mediante adjusting instance count y instance specification, o configure auto scaling policies según el tráfico y el uso de recursos. Reduzca costos con enabling idle mode.