Partager via


Sessions personnalisées de conteneurs pour Azure Container Apps

Outre l’interpréteur de code intégré fourni par les sessions dynamiques Azure Container Apps, vous pouvez également utiliser des conteneurs personnalisés pour définir vos propres bacs à sable de session.

Note

Cet article s’applique uniquement aux pools de sessions de conteneur personnalisées. Sauf indication contraire, les fonctionnalités décrites ici ne sont pas disponibles pour les pools de sessions d’interpréteur de code.

Utilisations pour les sessions de conteneur personnalisées

Les conteneurs personnalisés vous permettent de créer des solutions adaptées à vos besoins. Ils vous permettent d’exécuter du code ou des applications dans des environnements rapides et éphémères et offrent des espaces bac à sable sécurisés avec Hyper-V. En outre, ils peuvent être configurés avec une isolation réseau facultative. Voici quelques exemples :

  • Interpréteurs de code : quand vous devez exécuter du code non approuvé dans des bacs à sable sécurisés par un langage non pris en charge dans l’interpréteur intégré, ou si vous avez besoin d’un contrôle total sur l’environnement de l’interpréteur de code.

  • Exécution isolée : Lorsque vous devez exécuter des applications dans des scénarios hostiles et multi-locataires dans lesquels chaque locataire ou utilisateur dispose de son propre environnement sandbox. Ces environnements sont isolés les uns des autres et de l’application hôte. Voici quelques exemples d’applications qui exécutent du code fourni par l’utilisateur, du code qui accorde à l’utilisateur final l’accès à un interpréteur de commandes cloud, des agents d’IA et des environnements de développement.

Utilisation de sessions de conteneur personnalisées

Pour utiliser des sessions de conteneur personnalisées, vous créez d’abord un pool de sessions avec une image conteneur personnalisée. Azure Container Apps démarre automatiquement les conteneurs dans leurs propres bacs à sable Hyper-V à l’aide de l’image fournie. Une fois le conteneur démarré, il est disponible pour le pool de sessions.

Lorsque votre application demande une session, une instance est allouée instantanément à partir du pool. La session reste active jusqu’à ce qu’elle entre dans un état inactif, qui est ensuite automatiquement arrêté et détruit.

Sondes de conteneur pour les pools de sessions

Utilisez des sondes de conteneur pour configurer des vérifications d’intégrité pour les pools de sessions de conteneur personnalisées et gérer des instances de session saines.

Note

Les sondes de conteneur requièrent une version d'API 2025-02-02-preview ou ultérieure.

Les sondes de conteneur vous permettent de définir des contrôles d’intégrité pour les conteneurs de session, similaires aux sondes d’intégrité dans Azure Container Apps. Lorsqu’il est configuré, le pool de sessions surveille chaque instance de session et supprime les instances non saines.

Pool de sessions :

  • Garantit que les instances de session prêtes sont en bonne santé selon les sondes.
  • Supprime automatiquement les instances de session non saines.
  • Effectue un scale-up pour maintenir le nombre configuré readySessionInstances avec des sessions saines.

Les pools de sessions prennent en charge les types de sondes Liveness et Startup. Pour plus d’informations sur le fonctionnement des sondes, consultez Sondes d’intégrité dans Azure Container Apps.

Paramétrage

Lorsque vous créez ou mettez à jour un pool de sessions, spécifiez des sondes dans la properties.customContainerTemplate.containers section de votre charge utile de requête.

Pour obtenir la spécification complète de l’API, consultez l’API SessionPools.

Exemple

{
  "properties": {
    "customContainerTemplate": {
      "containers": [
        {
          "name": "my-session-container",
          "image": "myregistry.azurecr.io/my-session-image:latest",
          "probes": [
            {
              "type": "Liveness",
              "httpGet": {
                "path": "/health",
                "port": 8080
              },
              "periodSeconds": 10,
              "failureThreshold": 3
            },
            {
              "type": "Startup",
              "httpGet": {
                "path": "/ready",
                "port": 8080
              },
              "periodSeconds": 5,
              "failureThreshold": 30
            }
          ]
        }
      ]
    },
    "dynamicPoolConfiguration": {
      "readySessionInstances": 5
    }
  }
}

Résolution des problèmes

Si votre pool de sessions ne maintient pas le nombre attendu de readySessionInstances en bonne santé, tenez compte des éléments suivants :

  1. Vérifiez les journaux de conteneur : passez en revue les journaux de conteneur de session pour identifier les problèmes liés aux points de terminaison de sonde ou au démarrage du conteneur. Consultez Afficher les journaux d’activité pour les pools de sessions de conteneur personnalisées.
  2. Vérifiez la configuration de la sonde : vérifiez que les chemins de sonde, les ports et les seuils sont configurés correctement pour votre application.
  3. Passez en revue l’intégrité du conteneur : vérifiez les problèmes à l’intérieur de votre conteneur qui empêchent les points de terminaison de sonde de répondre correctement.

Arrêter une session

Utilisez l’API Arrêter la session pour arrêter une session dans un pool de sessions de conteneur personnalisé.

Les pools de sessions prennent en charge la gestion automatique des sessions via lifecycleConfiguration, qui gère le cycle de vie de session en fonction de votre configuration. Toutefois, il existe des scénarios où vous aurez peut-être besoin d’un contrôle plus grand.

Après avoir alloué une session, vous pouvez appeler cette API pour l’arrêter manuellement à tout moment. Cela est utile quand :

  • Vous devez nettoyer les ressources avant qu’une session atteigne son délai de vie.
  • Votre pool de sessions a atteint sa limite maximale de sessions simultanées et vous devez libérer de la capacité pour les nouvelles sessions.
  • Une session a terminé son travail et vous souhaitez libérer immédiatement des ressources.

