Introducción
AWS Fargate es un motor de cómputo para Amazon ECS (Elastic Container Service) y Amazon EKS (Elastic Kubernetes Service) que permite ejecutar contenedores sin tener que gestionar servidores o clústeres de instancias de EC2. Con Fargate, puedes centrarte en diseñar y construir tus aplicaciones en lugar de gestionar la infraestructura subyacente.
Conceptos Clave
- Contenedores: Un contenedor es una unidad estándar de software que empaqueta el código y todas sus dependencias para que la aplicación se ejecute de manera rápida y confiable en diferentes entornos informáticos.
- Amazon ECS: Un servicio de orquestación de contenedores que facilita la ejecución, detención y gestión de contenedores en un clúster.
- Amazon EKS: Un servicio de Kubernetes gestionado que facilita la ejecución de Kubernetes en AWS sin necesidad de instalar y operar su propio clúster de Kubernetes.
- Task Definition: Un archivo JSON que describe una o más contenedores que forman tu aplicación.
- Service: Permite ejecutar y mantener un número especificado de tareas simultáneamente en un clúster.
Ventajas de AWS Fargate
- Sin gestión de servidores: No necesitas aprovisionar, configurar ni escalar clústeres de máquinas virtuales.
- Escalabilidad automática: Fargate escala automáticamente la infraestructura subyacente para satisfacer las necesidades de tu aplicación.
- Seguridad mejorada: Cada tarea de Fargate se ejecuta en su propio entorno aislado, mejorando la seguridad.
- Costos optimizados: Pagas solo por los recursos que tus contenedores utilizan.
Configuración de AWS Fargate
Paso 1: Crear una Task Definition
- Accede a la consola de Amazon ECS.
- Navega a "Task Definitions" y haz clic en "Create new Task Definition".
- Selecciona "Fargate" como tipo de lanzamiento.
- Configura los detalles de la Task Definition:
- Nombre: Asigna un nombre a tu Task Definition.
- Contenedor: Añade un contenedor especificando la imagen de Docker y los recursos (CPU y memoria) que necesita.
{ "family": "my-fargate-task", "networkMode": "awsvpc", "containerDefinitions": [ { "name": "my-container", "image": "nginx", "cpu": 256, "memory": 512, "essential": true, "portMappings": [ { "containerPort": 80, "hostPort": 80 } ] } ], "requiresCompatibilities": ["FARGATE"], "cpu": "256", "memory": "512" }
Paso 2: Crear un Clúster
- Accede a la consola de Amazon ECS.
- Navega a "Clusters" y haz clic en "Create Cluster".
- Selecciona "Networking only" (Fargate) y sigue las instrucciones para crear el clúster.
Paso 3: Crear un Servicio
- Accede a la consola de Amazon ECS.
- Navega a "Clusters" y selecciona el clúster que creaste.
- Haz clic en "Create" y selecciona "Service".
- Configura los detalles del servicio:
- Launch type: Selecciona "Fargate".
- Task Definition: Selecciona la Task Definition que creaste.
- Cluster: Selecciona tu clúster.
- Service name: Asigna un nombre al servicio.
- Number of tasks: Especifica el número de tareas que deseas ejecutar.
Paso 4: Configurar la Red y Seguridad
-
Configura la red:
- VPC: Selecciona la VPC donde deseas ejecutar tus tareas.
- Subnets: Selecciona las subredes.
- Security groups: Selecciona o crea un grupo de seguridad que permita el tráfico necesario.
-
Configura la asignación de IP:
- Auto-assign public IP: Selecciona "ENABLED" si deseas que las tareas tengan una IP pública.
Paso 5: Lanzar el Servicio
- Revisa la configuración y haz clic en "Create Service".
- Monitorea el estado del servicio en la consola de Amazon ECS.
Ejemplo Práctico
Ejercicio: Desplegar una Aplicación Web con AWS Fargate
Objetivo: Desplegar una aplicación web simple utilizando AWS Fargate.
Pasos:
- Crear una Task Definition para un contenedor Nginx.
- Crear un Clúster de Fargate.
- Crear un Servicio que ejecute la Task Definition en el clúster.
- Configurar la Red y Seguridad para permitir el tráfico HTTP.
Solución:
-
Task Definition:
- Nombre:
web-app-task
- Contenedor:
nginx
- CPU:
256
- Memoria:
512
- Puerto:
80
- Nombre:
-
Clúster:
- Nombre:
web-app-cluster
- Nombre:
-
Servicio:
- Nombre:
web-app-service
- Número de tareas:
1
- Nombre:
-
Red y Seguridad:
- VPC:
default
- Subnets:
default
- Security group: Permitir tráfico HTTP (puerto 80)
- VPC:
{ "family": "web-app-task", "networkMode": "awsvpc", "containerDefinitions": [ { "name": "nginx", "image": "nginx", "cpu": 256, "memory": 512, "essential": true, "portMappings": [ { "containerPort": 80, "hostPort": 80 } ] } ], "requiresCompatibilities": ["FARGATE"], "cpu": "256", "memory": "512" }
Conclusión
AWS Fargate simplifica la ejecución de contenedores al eliminar la necesidad de gestionar la infraestructura subyacente. Con Fargate, puedes centrarte en desarrollar y desplegar tus aplicaciones sin preocuparte por la gestión de servidores. En este módulo, aprendiste a crear una Task Definition, un clúster y un servicio en Fargate, y a configurar la red y la seguridad para tu aplicación.
Próximos Pasos
En el siguiente tema, exploraremos AWS Organizations, que te permitirá gestionar y consolidar múltiples cuentas de AWS de manera centralizada.
Curso de AWS
Módulo 1: Introducción a AWS
- ¿Qué es AWS?
- Configuración de tu cuenta de AWS
- Infraestructura global de AWS
- Consola de administración de AWS