Emplacements de déploiement Azure Functions

Pour les plans d’hébergement qui prennent en charge les emplacements de déploiement, votre application de fonctions peut exécuter des instances séparées appelées emplacements. Chaque emplacement est un environnement distinct avec son propre nom d’hôte. L’accès au point de terminaison d’un slot dépend des restrictions réseau et d’accès que vous configurez pour ce slot. Un emplacement est toujours celui de production, et vous pouvez échanger un emplacement de staging disponible avec celui de production à la demande.

Le nombre d'emplacements disponibles dépend de votre option d'hébergement spécifique :

Option d’hébergement Machines à sous (y compris la production)
Plan Consommation 2 (un emplacement de production et un emplacement de mise en scène)
Plan Consommation Flex N’est pas pris en charge actuellement. Pour les déploiements sans temps d’arrêt, consultez les stratégies de mise à jour de site dans Flex Consumption.
Plan Premium 3
Plan dédié (App Service) 1-20
Azure Container Apps Les emplacements de déploiement ne s’appliquent pas. Utilisez les modifications.

Sélectionnez votre plan d’hébergement en haut de cet article pour consulter les conseils applicables à votre application de fonction.

Déploiement sans emplacements sur Consommation flexible

Le plan Flex Consumption ne prend pas en charge les emplacements de déploiement. Pour les versions contrôlées et les déploiements sans interruption, utilisez les mises à jour progressives comme stratégie de mise à jour du site.

Déployer avec des révisions sur Azure Container Apps

Azure Functions sur Azure Container Apps n’utilise pas les slots de déploiement. Utilisez les révisions pour gérer et diriger le trafic entre les versions de votre application de fonctions.

Sur les plans Consommation, Premium et Dédiés, les emplacements de déploiement se comportent comme suit :

  • Lors du basculement du routage, les nouvelles invocations du déclencheur de fonction sont acheminées vers l’emplacement échangé sans nécessiter un redémarrage explicite de l’application.
  • Les permutations d’emplacements ne garantissent pas un temps d’arrêt nul. Actuellement, les fonctions en cours d’exécution peuvent être interrompues et une dégradation de la disponibilité peut se produire sur les applications mises à l’échelle pendant les opérations d’échange d’emplacements. Pour savoir comment écrire des fonctions sans état et défensives, consultez Améliorer les performances et la fiabilité d’Azure Functions. Si les déploiements sans temps d’arrêt sont requis, envisagez le plan Flex Consumption avec des mises à jour propagées en tant que stratégie de mise à jour du site.

Pourquoi utiliser des emplacements ?

L’utilisation d’emplacements de déploiement présente de nombreux avantages, notamment :

  • Environnements différents pour des usages différents : En utilisant différents emplacements, vous pouvez différencier les instances d’application avant de passer à la production ou à un emplacement de staging.
  • Préchauffage : déployez sur un slot au lieu de directement en production pour réchauffer l’application avant qu’elle ne soit lancée. De plus, l’utilisation de slots réduit la latence pour les charges de travail déclenchées par HTTP. Les instances sont préchauffées avant déploiement, ce qui réduit le démarrage à froid de fonctions nouvellement déployées.
  • Facilité de secours : Après permutation avec l’emplacement de production, la précédente application en production se retrouve dans l’emplacement de l’application précédemment en préproduction. Si les changements que vous avez échangés dans la case de production ne sont pas ce à quoi vous vous attendez, vous pouvez immédiatement inverser l’échange pour récupérer votre « dernière instance bonne connue ».
  • Réduire les redémarrages : la modification des paramètres d’application dans un emplacement de production nécessite un redémarrage de l’application en cours d’exécution. Vous pouvez à la place modifier les paramètres dans un emplacement intermédiaire et échanger les paramètres en productions avec une instance prédéfinie. Les emplacements sont un moyen recommandé de migrer entre les versions du runtime Functions, tout en conservant la disponibilité la plus élevée. Pour en savoir plus, consultez la Mise à jour minimale des temps d’arrêt.

