Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
Azure Functions sur Azure Container Apps offre un environnement d’hébergement serverless entièrement géré qui combine les capacités événementielles d’Azure Functions avec les fonctionnalités de Container Apps. Ces capacités incluent l’orchestration basée sur Kubernetes, l’autoscaling intégré alimenté par Kubernetes Event-driven Autoscaling (KEDA), l’intégration Dapr, la prise en charge des charges GPU, le support du sidecar, la connectivité réseau virtuel (VNet) et la gestion des versions.
Cette approche est utile lorsque vous souhaitez que vos fonctions fonctionnent en parallèle avec d’autres applications conteneurisées comme les microservices, les API ou les sites web. Conteneurisation de vos applications fonctionnelles peut aussi aider lorsque vous avez besoin de dépendances personnalisées ou souhaitez réduire à zéro pour réduire les coûts. Pour des tâches à forte intensité de calcul comme l’inférence IA, Container Apps prend en charge l’hébergement basé sur GPU via des GPU serverless et des profils de charge de travail dédiés.
En tant que fonctionnalité intégrée sur Azure Container Apps, vous pouvez déployer directement des images conteneurs Azure Functions sur Azure Container Apps en utilisant le Microsoft.App fournisseur de ressources et en paraissant kind=functionapp lors de l’appel az containerapp createde . Les applications créées de cette façon ont accès à toutes les fonctionnalités de Azure Container Apps. Dans le portail Azure, sélectionnez l’option Optimiser pour Azure Functions lors de la configuration. Pour plus d’informations, voir 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 de Azure Functions. Il offre les avantages clés suivants :
- Exécutez les Azure Functions sous forme de conteneurs avec des dépendances personnalisées et des piles de langage.
- Réduisez à zéro et réduisez à 1 000 instances en utilisant KEDA.
- Sécuriser la mise en réseau avec une intégration complète au réseau virtuel.
- Fonctionnalités des applications conteneurs telles que plusieurs révisions, la division du trafic, l’intégration Dapr et les composants d’observabilité.
- Prise en charge du GPU dédié et sans serveur pour les charges de travail nécessitant beaucoup de ressources de calcul.
- Environnement Container Apps unifié pour exécuter des Fonctions aux côtés des microservices, des API et des travaux en arrière-plan.
Le tableau suivant vous aide à comparer les fonctionnalités des fonctions sur les applications conteneurs avec le plan Flex Consumption.
| 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 sont idéales 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 des applications héritées et/ou monolithes sur site vers des microservices cloud-natives sur conteneurs.
- Traitement piloté par événements : Gérez les événements provenant d’Event Grid, Service Bus, Event Hubs et autres sources d’événements en utilisant le modèle de programmation Azure Functions.
- Charges de travail IA et GPU : Traiter des vidéos, des images, des transcriptions et d’autres charges de travail très calculatrices nécessitant des ressources GPU. Pour plus d’informations, consultez Utilisant des 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 avec Azure Functions vous permet de développer, de déboguer et d’orchestrer un projet Azure Functions .NET dans le cadre de l’hôte d’application .NET Aspire. En savoir plus sur Azure Functions avec .NET Aspire
- General Functions : Exécuter les scénarios standard Azure Functions 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, emballez votre application de fonction en image conteneur personnalisée et déployez-la comme n’importe quelle autre application conteneur, avec une différence clé. Définissez la kind=functionapp propriété lorsque vous utilisez Azure CLI, les modèles Azure Resource Manager ou Bicep. Pour des étapes détaillées et des exemples, voir Créer une application de fonctions.
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 renvoie l’URL de votre application de fonction. Copiez cette URL et collez-la dans un navigateur web.
Dans le portail Azure, sélectionnez l’option Optimize for Azure Functions lors de la création de l’application conteneur pour utiliser la configuration Azure Functions.
Toutes les méthodes de déploiement standard sont prises en charge, notamment :
- Service de contrôle d’accès Azure (CLI)
- portail Azure
- Modèles ARM / Bicep
- Pipelines CI/CD (par exemple, GitHub Actions, Azure Pipelines)
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 suivent le même modèle de tarification que 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.
Détails de facturation :
- 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 Billing dans Azure Container Apps.
Mise à l’échelle pilotée par les événements
Azure Functions sur les applications conteneurs prend en charge tous les environnements d’exécution des principaux langages disponibles dans Azure Functions, y compris C#, JavaScript / TypeScript (Node.js), Python, Java, PowerShell et les conteneurs personnalisés (apportez votre propre image).
Azure Functions en cours d’exécution sur Azure Container Apps configurez automatiquement des règles de mise à l’échelle en fonction de la source d’événement, ce qui élimine la nécessité de définir manuellement les définitions de règles d’échelle KEDA dans l’expérience par défaut. C'est pourquoi le bouton « Ajouter des règles d'échelle » sur 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.
Si vous devez fournir vos propres règles de mise à l’échelle, vous pouvez désactiver les règles générées par la plateforme à l’aide de allowScalingRuleOverride. Pour plus d’informations, consultez Remplacer les règles de mise à l’échelle KEDA générées automatiquement pour Azure Functions sur Container Apps.
La plateforme convertit automatiquement vos paramètres de déclenchement Functions, issus de la configuration host.json ou des attributs de déclenchement, en paramètres de scaler KEDA appropriés. Pour obtenir une référence détaillée sur la façon dont les configurations de déclenchement des Functions correspondent aux paramètres de mise à l’échelle de KEDA, consultez Azure Functions les mappages de mise à l’échelle de KEDA.
Tous les déclencheurs et liaisons Azure Functions standard sont pris en charge dans Container Apps avec les exceptions suivantes :
- Stockage Blob Déclencher la mise à l’échelle automatique : fonctionne uniquement lors de l’utilisation d’Event Grid comme source. En savoir plus sur le déclenchement des fonctions Azure sur les conteneurs d’objets blob à l’aide d’un abonnement aux événements
- Durable Functions autoscaling : Prend en charge uniquement les fournisseurs de stockage Microsoft SQL Server et Durable Task Scheduler. Pour plus d’informations, voir Deploy Durable Functions with SQL Server.
- L’autoscaling n’est pas pris en charge pour :
- Azure Cache pour Redis
- Azure SQL
Les identités managées sont prises en charge pour les déclencheurs et les liaisons qui l’autorisent. Ils sont également disponibles pour :
- Compte de stockage par défaut (AzureWebJobsStorage)
- Azure Container Registry (ACR)
- Connexion à des sources d’événements de déclencheur
Pour les déclencheurs non pris en charge, utilisez les 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 des développeurs Functions.
Mise à l’échelle et niveau de performance
Azure Functions sur Container Apps s’adapte automatiquement en fonction des événements utilisant KEDA par défaut. Vous pouvez toujours définir des réplicas minimales et maximales pour contrôler le comportement de mise à l’échelle. Vous pouvez également utiliser allowScalingRuleOverride pour fournir des règles d’échelle personnalisées.
- Mise à l’échelle basée sur 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 du démarrage à froid : en savoir plus sur la réduction du 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 les règles de mise à l’échelle dans Azure Container Apps
Le réseau et la sécurité
Azure Functions sur Container Apps utilise les fonctionnalitésde réseau et de sécurité de Container Apps :
- 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é gérée : Authentifier avec les services Azure en utilisant des identités attribuées par le système ou par l’utilisateur. Vous n’avez pas besoin de gérer des secrets ou des chaînes de connexion.
- 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 : Les fonctions partagent les limites de l’environnement des applications conteneures pour une communication sécurisée et à portée d’application.
Surveillance et journalisation
Azure Functions on Container Apps s’intègre aux outils d’observabilité 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 Monitor Azure Functions.
-
Log Analytics : Capture le cycle de vie des conteneurs et les événements de mise à l’échelle, tels que
FunctionsScalerInfoles entrées. Pour plus d’informations, voir la connexion 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.
Variables d'environnement
Azure Functions s’exécutant sur Container Apps ont accès aux variables d’environnement fournies par le système. La CONTAINER_NAME variable d’environnement est automatiquement définie sur le nom du réplica de votre application de fonction. Utilisez cette variable pour la journalisation, la corrélation et le débogage dans un scénario à plusieurs réplicas.
Pour obtenir la liste complète des variables d’environnement fournies par le système, consultez les variables Environment dans Azure Container Apps.
Considérations
Gardez à l’esprit ces autres considérations lors de l’utilisation de Azure Functions sur Azure Container Apps :
- Exigence d’entrée pour l’auto-scaling : Pour permettre l’adaptation automatique basée sur les événements, activez l’entrée, soit publiquement, soit dans l’environnement interne des applications conteneures.
- Compte de stockage obligatoire : Chaque application de fonction déployée sur les applications conteneurs doit être liée à un compte de stockage. Ce compte de stockage gère 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 des déclencheurs Stockage File d’attente Azure, Azure Event Hubs, Azure Service Bus ou Durable Functions sont des exemples de déclencheurs basés sur l’extraction.
- 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 Application Insights : Pour surveiller et diagnostiquer votre application de fonctions, connectez-la à Application Insights. Pour plus d’informations, voir Application Insights intégration avec Functions.
- Proxys Functions : non pris en charge. Pour les scénarios de passerelle d’API, intégrez-les à Gestion des API Azure à la place.
- 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 des 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 de règle de mise à l’échelle managée : le bouton « Ajouter des règles d’échelle » sur 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 Azure Container Apps GitHub.
Étapes suivantes / Autres ressources
Pour continuer à apprendre et à créer avec Azure Functions sur Container Apps, explorez les ressources suivantes :
- Getting started : Guide pas à pas pour déployer et configurer des Azure Functions dans Azure Container Apps.
- documentation Azure Container Apps : référence complète pour les fonctionnalités Container Apps, notamment la mise à l’échelle, la mise en réseau, le dapr et les profils de charge de travail.
- Azure Container Apps tarification : détails sur la facturation basée sur la consommation et les coûts du plan dédié.
- Azure Functions options d’hébergement : comparaison des plans d’hébergement, notamment Container Apps, Flex Consumption, Premium et Dedicated.
- Azure Functions guide du développeur : présentation approfondie des déclencheurs, liaisons, comportement du runtime et configuration.