Déployez des applications sur Serverless App Engine (SAE) à partir de code ou d'images de conteneur. SAE gère les ressources de calcul pour vous et prend en charge la mise à l'échelle automatique basée sur le trafic ainsi que le déploiement multizone.
Présentation de la solution
Vous allez déployer un ensemble d'applications de microservices qui s'enregistrent mutuellement, appellent des méthodes entre services et traitent le trafic provenant d'Internet. Le diagramme suivant illustre l'architecture de l'exemple.
Ce tutoriel utilise un microservice Java comme exemple, mais SAE prend en charge n'importe quel langage ou architecture : sites web statiques , applications front-end et back-end , applications monolithiques et applications de microservices .
Dans ce tutoriel, vous allez :
Déployer des applications : déployez des applications fournisseur et consommateur avec des images d'exemple. Le Nacos intégré à SAE gère l'enregistrement et la découverte des services, permettant au consommateur d'appeler le fournisseur.
Accéder à l'application depuis Internet : configurez un endpoint public pour l'application consommateur.
Prérequis
Procédure
SAE prend en charge plusieurs méthodes de déploiement. Choisissez la console ou saectl (compatible avec kubectl) pour suivre ce tutoriel.
Console
1. Déployer les applications
-
Déployez l'application fournisseur : connectez-vous à la console SAE. Sélectionnez . Choisissez une région (ce tutoriel utilise China (Hangzhou)). Cliquez sur Create Application, configurez les paramètres suivants, puis cliquez sur Create Application Now pour ignorer les Advanced Settings.
Si ne figure pas dans le volet de navigation, sélectionnez .
Si vous êtes invité à sélectionner une édition, choisissez Standard Edition . Les éditions Lightweight Edition et Professional Edition sont en bêta sur invitation uniquement. Les différences entre les éditions n'affectent pas ce tutoriel.
Saisissez un Application Name personnalisé, par exemple
provider.Définissez Namespace Type sur
System-created. Cela utilise le namespace par défaut et provisionne automatiquement les ressources réseau (VPC, vSwitch et groupe de sécurité).Définissez Deployment Method sur
Deploy Using Image. Cliquez sur Set Image. Dans l'onglet Demo Image, sélectionnez Microservice Application - Provider avec la Image Versionmicroservice-java-provider-v1.0, puis cliquez sur OK.Dans Capacity Settings, définissez la Instance Specification et le Number of Instances pour votre application.
-
Déployez l'application consommateur : répétez les étapes précédentes avec les modifications suivantes.
Saisissez un Application Name personnalisé, par exemple
consumer.Lorsque vous Set Image, recherchez Microservice Application - Consumer et définissez la Image Version sur
microservice-java-consumer-v1.0.
-
Vérifiez le résultat du déploiement : attendez environ une minute que le déploiement soit terminé.
Consultez les applications sur la page Application List. Cliquez sur une application pour ouvrir ses détails.
Sélectionnez Basic Information dans le volet de navigation. Dans l'onglet Instance List, consultez les instances de l'application.
2. Activer l'accès public
Associez une instance CLB orientée Internet à l'application consommateur pour permettre l'accès public.
-
Associez une instance CLB orientée Internet à l'application consommateur : sur la page des détails de l'application consommateur, accédez à l'onglet Application Information. Dans Application Access Settings, sélectionnez CLB-based Access. Cliquez sur Add internet-facing CLB, configurez les paramètres suivants, puis cliquez sur OK.
Pour CLB Instance, sélectionnez Create CLB Instance.
Dans l'onglet HTTP Protocol, définissez HTTP Port sur
80et container port sur18082.
-
Vérifiez le résultat : après que SAE a créé et associé l'instance CLB, la console affiche l'endpoint public de l'application.
Ouvrez
http://<public_endpoint>/consumer-echo/hellodans votre navigateur, en remplaçant<public_endpoint>par la valeur réelle.Sur la page , consultez la topologie des appels entre les applications consommateur et fournisseur.
3. Nettoyer les ressources
Supprimez les ressources créées dans ce tutoriel pour éviter des frais inutiles.
-
Supprimez les applications : sur la page des détails de chaque application, sélectionnez et suivez les instructions.
L'instance CLB créée par SAE est automatiquement libérée lorsque vous supprimez l'application.
-
(Facultatif) Supprimez les ressources réseau : SAE a automatiquement créé un VPC, un vSwitch et un groupe de sécurité lors du déploiement.
Consultez le VPC : sélectionnez et cliquez sur default. Dans Basic Information, cliquez sur le lien VPC pour ouvrir sa page de détails.
Consultez le vSwitch et le groupe de sécurité : dans l'onglet Resource Management du VPC, cliquez sur les liens vers leurs pages de détails respectives.
Supprimez les ressources depuis leurs pages de détails respectives.
Outil saectl
1. Installer et configurer saectl
Installez saectl et configurez les identifiants de votre compte Alibaba Cloud. Pour plus d'informations, consultez Installer et configurer saectl.
2. Déployer les applications
-
Créez les fichiers de configuration des ressources : créez les fichiers suivants dans le même répertoire. Remarque : remplacez
image: ...cn-hangzhou...par votre région de déploiement.-
deployment-provider.yamlconfigure l'application fournisseur :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 -
deployment-consumer.yamlconfigure l'application consommateur :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
-
Déployez les applications : exécutez
saectl apply -f deployment-provider.yaml -f deployment-consumer.yamldepuis le répertoire contenant les fichiers de configuration.-
Vérifiez le résultat :
-
Consultez les applications : exécutez
saectl get deployments -n default. L'indicateur-n defaultspécifie le namespace par défaut. Dans la sortie :STATERUNNINGsignifie que l'application est en cours d'exécution.PUBLISHINGsignifie que le déploiement est en cours.Le champ
READYaffichen/m, ce qui représentenombre d'instances prêtes / nombre d'instances souhaité.
-
Consultez les instances d'application : exécutez
saectl get pods -n default. Dans la sortie :STATUSRUNNINGsignifie que le conteneur fonctionne normalement.ContainerCreatingsignifie que le conteneur est en cours de création.Le champ
READYaffichen/m, ce qui représentenombre de conteneurs prêts / nombre total de conteneurs.
-
3. Activer l'accès public
Associez une instance CLB orientée Internet à l'application consommateur pour permettre l'accès public.
-
Créez un fichier de configuration des ressources : créez un fichier
svc.yamlpour configurer un Service qui expose l'application consommateur à Internet via un CLB orienté 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 Déployez le service : exécutez
saectl apply -f svc.yamldepuis le répertoire contenant le fichier de configuration.-
Vérifiez le résultat :
-
Consultez le service : exécutez
saectl get services -n default. Dans la sortie :EXTERNAL-IPaffiche l'adresse IP publique.<pending>signifie que le service est encore en cours de création.PORT(S)affiche le port d'accès configuré.
Accédez à l'application depuis Internet : exécutez
curl http://<public_endpoint>:<access_port>/consumer-echo/hello, en remplaçant<public_endpoint>et<access_port>par les valeurs réelles. La sortie confirme l'appel du consommateur au fournisseur.
-
4. Nettoyer les ressources
Supprimez les ressources créées dans ce tutoriel pour éviter des frais inutiles.
Supprimez les applications : exécutez saectl delete -f deployment-provider.yaml -f deployment-consumer.yaml.
L'instance CLB créée par SAE est automatiquement libérée lorsque vous supprimez l'application.
Étapes suivantes
-
Pour déployer vos propres applications, SAE prend en charge les méthodes suivantes :
Déployer une application à partir d'une image (recommandé) : empaquetez votre application dans une image, poussez-la vers un référentiel d'images et déployez-la sur SAE.
Déployer une application à partir d'un package de code : SAE fournit des environnements d'exécution pour des versions spécifiques de Java, PHP, Python et .NET Core. Créez un package de code conforme aux exigences de SAE et déployez-le directement.
-
SAE prend en charge d'autres méthodes de communication inter-applications en plus du Nacos intégré à SAE utilisé dans ce tutoriel :
Utiliser un registre MSE Nacos (recommandé) : un registre géré offrant des performances élevées, une évolutivité et une disponibilité accrues. Aucun auto-hébergement requis.
Utiliser un registre de services auto-géré : utilisez votre registre existant (Nacos, ZooKeeper, etc.) avec SAE. Assurez-vous de la connectivité réseau et configurez l'adresse du registre dans le code de votre application.
Configurer l'accès aux services d'application basé sur Kubernetes Service : attribuez un nom de domaine fixe au sein du cluster SAE pour l'accès inter-applications.
En plus d'associer une instance CLB, vous pouvez associer une instance NLB ou configurer une route de passerelle pour l'accès entrant. Pour l'accès sortant aux ressources externes, configurez une passerelle NAT ou associez une EIP aux instances.
Utilisez des namespaces personnalisés pour isoler les environnements (développement, test, production). Chaque namespace est lié à un VPC. Sélectionnez des vSwitches dans différentes zones de disponibilité pour déployer sur plusieurs zones.
Mettez à l'échelle les applications en ajustant le nombre d'instances et la spécification des instances, ou configurez des politiques de mise à l'échelle automatique basées sur le trafic et l'utilisation des ressources. Réduisez les coûts en activant le mode inactif.