Déployer une API .NET sur Azure Container Apps
Déployer une image en une commande
az containerapp up fait tout le travail de bootstrap au premier déploiement :
--target-port 8080 doit correspondre au port que Kestrel écoute dans le conteneur ( ASPNETCORE_URLS=http://+:8080 ). L'ingress external expose un FQDN HTTPS public avec certificat géré ; internal réserve l'app au trafic intra-environment, idéal pour un service appelé seulement par d'autres apps.
Scale-to-zero et règles KEDA
--min-replicas 0 , une app inactive ne coûte rien . À la première requête, la plateforme démarre un réplica (cold start de quelques centaines de millisecondes). Le scaling repose sur KEDA : on déclare des règles sur des métriques, pas seulement sur le CPU.
azure-servicebus ou azure-queue : l'app dort tant que la file est vide, puis monte en charge selon la profondeur de la queue. Le catalogue des scalers KEDA couvre Kafka, Redis, Prometheus et bien d'autres.
Révisions et traffic split
multiple , plusieurs révisions tournent en parallèle et on répartit le trafic — la base d'un déploiement canary ou blue-green.
100 , sinon on revient à 0 instantanément — sans redéployer. C'est un rollback qui se mesure en secondes.
Gérer la configuration proprement
secretref: . Mieux : activez l' identité managée sur l'app et faites pointer un secret directement vers Azure Key Vault, sans jamais matérialiser la valeur. La documentation Container Apps détaille ingress, Dapr et les sondes de santé ( liveness / readiness ) à câbler pour un service de production.
Container Apps, c'est le serverless sans renoncer aux conteneurs : on garde son image OCI et son Dockerfile, mais on oublie le cluster . Scale-to-zero et traffic split offerts.