¿Qué es ACA?
Es un servicio de Microsoft Azure que sirve para ejecutar aplicaciones en contenedores (como Docker) sin tener que gestionar servidores.
- Usa contenedores (Docker)
- Es serverless --> no gestiona servidores
- Escala automáticamente (más o menos instancias según tráfico)
- Está basado internamente en kubernetes (pero no lo vemos)
Desplegar web en ACA
Tarea
Tenemos q acabar con:
- una web simple en contenedor
- una imagen Docker
- un Azure Container Registry (ACR)
- una Azure Container App (ACA)
- revisiones y actualización funcionando
1. Crear una web simple para contenedor
1.1 Crear la estructura del proyecto.
Crearemos la carpeta del proyecto
1.2 Creamos el archivo HTML.
Creamos index.html, podemos hacerlo con touch.
Y añadimos el siguiente contenido:
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Mi Web ACA</title>
</head>
<body>
<h1>Hola Mundo desde Azure Container Apps</h1>
<p> Primera práctica con contenedores en Azure.</p>
</body>
</html>
1.3 Crear el Dockerfile.
Creamos Dockerfile también con touch.
Para evitar fallos debemos escribir 'Dockerfile' con D mayúscula
En el caso de que no lo escribamos así, podemos posteriormente, construir la imagen escribiendo el siguiente comando con opción -f que especifica cual es el fichero dockerfile:
y escribimos lo siguiente:
2. Crear Azure Container Registry (ACR)
2.1 Crear Resource Group.
Esta vez lo vamos a crear por terminal que no lo hemos hecho antes, para ello lo que vamos a hacer es:ç
- Acceder a la terminal
Te aparecerá para hacer login
- Crear el grupo de recursos
2.2 Crear Azure Container Registry.
Podemos hacerlo por comandos o por gráfico
Escribimos en la terminal:
Eso de 'sku basic' es Stock Keeping Unit que significa "categoría de precio y capacidades de un servicio"
Existen:
-
Basic:
- Más barato
- Ideal apra pruebas y ejercicios
- Capacidad sufiiente para imágenes pequeñas/medianas
- Menor rendimiento y características limitadas
-
Standard:
- Más rendimiento
- Más almacenamiento y throughoput
- Mejor par equipos pequeños o proyectos reales
-
Premium:
- Alta disponibilidad
- Geo-replicación (varias regiones)
- Seguridad avanzada (Private Link, firewall más completo)
- Pensado para empresas
3. Subir la imagen al Registry de Azure.
Podemos realizar la subida de la imagen de 2 formas:
- De forma universal, es decir, nos servirá para cualquier entorno, para ello utilizaremos docker.
- Según Azure, es decir, utilizando las herramientas de CLI que nos ofrece Azure.
1. Login en el registry.
Accedemos al registry que acabamos de crear
IMPORTANTE
El registry debe indicarse SIEMPRE CON MINÚSCULAS aunque lo hayamos puesto con mayúsculas porque sino es posible que nos de fallo.
2. Construimos la imagen en Azure
3. Verificamos que se han subido.
Con
o también podemos utilizar
1. Construir la imagen.
Con este comando como vimos anteriormente construiremos la imagen:
cd ruta/carpeta/dockerfile/e/index.html
docker build -t [nombre-imagen]:v1 .
docker build -t [nombre-imagen]:v1 -f /ruta/carpeta/dockerfile/[nombre-archivo-dockerfile] .
2. Ejecutamos el contenedor.
3. Verificamos que funciona.
Abrimos el navegador y escribimos: http://localhost:8080
4. Etiquetar la imagen (en local).
El etiquetado a la hora de hacer imágenes es obligatorio cuando hacemos push manual porque docker necesita un nombre completo tipo <registry>.azurecr.io/<repo>:<tag>
Esto principalmente sirve para asignarle un nombre completo y una versión (tag) que indica dónde se va a almacenar y cómo se va a identificar.
IMPORTANTE
Solo tenemos que hacerlo sino hemos hecho esto antes
Es decir, si lo haces de la forma de Azure, no te haría falta.De esta forma ya lo crea y lo sube directamente a Azure
No confundir con docker build --image <repo>:<tag>
En caso de tener que hacerlo (NOSOTROS DEBEMOS)
5. Subir la imagen al Registry (ACR).
Ahora debemos subir la imagen a Azure.
Para hacerlo, lanzamos el siguiente comando
4. Crear * entorno * en Azure Container Apps (ACA).
¡OJO!
No es lo mismo "ACA" que "entorno ACA".
El entorno proporciona la infraestructura compartida necesaria para ejeutar contenedores, mientras que la ACA represetna la aplicación concreta desplegada dentro de dicho entorno.
| Recurso | Función |
|---|---|
| ACA Environment | infraestructura |
| Container App | la web/contenedor |
Podemos hacerlo de 2 formas, por comandos o por gráfico:
Buscaremos este servicio dentro de Azure:
NO buscamos "entorno"
Porque desde aquí no se puede crear, tenemos que hacerlo directamente desde "Container Apps"
Le damos a crear y nos aparecerán 2 opciones:
| Opción | Qué es |
|---|---|
| Aplicación contenedora (elegida) | Servicio o aplicación que permanece ejecutándose continuamente, como una web, API o microservicio accesible desde internet. |
| Trabajo de la aplicación contenedora | Tarea temporal o programada que se ejecuta solo cuando se lanza, utilizada para procesos batch, automatizaciones o scripts. |
En la primera ventana de "Datos básicos" aparecerá para crear el entorno, vamos ahí lo primero, donde le damos al enlace azul de "Crear nuevo entorno":
Rellenamos los "Datos básicos":
Dejamos por defecto los "Perfiles de carga de trabajo" que son los que determinan cómo azure asigna recursos y escalado a las aplicaciones desplegadas en el entorno Container Apps.
Rellenamos la "Supervisión"
En este apartado debemos crear también el área de trabajo que es un recurso utilizado por Azure para centralizar los registros y métricas generados por las aplicaciones y servicios desplegados.
¿Cómo hacerlo?
Le damos donde poner "Crear nuevo" y nos aparecerá esta ventana donde escribimos el nombre que queremos.
Rellenamos el apartado de "Redes"
-
Registrar providers (si es la primera vez que lo hacemos)
-
Crear los workspace de logs
-
Obtener Workspace ID y Key
-
Crear entorno ACA
5. Crear el Container Apps (ACA).
Rellenamos los "Datos básicos"
La opción de "Azure Functions", la dejamos desactivada, lo que hace es adaptar la configuración de Azure Container Apps para ejecutar aplicaciones serverless basadas en Azure Functions. Está oriendada a cargas de trabajo por eventos y no a aplicaciones web tradicionales como la qie estamos desplegando.
La opción de "Origen de implementación", elegimos "Imagen de contenedor" porque anteriormente creamos una imagen y la almacenamos en ACR.
La opción de "Mostrar entornos en todas las regiones", la dejaremos desmarcada porque esta opción lo que hace es que nos permite visualizar entornos ACA desplegados en distintas regiones de Azure. En esta práctica no es necesario porque todos los recursos están siendo desplegados en la misma región.
Rellenamos el apartado de "Contenedor"
Y todo esto restante por defecto
Rellenamos el apartado de "Entrada", seleccionamos "Conexiones no seguras" al estar haciendo una práctica pero no sería bueno hacerlo realmente, deberíamos de crearnos los certificados y las cosas necesarias para ello.
Le damos a crear y ya estaría
6. Desplegar la aplicación en Azure Container Apps.
Buscaremos la app dentro de "Aplicación contenedora" y su nombre, una vez ahí le damos al enlace para acceder
Vemos que efectivamente, funciona:
7. Actualizar la aplicación.
Tarea
Modificae el contenido de la página web y crear una nueva versión de la imagen del contenedor. Subir la nueva versión al registry y actualizar la Container App para desplegar esta nueva versión.
Comprobar que el cambio se refleja en la web publicada.
Iremos a nuestro visual studio y modificaremos el .html que compone la web, una vez hecho, contruimos la imagen como hicimos antes pero cambiando v1 por v2:
Si ahora entramos en ACR de Azure podemos ver que nos aparece dentro de la imagen una v2
Para que esto se modifique en nuestra web, debemos cambiar el tag de v1 por el v2 en la imagen del contenedor.
Sigue los pasos de la siguiente imagen para realizarlo:
Cuando acabe de aplicarse los cambios veremos esto de "Revisión" (en el siguiente punto lo explico)
Comprobamos que al acceder al contenedor por la URL como antes, nos aparece el nuevo .html
8. Revisiones y escalado automático.
¿Qué son las revisiones?
Las revisiones representan diferentes versiones desplegadas de una aplicación contenedora. Cada vez que se modifica la configuración de la aplicación o se despliega una nueva imagen Docker, Azure genera automáticamente una nueva revisión.
Estas revisiones permiten mantener un historial de despliegues y facilitan la administración de versiones de la aplicación.
Funcionamiento de las revisiones.
Una nueva revisión se crea automáticamente cuando se realizan cambios como:
- Actualización de la imagen del contenedor
- Modificacion de variables de entorno
- Cambios en CPU o memoria
- Configuración de escalado
- Cambios en la entrada de red (Ingress)
Cada revisión funciona de forma independiente y puede activarse o desactivarse según las necesidades de despliegue
Ventajas del sistema de revisiones
- Despliegues seguros: permite desplegar nuevas versiones sin eliminar inmediatamente la versión anterior.
- Rollback sencillo: es posible volver rápidamente a una revisión en caso de errores.
- Control de tráfico: azure permite distribuir tráfico entre distintas revisiones para realizar pruebas progresivas.
- Historial de versiones: facilita el seguimiento de cambios y actualizaciones realizadas en la aplicación.
Ejemplo
Para encontrarlas debemos ir a la app que hemos creado y dentro buscar "revisiones".
Aquí tenemos las "Revisiones actuales":
Aquí tenemos las "Revisiones inactivas":
¿Qué en el escalado automático?
El escalado automático permite que Azure aumente o reduzca automáticamente el número de instancias de la aplicación según la carga de trabajo.
Esto permite optimizar:
- el rendimiento
- el consumo de recursos
- el coste de ejecución
Configuración del escalado
En Azure Container Apps (ACA) pueden configurarse diferentes parámetros de escalado:
| Configuración | Función |
|---|---|
| Réplicas mínimas | Número mínimo de instancias activas |
| Réplicas máximas | Número máximo de instancias permitidas |
| Reglas de escalado | Condiciones que activan el escalado |
Tipos de reglas de escalado
Azure permite configurar escalado basado en distintos criterios:
| Tipo de escalado | Descripción |
|---|---|
| HTTP | Número de peticiones recibidas |
| CPU | Uso del procesador |
| Memoria | Consumo de memoria RAM |
| KEDA | Eventos externos y colas de mensajes |
Ventajas del escalado automático
- Optimización de recursos: azure ajusta automáticamente el número de instancias necesarias.
- Alta disponibilidad: permite aumentos de tráfico sin intervención manual.
- Reducción de costes: Cuando no hay carga, azure reduce automáticamente el consumo de recursos.
- Automatización: no es necesario administrar manualmente servidores o instancias.
Ejemplo
Para acceder a ellas iremos a nuestro contenedor y buscamos escala (o scale).
-
Réplicas mínimas:
Indica el número mínimo de instancias de la aplicación que estarán siempre activas.
Ejemplo: | Valor | Resultado | |-------|-----------| | 0 | La app puede apagarse completamente si no hay tráfico | | 1 | Siempre habŕa una instancia activa |
-
Máximo de réplicas:
Define el número máximo de instancias que Azure puede crear automáticamente.
Sirve para limitar el consumo y evita crear demasiadas instancias en caso de mucho tráfico.
-
Periodo de recuperación (Cooldown period):
Es el tiempo que Azure espera antes de volver a escalar la aplicación tras realizar un cambio de escalado.
Sirve para evitar que Azure:
- Aumente y reduzca instancias constantemente
- Genere cambios demasiado rápidos
Ejemplo:
Si Azure aumenta de 1 a 3 réplicas, esperará el tiempo configurado antes de volver a modificar el número de instancias.
Lo que mejora la estabilidad del sistema y evita escalados innecesarios.
-
Intervado de sondeo (Polling interval):
Es la frecuencia con la que Azure revisa las métricas de la aplicación para decidir si debe escalar.
Sirve para analizar periódicamente:
- tráfico HTTP
- CPU
- memoria
- eventos
y decide:
- aumentar réplicas
- reducir réplicas
- mantener estado actual
-
Número actual de réplicas:
Muestra cuántas instancias de la aplicación están ejecutándose actualmente.
-
Reglas de escalado:
Son las condiciones que Azure utiliza para decidir cuándo aumentar o reducir el número de réplicas.



































