Partager via


Vue d’ensemble d’Azure Functions sur Azure Container Apps

Azure Functions sur Azure Container Apps offre un environnement d’hébergement serverless complètement managé qui regroupe les fonctionnalités pilotées par les événements d’Azure Functions avec les fonctionnalités robustes de Container Apps. Cette intégration inclut des fonctionnalités avancées telles que l’orchestration basée sur Kubernetes, la mise à l’échelle automatique intégrée optimisée par KEDA (mise à l’échelle automatique basée sur les événements Kubernetes), l’intégration de Dapr (Distributed Application Runtime), la prise en charge des charges de travail GPU, la prise en charge de side-car, la connectivité de réseau virtuel (VNet), et la gestion des révisions.

Cette approche est utile lorsque vous souhaitez que vos fonctions s’exécutent avec d’autres applications conteneurisées telles que les microservices, les API ou les sites web. En outre, la conteneurisation de vos applications de fonction peut vous aider quand vous avez besoin de dépendances personnalisées ou que vous souhaitez tirer parti de la mise à l’échelle à zéro pour réaliser des économies. Si vous exécutez de lourdes tâches de calcul telles que l’inférence IA, Container Apps prend également en charge l’hébergement basé sur GPU via l’offre GPU serverless et les profils de charge de travail dédiés.

En tant que fonctionnalité intégrée sur Azure Container Apps, vous pouvez déployer des images Azure Functions directement sur Azure Container Apps à l’aide du fournisseur de ressources Microsoft.App en définissant kind=functionapp lors de l’appel de az containerapp create. Les applications créées de cette façon ont accès à toutes les fonctionnalités d’Azure Container Apps. Si vous effectuez un déploiement via le portail Azure, vous pouvez activer l’option Optimiser pour l’application Functions pendant l’installation. Pour plus d’informations, consultez la section Déploiement et configuration.

Principaux avantages

Le modèle d’hébergement Container Apps s’appuie sur la flexibilité des charges de travail conteneurisées et sur la nature pilotée par les événements d’Azure Functions. Il offre les avantages clés suivants :

Le tableau suivant vous aide à comparer les fonctionnalités de Functions sur Container Apps avec le plan de consommation Flex.

Caractéristique Applications de conteneur Plan Consommation Flex
Mettre à l’échelle vers zéro ✅ Oui (via KEDA) ✅ Oui
Échelle horizontale maximale 1 000 (par défaut 10, configurable) 1 000
Instances toujours actives ✅ Oui (via minReplicas) ✅ Oui (via des instances toujours disponibles)
Intégration au réseau virtuel ✅ Oui ✅ Oui
Prise en charge des conteneurs personnalisés ✅ Oui (apportez votre propre image) ❌ Limité (sans apporter votre propre conteneur)
Prise en charge de GPU ✅ Oui (via le profil de charge de travail sans serveur dédié au GPU) ❌ Non
Fonctionnalités intégrées Prise en charge des fonctionnalités Container Apps. Par exemple, KEDA, Dapr, multi-révisions, mTLS, side-cars, contrôle d'entrée et plus encore Fonctionnalités uniquement fonctionnelles
Modèle de facturation Tarification de Container Apps : Plan de consommation (processeur virtuel, mémoire, requêtes) & Plan dédié (basé sur le profil de charge de travail) Durée d’exécution + instances toujours prêtes

Pour obtenir une comparaison complète des fonctions sur container Apps par rapport au plan Flex Consumption et à tous les autres types de plan et d’hébergement, consultez les options d’échelle et d’hébergement de Functions.

Scénarios

