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

  1. 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.
  2. 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.
  3. 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.
  4. Task Definition: Un archivo JSON que describe una o más contenedores que forman tu aplicación.
  5. 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

  1. Accede a la consola de Amazon ECS.
  2. Navega a "Task Definitions" y haz clic en "Create new Task Definition".
  3. Selecciona "Fargate" como tipo de lanzamiento.
  4. 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

  1. Accede a la consola de Amazon ECS.
  2. Navega a "Clusters" y haz clic en "Create Cluster".
  3. Selecciona "Networking only" (Fargate) y sigue las instrucciones para crear el clúster.

Paso 3: Crear un Servicio

  1. Accede a la consola de Amazon ECS.
  2. Navega a "Clusters" y selecciona el clúster que creaste.
  3. Haz clic en "Create" y selecciona "Service".
  4. 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

  1. 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.
  2. 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

  1. Revisa la configuración y haz clic en "Create Service".
  2. 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:

  1. Crear una Task Definition para un contenedor Nginx.
  2. Crear un Clúster de Fargate.
  3. Crear un Servicio que ejecute la Task Definition en el clúster.
  4. Configurar la Red y Seguridad para permitir el tráfico HTTP.

Solución:

  1. Task Definition:

    • Nombre: web-app-task
    • Contenedor: nginx
    • CPU: 256
    • Memoria: 512
    • Puerto: 80
  2. Clúster:

    • Nombre: web-app-cluster
  3. Servicio:

    • Nombre: web-app-service
    • Número de tareas: 1
  4. Red y Seguridad:

    • VPC: default
    • Subnets: default
    • Security group: Permitir tráfico HTTP (puerto 80)
{
  "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.

© Copyright 2024. Todos los derechos reservados