Introducció a AWS Fargate

AWS Fargate és un motor de computació per a Amazon ECS (Elastic Container Service) i Amazon EKS (Elastic Kubernetes Service) que permet executar contenidors sense haver de gestionar els servidors o clústers subjacents. Amb Fargate, només cal que especifiquis els recursos necessaris per a les teves aplicacions, i AWS s'encarrega de la resta.

Conceptes Clau

  • Contenidors: Unitats lleugeres i portàtils que encapsulen una aplicació i les seves dependències.
  • Amazon ECS: Servei de gestió de contenidors que permet executar aplicacions en clústers gestionats.
  • Amazon EKS: Servei de Kubernetes gestionat que facilita l'execució de Kubernetes a AWS.
  • Task Definition: Plantilla que defineix com s'ha d'executar un contenidor, incloent-hi la imatge del contenidor, els recursos necessaris i les configuracions de xarxa.

Avantatges d'Utilitzar AWS Fargate

  • Gestió Simplificada: No cal gestionar servidors o clústers.
  • Escalabilitat Automàtica: Escala automàticament segons les necessitats de l'aplicació.
  • Seguretat: Cada tasca de Fargate s'executa en el seu entorn aïllat, millorant la seguretat.
  • Costos: Pagues només pels recursos que utilitzes.

Configuració d'una Aplicació amb AWS Fargate

Pas 1: Crear una Definició de Tasca (Task Definition)

  1. Accedeix a la Consola d'AWS ECS.
  2. Crea una nova definició de tasca:
    • Selecciona "Fargate" com a tipus de llançament.
    • Defineix els paràmetres del contenidor, com ara la imatge del contenidor, la memòria i la CPU.
{
  "family": "my-fargate-task",
  "networkMode": "awsvpc",
  "containerDefinitions": [
    {
      "name": "my-container",
      "image": "nginx",
      "memory": 512,
      "cpu": 256,
      "essential": true,
      "portMappings": [
        {
          "containerPort": 80,
          "hostPort": 80
        }
      ]
    }
  ],
  "requiresCompatibilities": ["FARGATE"],
  "cpu": "256",
  "memory": "512"
}

Pas 2: Crear un Clúster

  1. Accedeix a la Consola d'AWS ECS.
  2. Crea un nou clúster:
    • Selecciona "Fargate" com a tipus de clúster.
    • Configura els paràmetres de xarxa, com ara la VPC i les subxarxes.

Pas 3: Llançar una Tasca

  1. Accedeix a la Consola d'AWS ECS.
  2. Llança una nova tasca:
    • Selecciona la definició de tasca creada anteriorment.
    • Selecciona el clúster creat.
    • Configura els paràmetres de llançament, com ara la VPC i les subxarxes.

Pas 4: Monitoritzar la Tasca

  1. Accedeix a la Consola d'AWS ECS.
  2. Monitoritza l'estat de la tasca:
    • Revisa els logs i l'estat de la tasca per assegurar-te que s'executa correctament.

Exemples Pràctics

Exemple 1: Llançar un Contenidor Nginx

{
  "family": "nginx-task",
  "networkMode": "awsvpc",
  "containerDefinitions": [
    {
      "name": "nginx",
      "image": "nginx",
      "memory": 512,
      "cpu": 256,
      "essential": true,
      "portMappings": [
        {
          "containerPort": 80,
          "hostPort": 80
        }
      ]
    }
  ],
  "requiresCompatibilities": ["FARGATE"],
  "cpu": "256",
  "memory": "512"
}

Exemple 2: Llançar una Aplicació Node.js

{
  "family": "nodejs-task",
  "networkMode": "awsvpc",
  "containerDefinitions": [
    {
      "name": "nodejs-app",
      "image": "node:14",
      "memory": 512,
      "cpu": 256,
      "essential": true,
      "portMappings": [
        {
          "containerPort": 3000,
          "hostPort": 3000
        }
      ],
      "command": ["node", "app.js"]
    }
  ],
  "requiresCompatibilities": ["FARGATE"],
  "cpu": "256",
  "memory": "512"
}

Exercicis Pràctics

Exercici 1: Llançar un Contenidor Redis

  1. Crea una definició de tasca per a un contenidor Redis.
  2. Crea un clúster Fargate.
  3. Llança la tasca i monitoritza l'estat.

Solució

{
  "family": "redis-task",
  "networkMode": "awsvpc",
  "containerDefinitions": [
    {
      "name": "redis",
      "image": "redis",
      "memory": 512,
      "cpu": 256,
      "essential": true,
      "portMappings": [
        {
          "containerPort": 6379,
          "hostPort": 6379
        }
      ]
    }
  ],
  "requiresCompatibilities": ["FARGATE"],
  "cpu": "256",
  "memory": "512"
}

Exercici 2: Llançar una Aplicació Python Flask

  1. Crea una definició de tasca per a una aplicació Python Flask.
  2. Crea un clúster Fargate.
  3. Llança la tasca i monitoritza l'estat.

Solució

{
  "family": "flask-task",
  "networkMode": "awsvpc",
  "containerDefinitions": [
    {
      "name": "flask-app",
      "image": "pallets/flask",
      "memory": 512,
      "cpu": 256,
      "essential": true,
      "portMappings": [
        {
          "containerPort": 5000,
          "hostPort": 5000
        }
      ],
      "command": ["flask", "run", "--host=0.0.0.0"]
    }
  ],
  "requiresCompatibilities": ["FARGATE"],
  "cpu": "256",
  "memory": "512"
}

Errors Comuns i Consells

  • Error: "ResourceInitializationError": Assegura't que la definició de tasca té els recursos necessaris i que la VPC i les subxarxes estan correctament configurades.
  • Error: "Task failed to start": Revisa els logs del contenidor per identificar problemes amb la imatge del contenidor o les configuracions de xarxa.
  • Consell: Utilitza AWS CloudWatch per monitoritzar els logs i el rendiment de les teves tasques Fargate.

Conclusió

AWS Fargate simplifica l'execució de contenidors a AWS, eliminant la necessitat de gestionar la infraestructura subjacents. Amb Fargate, pots centrar-te en desenvolupar i desplegar les teves aplicacions, mentre AWS s'encarrega de la gestió dels recursos. En aquest mòdul, hem après a crear definicions de tasca, clústers i a llançar tasques amb Fargate, així com a monitoritzar-les i solucionar problemes comuns. Ara estàs preparat per utilitzar AWS Fargate per a les teves aplicacions de contenidors.

© Copyright 2024. Tots els drets reservats