Azure Functions sur Container Apps est idéal pour un large éventail de cas d’usage, en particulier lorsque vous avez besoin d’une exécution pilotée par les événements, d’une flexibilité de conteneur ou d’une intégration sécurisée avec d’autres services :

  • API métier : empaquetez des bibliothèques, des packages et des API personnalisés avec Azure Functions pour les applications métier.
  • Migration et modernisation : migration d’applications héritées et/ou monolithes locales vers des microservices natifs cloud sur des conteneurs.
  • Traitement piloté par les événements : gérez les événements d’Event Grid, Service Bus, Event Hubs et d’autres sources d’événements avec toute la simplicité du modèle de programmation Functions.
  • Charges de travail IA & GPU : traitement de charge de travail serverless de vidéos, d’images, de transcriptions ou d’autres tâches nécessitant beaucoup de traitement et des ressources de calcul GPU. Pour plus d’informations, consultez Utilisation de GPU serverless dans Azure Container Apps.
  • Microservices : intégrez Azure Functions à d’autres services hébergés par Container Apps.
  • Conteneurs personnalisés : empaquetez Functions avec des runtimes personnalisés ou des sidecars.
  • Applications privées : sécurisez les fonctions internes uniquement à l’aide d’un réseau virtuel et de l’entrée interne.
  • .NET Aspire : l’intégration de .NET Aspire à Azure Functions vous permet de développer, de déboguer, et d’orchestrer un projet .NET Azure Functions dans le cadre de l’hôte de l’application Aspire .NET. En savoir plus sur Azure Functions avec .NET Aspire
  • Fonctions générales : exécutez tous les scénarios Azure Functions standard pris en charge (par exemple, minuteurs, traitement de fichiers, déclencheurs de base de données).

Déploiement et configuration

Pour déployer Azure Functions sur Azure Container Apps, vous empaquetez votre application Functions en tant qu’image conteneur personnalisée, et vous la déployez comme n’importe quelle autre application conteneur, à une différence près. Vous devez définir la propriété kind=functionapp lors de l’utilisation d’Azure CLI ou de modèles ARM/Bicep. Pour obtenir des étapes détaillées et des exemples, reportez-vous à la documentation de prise en main officielle.

az containerapp create \
  --resource-group $RESOURCE_GROUP_NAME \
  --name $CONTAINER_APP_NAME \
  --environment $ENVIRONMENT_NAME \
  --image mcr.microsoft.com/k8se/quickstart-functions:latest \
  --ingress external \
  --target-port 80 \
  --kind functionapp \
  --query properties.outputs.fqdn

Cette commande retourne l’URL de votre application Functions. Copiez cette URL et collez-la dans un navigateur web.

Dans le portail Azure, sélectionnez l’option Optimiser pour Azure Functions lors de la création de l’application conteneur pour simplifier la configuration.

Capture d’écran du portail Azure lorsque vous créez une application conteneur préconfigurée pour Azure Functions.

Toutes les méthodes de déploiement standard sont prises en charge, notamment :

Pour obtenir des étapes détaillées et des exemples, reportez-vous à la documentation de prise en main officielle.

Tarification et facturation

Azure Functions sur Azure Container Apps suit le même modèle tarifaire qu’Azure Container Apps. La facturation est basée sur le type de plan que vous sélectionnez pour votre environnement, qui peut être Consommation ou Dédié.

  • Plan de consommation : cette option de calcul serverless vous facture uniquement les ressources que vos applications utilisent pendant leur exécution.
  • Plan dédié : cette option fournit des ressources de calcul personnalisées, vous facturant pour les instances allouées à chaque profil de travail.

Votre choix de plan détermine la façon dont les calculs de facturation sont effectués. Différentes applications au sein d’un environnement peuvent utiliser différents plans.

Points clés à noter :

  • Aucun frais supplémentaire n’est facturé pour l’utilisation du modèle de programmation Azure Functions dans Container Apps.
  • Durable Functions et d’autres modèles avancés sont pris en charge et facturés sous le même modèle tarifaire Container Apps. Pour obtenir des exemples et des mécanismes de facturation détaillés, reportez-vous à la documentation Facturation dans Azure Container Apps .

Mise à l’échelle pilotée par les événements

Azure Functions sur Container Apps prend en charge tous les principaux runtimes de langage disponibles dans Azure Functions, notamment : C#, JavaScript / TypeScript (Node.js), Python, Java, PowerShell, Conteneurs personnalisés (apportez votre propre image).

