Exploración de Azure Container Instances
Azure Container Instances (ACI) es una excelente solución para cualquier escenario que pueda funcionar en contenedores aislados, incluidas las aplicaciones simples, la automatización de tareas y los trabajos de compilación. Estas son algunas de las ventajas:
- Inicio rápido: ACI puede iniciar contenedores en Azure en cuestión de segundos, sin necesidad de aprovisionar y administrar una máquina virtual (VM)
- Acceso al contenedor: ACI permite exponer los grupos de contenedores directamente a Internet con una dirección IP y un nombre de dominio completo (FQDN).
- Seguridad de nivel de hipervisor: la aplicación se aísla completamente, como si estuviera en una máquina virtual.
- Datos del cliente: el servicio ACI almacena los datos mínimos del cliente necesarios para asegurarse de que los grupos de contenedores se ejecutan según lo previsto.
- Tamaños personalizados: ACI proporciona un uso óptimo al permitir especificaciones exactas de los núcleos y la memoria de la CPU.
- Almacenamiento persistente: monte recursos compartidos de Azure Files directamente en un contenedor para recuperar y conservar el estado.
- Linux y Windows: programe contenedores Windows y Linux con la misma API.
En aquellos escenarios donde se necesita una orquestación completa de contenedores, incluida la detección de servicios en varios contenedores, el escalado automático y las actualizaciones de aplicaciones coordinadas, se recomienda Azure Kubernetes Service (AKS).
Grupos de contenedores
El recurso de nivel superior de Azure Container Instances es el grupo de contenedores. Un grupo de contenedores es una colección de contenedores que se programan en la misma máquina host. Los contenedores de un grupo comparten un ciclo de vida, los recursos, la red local y los volúmenes de almacenamiento. Es similar en concepto a un pod en Kubernetes.
El siguiente diagrama muestra un ejemplo de un grupo de contenedores que incluye varios contenedores:
Este grupo de contenedores de ejemplo:
- Se programó en una única máquina host.
- Se le asigna una etiqueta de nombre DNS.
- Expone una única dirección IP pública, con un puerto expuesto.
- Consta de dos contenedores. Un contenedor escucha en el puerto 80, mientras el otro escucha en el puerto 5000.
- Incluye dos recursos compartidos de archivos de Azure como montajes de volumen y cada contenedor monta uno de los recursos compartidos de forma local.
Nota
Los grupos de varios contenedores solo admiten actualmente contenedores Linux. Para los contenedores Windows, Azure Container Instances solo admite la implementación de una única instancia.
Implementación
Hay dos maneras comunes de implementar un grupo de varios contenedores: usar una plantilla de Resource Manager o un archivo YAML. Se recomienda una plantilla de Resource Manager cuando necesite implementar más recursos de servicio de Azure (por ejemplo, un recurso compartido de archivos de Azure Files) al implementar las instancias de contenedor. Dada la naturaleza más concisa del formato YAML, se recomienda usar un archivo YAML cuando la implementación incluya solo instancias de contenedor.
Asignación de recursos
Azure Container Instances asigna recursos como CPU, memoria y, opcionalmente, GPU (versión preliminar) a un grupo de contenedores mediante la adición de las solicitudes de recursos de las instancias del grupo. Usando recursos de CPU como ejemplo, si se crea un grupo de contenedores con dos instancias y cada una de ellas solicita una CPU, se asignan dos CPU al grupo de contenedores.
Redes
Los grupos de contenedores comparten una dirección IP y un espacio de nombres de puerto en esa dirección IP. Para permitir que los clientes externos lleguen a un contenedor dentro del grupo, debe exponer el puerto en la dirección IP y desde el contenedor. Dado que los contenedores dentro del grupo comparten un espacio de nombres de puerto, no se admite la asignación de puertos. Los contenedores dentro de un grupo pueden comunicarse entre sí a través de localhost en los puertos que han expuesto, incluso si estos puertos no se exponen externamente en la dirección IP del grupo.
Storage
Puede especificar volúmenes externos para montar dentro de un grupo de contenedores. Puede asignar los volúmenes en rutas de acceso específicas dentro de los contenedores individuales en un grupo. Los volúmenes admitidos incluyen:
- Recurso compartido de archivos de Azure
- Secreto
- Directorio vacío
- Repositorio de Git clonado
Escenarios frecuentes
Los grupos de varios contenedores son útiles en los casos en los que se quiere dividir una sola tarea funcional en varias imágenes de contenedor. Estas imágenes las pueden entregar diferentes equipos y tener requisitos de recursos independientes.
Ejemplos posibles de uso serían:
- Un contenedor para servir una aplicación web y un contenedor para extraer el contenido más reciente desde el control de código fuente.
- Un contenedor de aplicación y un contenedor de registro. El contenedor de registro recopila la salida de registros y métricas de la aplicación principal y los escribe en un almacenamiento a largo plazo.
- Un contenedor de aplicación y un contenedor de supervisión. Periódicamente, el contenedor de supervisión realiza una solicitud a la aplicación para asegurarse de que se está ejecutando y responde correctamente, y genera una alerta si no es así.
- Un contenedor de front-end y un contenedor de back-end. El front-end puede servir una aplicación web y el back-end ejecutar un servicio para recuperar datos.