Permuter des opérations

Lors d’une permutation, un emplacement correspond à la source et l’autre à la cible. L’emplacement source correspond à l’instance de l’application que vous appliquez à l’emplacement cible. Les étapes suivantes permettent de réduire l’indisponibilité sur l’emplacement cible lors d’une permutation :

  1. Appliquer les paramètres : Appliquez les paramètres de l’emplacement cible à toutes les instances de l’emplacement source. Par exemple, appliquez les paramètres de production à l’instance de staging. Les paramètres appliqués incluent les catégories suivantes :

  2. Attendre les redémarrages et la disponibilité : L’opération de permutation attend que chaque instance dans l’emplacement source ait redémarré et soit disponible pour recevoir des demandes. Si l’une des instances ne parvient pas à redémarrer, l’opération d’échange rétablit toutes les modifications apportées à l’emplacement source, puis cesse d’être exécutée.

  3. Mise à jour du routage : Si toutes les instances sur le slot source se réchauffent avec succès, les deux emplacements complètent l’échange en changeant les règles de routage. Après cette étape, l’emplacement cible (par exemple, l’emplacement de production) dispose de l’application précédemment hébergée dans l’emplacement source.

  4. Répéter l’opération : Maintenant que l’emplacement source contient l’application qui se trouvait dans l’emplacement cible avant la permutation, menez à bien la même opération en appliquant tous les paramètres, puis en redémarrant les instances pour l’emplacement source.

Gardez à l’esprit les points suivants :

  • À tout moment pendant une opération de permutation, l’initialisation des applications permutées se produit sur l’emplacement source. L’emplacement cible reste en ligne pendant la préparation de l’emplacement source, que la permutation réussisse ou échoue.

  • Pour échanger un emplacement de mise en scène avec le créneau de production, assurez-vous que le créneau de production est toujours le créneau cible. De cette façon, l’opération d’échange n’affectera pas votre application de production.

  • Configurez les paramètres relatifs aux sources d’événements et aux liaisons en tant que paramètres d’emplacement de déploiement avant de commencer un échange. Le marquage à l’avance de ces paramètres comme « rémanents », garantit que les événements et les sorties sont dirigés vers l’instance appropriée.

  • Lorsque vous créez un nouvel emplacement de préproduction, le portail crée dans ce nouvel emplacement tous les paramètres existants de l’emplacement de production, quel que soit l’adhérence du paramètre.

Gérer les paramètres

Certains réglages de configuration sont spécifiques à un emplacement. Les listes suivantes détaillent quels réglages changent lors de l’échange de slot, et lesquels restent les mêmes.

Paramètres spécifiques à l’emplacement :

  • Points de terminaison de publication
  • Noms de domaine personnalisés
  • Certificats non publics et paramètres TLS/SSL
  • Paramètres de mise à l’échelle
  • Restrictions d’adresse IP
  • Toujours activé
  • Paramètres de diagnostic
  • Partage des ressources cross-origin (CORS)
  • Instances Private Endpoint

Paramètres non spécifiques à l’emplacement :

  • Paramètres généraux, tels que la version du framework, le 32/64 bits et les web sockets
  • Paramètres d’application (peuvent être configurés pour respecter un emplacement)
  • Chaînes de connexion (peuvent être configurées pour respecter un emplacement)
  • Mappages de gestionnaires
  • Certificats publics
  • Connexions hybrides*
  • Intégration du réseau virtuel*
  • Points de terminaison de service*
  • Azure Content Delivery Network*

Par conception, les fonctionnalités marquées avec un astérisque (*) ne sont pas permutées.

Remarque

Certains paramètres d’application qui s’appliquent aux paramètres non échangés ne sont pas inversés. Par exemple, puisque les paramètres de diagnostic ne sont pas échangés, les paramètres d’application associés, comme WEBSITE_HTTPLOGGING_RETENTION_DAYS et DIAGNOSTICS_AZUREBLOBRETENTIONDAYS, ne le sont pas non plus, même s’ils n’apparaissent pas comme des paramètres d’emplacement.

