Tous les produits
Search
Centre de documentation

Serverless App Engine:Configure application lifecycle management

Dernière mise à jour :Aug 11, 2026

Si vous maîtrisez Kubernetes et devez exécuter des actions spécifiques avant le démarrage ou l'arrêt des conteneurs de votre application, comme déployer des ressources ou effectuer un arrêt gracieux, configurez la gestion du cycle de vie des applications. Cette rubrique explique comment configurer les paramètres PostStart, PreStop et TerminationGracePeriodSeconds pour vos applications Serverless App Engine (SAE).

Présentation

  • Un hook de pod (ou hook de conteneur), géré par le composant kubelet de Kubernetes, exécute des tâches personnalisées à des étapes clés du cycle de vie d'un conteneur. Ces étapes incluent le moment précédant le démarrage du processus du conteneur (PostStart) et celui précédant sa terminaison (PreStop). Les hooks permettent à Kubernetes de gérer le cycle de vie des conteneurs avec plus de flexibilité et de précision. Pour plus d'informations, consultez la page Container Lifecycle Hooks.

    • PostStart : hook de cycle de vie qui s'exécute immédiatement après la création d'un conteneur pour notifier cet événement. Aucun paramètre n'est transmis au gestionnaire du hook. Si le gestionnaire échoue, le conteneur est arrêté puis redémarré selon sa politique de redémarrage.

    • PreStop : hook de cycle de vie déclenché avant la terminaison d'un conteneur, généralement utilisé pour exécuter des tâches de nettoyage ou procéder à un arrêt gracieux. Le gestionnaire du hook doit terminer son exécution avant que Kubernetes n'envoie un signal de terminaison (tel que SIGTERM) au conteneur. Quel que soit le résultat du gestionnaire, une fois celui-ci terminé, Kubernetes envoie le signal SIGTERM et attend une période spécifiée avant d'arrêter le conteneur de force.

  • TerminationGracePeriodSeconds : ce paramètre spécifie la période de grâce accordée pour la terminaison d'un conteneur, lui permettant de finaliser les opérations de nettoyage et d'arrêt avant d'être arrêté de force. Cette configuration améliore la stabilité en prévenant les problèmes tels que la perte de données, les échecs de requêtes et l'indisponibilité du service causés par un arrêt brutal. Associé à un hook PreStop, il permet de mettre en place un processus complet d'arrêt gracieux.

Points d'entrée

Le point d'entrée varie selon le scénario :

Créer une application

  1. Connectez-vous à la console SAE. Dans le volet de navigation de gauche, sélectionnez . Sélectionnez une région et un namespace, puis cliquez sur Create Application.

  2. Sur la page de l'assistant Basic Information, configurez les paramètres requis et cliquez sur Next: Advanced Settings.

  3. Sur la page Advanced Settings, recherchez et développez la section Application Lifecycle Management.

Modifier une application en cours d'exécution

Avertissement

Le redéploiement d'une application entraîne son redémarrage. Pour éviter les interruptions de service, effectuez les déploiements pendant les heures creuses.

  1. Connectez-vous à la console SAE. Dans le volet de navigation de gauche, sélectionnez . Sélectionnez la région et le namespace, puis cliquez sur le nom de votre application.

  2. Sur la page Basic Information de l'application, cliquez sur Deploy Application.

  3. Sur la page Deploy Application, recherchez et développez la section Application Lifecycle Management.

Modifier une application arrêtée

  1. Connectez-vous à la console SAE. Dans le volet de navigation de gauche, sélectionnez . Sélectionnez la région et le namespace, puis cliquez sur le nom de votre application.

  2. Sur la page Basic Information de l'application, cliquez sur Modify Application Configurations.

  3. Sur la page Modify Application Configurations, recherchez et développez la section Application Lifecycle Management.

Procédure

Dans la section Application Lifecycle Management, configurez les paramètres PostStart, PreStop et TerminationGracePeriodSeconds selon vos besoins.