Référence d’API

Requête

POST {PoolManagementEndpoint}/.management/stopSession?api-version=2025-10-02-preview&identifier={SessionIdentifier}

Paramètres

Paramètre Type Obligatoire Description
api-version ficelle Oui Version de l’API à utiliser (par exemple). 2025-10-02-preview
identifier ficelle Oui Identificateur unique de la session à arrêter.

Exemples

Requête

POST https://{PoolManagementEndpoint}/.management/stopSession?api-version=2025-10-02-preview&identifier=testSessionIdentifier

Réponse

HTTP/1.1 200 OK
Content-Type: text/plain

Session testSessionIdentifier in session pool testSessionPool stopped.

Journalisation

Les pools de sessions de conteneur personnalisés s’intègrent à Azure Monitor et Log Analytics. Les journaux d’application sont capturés uniquement si votre conteneur écrit la sortie vers stdout ou stderr. Veuillez vous assurer que votre application émet des journaux dans la console.

Prerequisites

  • Un environnement Azure Container Apps avec un pool de sessions de conteneur personnalisé
  • Un espace de travail Log Analytics (ou en créer un lors de l’installation)

Configuration de la journalisation

Étape 1 : Activer la journalisation Azure Monitor

  1. Accédez à votre environnement Container Apps dans le portail Azure.
  2. Sous Surveillance, sélectionnez Options de journalisation.
  3. Définissez la destination des journaux sur Azure Monitor.

Étape 2 : Configurer les paramètres de diagnostic

  1. Dans votre environnement Container Apps, accédez aux paramètres de diagnostic sous Surveillance.
  2. Sélectionnez + Ajouter le paramètre de diagnostic.
  3. Indiquez un nom pour votre paramètre de diagnostic.
  4. Sous Journaux, sélectionnez les catégories de journaux associées à la session que vous souhaitez capturer.
  5. Sous Détails de la destination, sélectionnez Envoyer à l’espace de travail Log Analytics.
  6. Choisissez votre espace de travail Log Analytics (ou créez-en un).
  7. Cliquez sur Enregistrer.

Tableaux Log Analytics

Catégorie de journal Table d'Analytics Log Description
Logs d'application AppEnvSessionConsoleLogs Sortie standard (stdout) et erreur standard (stderr) émise par l’application conteneurisée.
Journaux de plateforme AppEnvSessionLifecycleLogs, AppEnvSessionPoolEvents Événements générés par la plateforme liés à l’allocation, au cycle de vie et à l’état opérationnel du pool de sessions.

Si les journaux sont envoyés directement à Log Analytics, les tables utilisent le suffixe _CL (par exemple, AppEnvSessionConsoleLogs_CL). Lorsque les journaux d’activité sont routés via les paramètres de diagnostic Azure Monitor, les noms de tables n’incluent pas le suffixe _CL.

Afficher les journaux de session

Une fois les paramètres de diagnostic configurés, les journaux sont envoyés à votre espace de travail Log Analytics.

Journaux de requêtes dans Log Analytics

  1. Accédez à votre espace de travail Log Analytics dans le portail Azure.
  2. Sélectionnez Journaux sous Général.
  3. Utilisez kusto Query Language (KQL) pour interroger les journaux de session.

Exemples de requêtes

Affichez les journaux de console récents à partir de sessions :

AppEnvSessionConsoleLogs
| where TimeGenerated > ago(1h)
| order by TimeGenerated desc
| take 100

Afficher les événements de cycle de vie de session :

AppEnvSessionLifecycleLogs
| where TimeGenerated > ago(1h)
| order by TimeGenerated desc

Afficher les événements du pool de sessions :

AppEnvSessionPoolEvents
| where TimeGenerated > ago(1h)
| order by TimeGenerated desc

Metrics

Azure Container Apps émet des métriques Azure Monitor pour les pools de sessions de conteneur personnalisées. Utilisez ces métriques pour suivre la capacité et l’activité du pool au fil du temps.

Métriques prises en charge

Pour obtenir la liste complète, consultez Métriques prises en charge - Microsoft.App/sessionpools - Azure Monitor.

Unité de mesure Nom dans l’API REST Unité Aggregation Dimensions Fragments de temps Exportation DS
Nombre de sessions en cours d’exécution
Nombre de pods de session en cours d’exécution dans le pool de sessions
PoolExecutingPodCount Nombre Total (Somme), Moyenne, Maximum, Minimum poolName PT1M Oui
Création du nombre de sessions
Nombre de pods de session créés dans le pool de sessions
PoolPendingPodCount Nombre Total (Somme), Moyenne, Maximum, Minimum poolName PT1M Oui
Nombre de sessions prêtes
Nombre de pods de session prêts dans le pool de sessions
PoolReadyPodCount Nombre Total (Somme), Moyenne, Maximum, Minimum poolName PT1M Oui

Afficher les métriques de session

Vous pouvez utiliser des métriques d’environnement Azure Monitor ou Container Apps pour afficher les métriques basées sur les sessions.

Option 1 : Métriques Azure Monitor

  1. Ouvrez la page Métriques Azure Monitor.
  2. Sélectionnez comme étendue votre pool de sessions de conteneur personnalisé.
  3. Choisissez une métrique et une agrégation à afficher.

Option 2 : Métriques d’environnement Container Apps

  1. Dans le portail Azure, ouvrez votre environnement Container Apps.
  2. Sélectionnez Métriques.
  3. Utilisez Scope pour sélectionner votre pool de sessions de conteneur personnalisé.
  4. Choisissez une métrique et une agrégation à afficher.