Créer un paramètre de déploiement

Vous pouvez marquer des paramètres comme paramètres de déploiement, ce qui a pour effet de les rendre rémanents. Un paramètre rémanent ne suit pas la permutation de l’instance d’application.

Si vous créez un paramètre de déploiement dans un emplacement, assurez-vous de créer le même réglage avec une valeur unique dans tout autre emplacement impliqué dans un échange. De cette façon, si la valeur d’un paramètre ne change pas, son nom reste cohérent dans les emplacements. Cette cohérence de nom garantit que votre code ne tente pas d’accéder à un paramètre défini dans un emplacement, mais pas dans un autre.

Pour créer un paramètre de déploiement, procédez comme suit :

  1. Allez dans Emplacements de déploiement dans l’application de fonction, puis sélectionnez le nom de l’emplacement.

    Capture d’écran montrant les emplacements de déploiement dans le portail Azure.

  2. Sélectionnez Configuration, puis le nom du paramètre que vous souhaitez utiliser avec l’emplacement actuel.

    Capture d’écran montrant où configurer le paramètre d’application pour un emplacement dans le portail Azure.

  3. Sélectionnez Deployment slot setting (Paramètre d’emplacement de déploiement), puis OK.

    Capture d’écran montrant où configurer le paramètre d’emplacement de déploiement.

  4. Après la fermeture de la section paramètres, sélectionnez Enregistrer pour conserver les modifications.

    Capture d’écran montrant comment enregistrer le paramètre d’emplacement de déploiement.

Déploiement d’une application sur un emplacement

Les emplacements sont vides lorsque vous créez un emplacement. Pour déployer votre application dans un emplacement, vous pouvez utiliser toute technologie de déploiement prise en charge.

Comment les emplacements de déploiement évoluent

Tous les emplacements sont mis à l’échelle du nombre de rôles de travail dans l’emplacement de production.

  • Pour les plans Consommation, l’emplacement est mis à l’échelle à mesure que l’échelle de l’application de fonction évolue.
  • Pour les plans App Service, l’application s’adapte à un nombre fixe de rôles de travail. Les emplacements s’exécutent sur le même nombre de rôles de travail que le plan de l’application.

Afficher les emplacements

Vous pouvez consulter les informations sur les emplacements existants en utilisant soit Azure CLI, soit le portail Azure.

Utilisez ces étapes pour consulter les emplacements existants dans le portail :

  1. Accédez à votre application de fonction.

  2. Sélectionnez les emplacements de déploiement et voyez les emplacements existants.

Ajouter un emplacement

Vous pouvez ajouter un emplacement en utilisant soit la clé Azure CLI, soit le portail Azure.

Suivez ces étapes pour créer un emplacement dans le portail :

  1. Accédez à votre application de fonction.

  2. Sélectionnez Deployment slots (Emplacements de déploiement), puis + Add Slot (+ Ajouter un emplacement).

    Capture d’écran montrant l’ajout d’un emplacement de déploiement Azure Functions.

  3. Tapez le nom de l’emplacement, puis sélectionnez Add (Ajouter).

    Capture d’écran montrant l’affectation d’un nom à l’emplacement de déploiement Azure Functions.

Vous pouvez aussi créer un emplacement en utilisant des modèles Azure Resource Manager (ARM) ou des fichiers Bicep. Pour obtenir un exemple de création d’une application de fonction dans un plan Consommation avec un emplacement de déploiement, consultez ce guide de démarrage rapide Azure Resource Manager.

Accéder aux ressources de l’emplacement

Vous accédez aux ressources (déclencheurs HTTP et points de terminaison d’administrateur) dans un emplacement de préproduction de la même façon que l’emplacement de production. En lieu et place du nom d’hôte de l’application de fonction, vous utilisez toutefois le nom d’hôte spécifique à l’emplacement dans l’URL de la demande, ainsi que les clés spécifiques à l’emplacement. Étant donné que les emplacements de préproduction sont des applications actives, vous devez sécuriser vos fonctions dans un emplacement de préproduction comme vous le feriez dans un emplacement de production.

