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)
- Accedeix a la Consola d'AWS ECS.
- 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
- Accedeix a la Consola d'AWS ECS.
- 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
- Accedeix a la Consola d'AWS ECS.
- 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
- Accedeix a la Consola d'AWS ECS.
- 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
- Crea una definició de tasca per a un contenidor Redis.
- Crea un clúster Fargate.
- 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
- Crea una definició de tasca per a una aplicació Python Flask.
- Crea un clúster Fargate.
- 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.