Azure Functions s’exécutant sur Azure Container Apps configure automatiquement les règles de mise à l’échelle en fonction de la source d’événement, ce qui élimine la nécessité de définitions manuelles de règles de mise à l’échelle KEDA. C’est pourquoi le bouton « Ajouter des règles d’échelle » dans le portail Azure est désactivé pour Functions sur Container Apps. Toutefois, vous pouvez toujours définir le nombre minimal et maximal de réplicas pour établir des limites de mise à l’échelle, et maintenir le contrôle sur l’allocation des ressources.

Tous les déclencheurs et liaisons Azure Functions standard sont pris en charge dans Container Apps, avec les exceptions suivantes :

Les identités managées sont prises en charge pour les déclencheurs et les liaisons qui l’autorisent. Elles sont également disponibles pour :

Pour les déclencheurs non pris en charge, utilisez des nombres de réplicas fixes (autrement dit, définissez minReplicas > 0) dans Azure Functions sur Azure Container Apps. Pour plus d’informations, consultez le guide du développeur Functions.

Mise à l’échelle et niveau de performance

Azure Functions sur Container Apps est mis à l’échelle automatiquement en fonction des événements utilisant KEDA, sans avoir à configurer manuellement des règles de mise à l’échelle. Vous pouvez toujours définir des réplicas minimales et maximales pour contrôler le comportement de mise à l’échelle.

  • Mise à l’échelle pilotée par les événements : effectue automatiquement une mise à l’échelle basée sur des déclencheurs tels que Event Grid, Service Bus ou HTTP.
  • Mise à l’échelle à zéro : les applications inactives sont réduites à zéro pour réduire les coûts.
  • Contrôle de démarrage à froid : découvrez comment réduire le temps de démarrage à froid sur Azure Container Apps.
  • Concurrence : chaque instance peut traiter plusieurs événements en parallèle.
  • Grande échelle : scale-out vers 1 000 instances par application (la valeur par défaut est 10).
  • Prise en charge du GPU : exécutez des charges de travail lourdes de calcul telles que l’inférence d’IA à l’aide de nœuds soutenus par GPU.

Cela rend les applications conteneurisées idéales pour les charges de travail en rafale et en régime permanent. Pour plus d’informations, consultez Définir des règles de mise à l’échelle dans Azure Container Apps

Le réseau et la sécurité

Azure Functions sur Container Apps bénéficie des fonctionnalités de mise en réseau et de sécurité robustes d’Azure Functions sur Container Apps pour des déploiements sécurisés et évolutifs :

  • Intégration au réseau virtuel : accédez en toute sécurité aux ressources privées via des points de terminaison internes et des bases de données privées.
  • Identité managée : s’authentifier auprès des services Azure à l’aide d’identités attribuées par le système/l’utilisateur, sans secrets ni chaînes de connexion nécessaires.
  • Prise en charge Dapr : activez la publication/l'abonnement, la gestion de l'état et l'invocation de service sécurisé via les sidecars Dapr. Pour plus d’informations, consultez les API microservice alimentées par Dapr.
  • Entrée et TLS : exposez des points de terminaison HTTP sécurisés avec TLS/mTLS, des domaines personnalisés ou conservez-les en interne.
  • Isolation de l’environnement : Functions partagent les limites de l’environnement Container Apps pour la communication sécurisée et délimitée.

Ces fonctionnalités rendent les fonctions hébergées par Container Apps idéales pour les applications serverless sécurisées de classe entreprise.

Surveillance et journalisation