Permuter des emplacements

Vous pouvez permuter les emplacements de déploiement vers ou hors production à l’aide d’Azure CLI ou du portail Azure.

Suivez ces étapes pour échanger un emplacement de préproduction en production :

  1. Accédez à l’application fonctionnelle.

  2. Sélectionnez Deployment slots (Emplacements de déploiement), puis Swap (Échanger).

    Capture d’écran qui montre la page du slot de déploiement avec l’action Ajouter un emplacement sélectionnée.

  3. Vérifiez les paramètres de configuration de votre échange, puis sélectionnez Swap.

    Capture d’écran montrant l’échange de l’emplacement de déploiement.

Cette opération d’échange peut prendre quelques secondes.

Restaurer un échange

Si un échange entraîne une erreur ou si vous souhaitez annuler un échange, vous pouvez revenir à l’état initial. Pour revenir à l’état avant permutation, effectuez un autre permutation pour inverser la précédente permutation.

Supprimer un emplacement

Vous pouvez supprimer un emplacement à l’aide de Azure CLI ou du portail Azure.

Suivez ces étapes pour supprimer un emplacement de votre application dans le portail :

  1. Allez dans Emplacements de déploiement dans l’application de fonction, puis sélectionnez le nom de l’emplacement.

    Capture d’écran montrant la page où vous trouvez des emplacements dans le portail Azure.

  2. Sélectionnez Supprimer.

    Capture d’écran qui montre la page Aperçu avec l’action Supprimer sélectionnée.

  3. Tapez le nom de l’emplacement de déploiement que vous souhaitez supprimer, puis sélectionnez Delete (Supprimer).

    Capture d’écran montrant la suppression de l’emplacement de déploiement dans le portail Azure.

  4. Fermez le volet confirmation.

    Capture d’écran montrant la confirmation de la suppression de l’emplacement de déploiement.

Changer le plan App Service

Une application de fonction qui s’exécute dans le cadre d’un plan App Service vous permet de modifier le plan App service sous-jacent pour un emplacement.

Pour modifier le plan App service d’un emplacement, procédez comme suit :

  1. Allez dans Emplacements de déploiement dans l’application de fonction, puis sélectionnez le nom de l’emplacement.

    Capture d’écran montrant les emplacements dans le portail Azure.

  2. Sous App Service plan (Plan App Service), sélectionnez Change App Service plan (Modifier le plan App Service).

  3. Sélectionnez le plan vers lequel vous souhaitez effectuer la mise à niveau ou créez un nouveau plan.

    Capture d’écran montrant où modifier le plan App Service dans le portail Azure.

  4. Sélectionnez OK.

Considérations

Les emplacements de déploiement Azure Functions doivent tenir compte des éléments suivants :

  • Le nombre d’emplacements disponibles pour une application dépend du plan. Le plan de consommation prend en charge deux emplacements au total : l’emplacement de production et un emplacement de préproduction. Davantage d’emplacements sont disponibles pour les applications fonctionnant sous d’autres plans. Pour plus d’informations, consultez Limites du service.
  • La permutation d’un emplacement a pour effet de réinitialiser les clés pour les applications dont le paramètre d’application AzureWebJobsSecretStorageType a la valeur files.
  • Lorsque vous activez les emplacements, le portail met votre application fonctionnelle en mode lecture seule.
  • Les swaps d’emplacements peuvent échouer lorsque votre application de fonction utilise un compte de stockage sécurisé comme compte de stockage par défaut (configuré dans AzureWebJobsStorage). Pour plus d’informations, consultez les informations de référence sur WEBSITE_OVERRIDE_STICKY_DIAGNOSTICS_SETTINGS.
  • Utilisez des noms d’application de fonction inférieurs à 32 caractères. Les noms de plus de 32 caractères peuvent provoquer des collisions avec les identifiants hôte.

Étapes suivantes