Desplegar una API .NET en Azure Container Apps
Desplegar una imagen con un solo comando
az containerapp up hace todo el trabajo de bootstrap en el primer despliegue:
--target-port 8080 debe coincidir con el puerto que Kestrel escucha en el contenedor ( ASPNETCORE_URLS=http://+:8080 ). El ingress external expone un FQDN HTTPS público con certificado gestionado; internal reserva la app al tráfico intra-environment, ideal para un servicio llamado solo por otras apps.
Scale-to-zero y reglas KEDA
--min-replicas 0 , una app inactiva no cuesta nada . En la primera solicitud, la plataforma arranca una réplica (cold start de unos pocos cientos de milisegundos). El scaling se basa en KEDA : se declaran reglas sobre métricas, no solo sobre la CPU.
azure-servicebus o azure-queue : la app duerme mientras la cola está vacía y luego escala según la profundidad de la cola. El catálogo de scalers KEDA cubre Kafka, Redis, Prometheus y muchos más.
Revisiones y traffic split
multiple , varias revisiones corren en paralelo y se distribuye el tráfico — la base de un despliegue canary o blue-green.
100 ; si no, se vuelve a 0 instantáneamente — sin redesplegar. Es un rollback que se mide en segundos.
Gestionar la configuración correctamente
secretref: . Mejor aún: active la identidad administrada en la app y apunte un secret directamente a Azure Key Vault, sin materializar nunca el valor. La documentación de Container Apps detalla ingress, Dapr y las sondas de salud ( liveness / readiness ) que hay que cablear para un servicio de producción.
Container Apps es el serverless sin renunciar a los contenedores: se mantiene la imagen OCI y el Dockerfile, pero se olvida el clúster . Scale-to-zero y traffic split incluidos.