Azure Functions sur Container Apps s’intègre en toute transparence aux outils d’observabilité d’Azure pour le suivi des performances et le diagnostic des problèmes :

  • Application Insights : fournit des données de télémétrie pour les requêtes, les dépendances, les exceptions, et les traces personnalisées. Pour plus d’informations, consultez Surveiller l’exécution des fonctions Azure.
  • Log Analytics : Capture les événements de cycle de vie et de mise à l’échelle des conteneurs (par exemple, les entrées FunctionsScalerInfo). Pour plus d’informations, consultez Journalisation des applications dans Azure Container Apps.
  • Journalisation personnalisée : pend en charge les frameworks standard tels que ILogger et la journalisation de console pour la sortie structurée.
  • Supervision centralisée : l’environnement Container Apps offre des tableaux de bord et des alertes unifiés sur toutes les applications.

Considérations

Gardez à l’esprit ces autres considérations lors de l’utilisation d’Azure Functions sur Azure Container Apps :

  • Exigence d’entrée pour la mise à l’échelle automatique : pour activer la mise à l’échelle automatique basée sur les événements, l’entrée doit être activée (publiquement ou dans l’environnement interne Container Apps).
  • Compte de stockage obligatoire : chaque application Functions déployée sur Container Apps doit être liée à un compte de stockage. Cela est nécessaire pour gérer les déclencheurs, les journaux, et l’état. Passez en revue les conseils relatifs au compte de stockage pour connaître les meilleures pratiques.
  • Stockage à plusieurs révisions : lors du déploiement avec plusieurs révisions actives, affectez un compte de stockage dédié à chaque révision. L’utilisation d’un compte de stockage dédié permet d’éviter les conflits, et garantit une isolation appropriée. Autrement, si vous n’avez pas besoin de révisions simultanées, vous pouvez utiliser le mode de révision unique par défaut pour une gestion simplifiée.
  • Déclencheurs à plusieurs révisions : si vous utilisez le mode multi-révision avec un déclencheur basé sur le tirage, utilisez une source d’événement différente pour chaque révision afin d’éviter les conflits liés aux consommateurs concurrents. Les fonctions qui utilisent Stockage File d’attente Azure, Azure Event Hub, Azure Service Bus ou des déclencheurs Durable Functions sont des exemples de déclencheurs basés sur le tirage.
  • Latence de démarrage à froid : lorsque votre application conteneur est mise à l’échelle à zéro pendant les périodes inactives, la première demande après l’inactivité subit un démarrage à froid. Apprenez-en davantage sur la réduction des temps de démarrage à froid.
  • Intégration d’Application Insights : pour une supervision et des diagnostics robustes, liez votre application Functions à Application Insights. Pour plus d’informations, consultez Intégration d’App Insights à Functions.
  • Proxys Functions : non pris en charge. Pour les scénarios de passerelle d’API, intégrez plutôt à Gestion des API Azure.
  • Emplacements de déploiement : les emplacements intermédiaires et de production ne sont pas disponibles. Utilisez des stratégies de déploiement bleu-vert pour les mises en production sans temps d’arrêt.
  • Clés d’accès Functions : l’utilisation du portail pour générer des clés d’accès Functions n’est pas prise en charge. Envisagez d’utiliser Azure Key Vault pour stocker les clés. Vous pouvez également utiliser les options suivantes pour sécuriser les points de terminaison HTTP en production :
  • Limites de quota et de ressources : les environnements Container Apps ont des limites par défaut sur la mémoire, le processeur, et le nombre d’instances par région. Pour plus d’informations, consultez les limites d’environnement et les quotas par défaut. Si votre charge de travail nécessite davantage de ressources, vous pouvez demander une augmentation du quota.
  • Configuration manuelle des règles de mise à l’échelle : le bouton « Ajouter des règles d’échelle » dans le portail Azure est désactivé pour Azure Functions hébergé sur Container Apps, car les règles de mise à l’échelle sont automatiquement configurées en fonction de la source d’événement. Les définitions manuelles de règles KEDA ne sont pas requises dans cette configuration.

Envoyer des commentaires

Envoyez un problème ou une demande de fonctionnalité au dépôt GitHub Azure Container Apps.

Étapes suivantes / Autres ressources

Pour continuer à apprendre et à créer avec Azure Functions sur Container Apps, explorez les ressources suivantes :