Nous vous recommandons de configurer ces trois paramètres afin d'établir une boucle complète de gestion du cycle de vie pour vos conteneurs, garantissant ainsi un démarrage et un arrêt fluides des services, une libération ordonnée des ressources et une exploitation sans interruption.

PostStart

Dans la section Application Lifecycle Management, configurez le hook PostStart sous l'onglet PostStart.

Remarque

SAE propose deux interpréteurs de shell :

  • >_ /bin/sh

  • >_ /bin/bash

Par exemple, avant le démarrage de l'application, écrivez le contenu Hello from the postStart handler dans le fichier /usr/share/message.

Sélectionnez >_/bin/sh et saisissez la commande suivante dans l'éditeur de code : echo "Hello from the postStart handler" > /usr/share/message.

En environnement de production, configurez les paramètres en fonction de vos besoins métier. L'exemple fourni dans cette rubrique sert uniquement à des fins de vérification minimale et ne doit pas être utilisé en production.

Vérification du résultat :

Après la création ou le redéploiement de l'application, utilisez Webshell pour ouvrir le terminal de l'instance et vérifiez que le fichier /usr/share/message existe et contient le contenu attendu.

[~]$cat /usr/share/message
Hello from the postStart handler
[~]$

PreStop

Dans la section Application Lifecycle Management, configurez le hook PreStop sous l'onglet PreStop.

Remarque

SAE propose deux interpréteurs de shell :

  • >_ /bin/sh

  • >_ /bin/bash

Par exemple, avant la terminaison du conteneur, exécutez un script pour écrire Perform cleanup dans le fichier /cleanup.log puis attendez 100 secondes à des fins de vérification.

En environnement de production, configurez les paramètres en fonction de vos besoins métier. L'exemple fourni dans cette rubrique sert uniquement à des fins de vérification minimale et ne doit pas être utilisé en production.

Sélectionnez >_/bin/sh et saisissez la commande suivante dans l'éditeur de code : echo "Perform cleanup" > /cleanup.log && sleep 100.

Vérification du résultat :

Sur la page Basic Information de l'application, cliquez sur Stop Application. Ensuite, utilisez Webshell pour ouvrir le terminal de l'instance et vérifiez que le fichier /cleanup.log existe et contient le contenu attendu.

[/]$cat /cleanup.log
Perform cleanup
[/]$

TerminationGracePeriodSeconds

Dans la section Application Lifecycle Management, sous l'onglet TerminationGracePeriodSeconds, définissez le délai d'expiration de l'arrêt gracieux à 60 secondes.

Si le délai d'expiration de l'arrêt gracieux est inférieur au temps nécessaire pour arrêter le conteneur de manière gracieuse, le conteneur est arrêté de force (Signal : SIGKILL, code de sortie : 137). Ce temps requis inclut à la fois l'exécution du hook PreStop et la gestion du signal SIGTERM par le conteneur. Par exemple, si le conteneur nécessite 100 secondes pour s'arrêter gracieusement mais que le délai d'expiration est fixé à 60 secondes, le conteneur sera tué avant que son arrêt gracieux ne puisse se terminer.

Vérification du résultat :

Dans cet exemple, le délai d'expiration de l'arrêt gracieux est intentionnellement défini comme étant inférieur au temps d'arrêt gracieux du conteneur à des fins de vérification.

Sur la page Basic Information de l'application, cliquez sur Stop Application. Ensuite, utilisez Webshell pour ouvrir le terminal de l'instance et vérifiez que le conteneur indique le code de sortie 137.

Pendant l'arrêt gracieux, le conteneur reste dans l'état Terminating jusqu'à l'expiration du délai d'expiration configuré.
[/]${"metadata":{},"status":"Failure","message":"command terminated with non-zero exit code: error executing command [env COLUMNS=137 ROWS=46 LINES=46 /bin/sh -i -c /bin/bash || clear;/bin/sh], exit code 137","reason":"NonZeroExitCode","details":{"causes":[{"reason":"ExitCode","message":"137"}]}}