Clément Schanen

ConteneursService régional

Fargate

Permet d’exécuter des conteneurs sans provisionner ni administrer les machines qui les portent

Présentation

  • Moteur de calcul serverless pour conteneurs, que pilotent ECS et EKS
  • Le CPU et la mémoire d’une tâche sont déclarés ; AWS fournit la machine, la corrige et la dimensionne

Cas d’utilisation

  • Microservices et applications à charge irrégulière
  • Traitements batch et tâches planifiées

EC2 ou Fargate

EC2 Fargate
Machines à provisionner fournies par AWS
Facturation à l’instance, allumée ou non aux ressources demandées
Isolation noyau partagé entre tâches une micro-VM par tâche

Mise en œuvre

Fargate ne s’emploie pas seul : c’est ECS ou EKS qui l’appelle, et chacun a sa manière de désigner ce qui doit y être exécuté.

  • Sur ECS, chaque tâche déclare son type de lancement, EC2 ou FARGATE. Un même cluster peut donc exécuter les deux.
  • Sur EKS, un Fargate profile énumère les namespaces et les étiquettes des pods à exécuter sur Fargate. Les autres restent sur des nœuds EC2.

Réseau

  • Mode awsvpc obligatoire : une interface réseau et une adresse IP privée par tâche
  • S’enregistre en cible de type ip derrière un ALB ou un NLB
  • En sous-réseau privé, joindre ECR ou CloudWatch exige une NAT Gateway ou des VPC endpoints

Stockage

  • 20 Go de stockage éphémère par tâche, extensible jusqu’à 200 Go
  • Ce stockage disparaît avec la tâche. Pour la persistance il faut utiliser un volume EFS, partageable entre tâches, ou un volume EBS attaché à une tâche ECS

Facturation

  • À la seconde, sur les ressources demandées, avec une minute au minimum
  • Fargate Spot : jusqu’à 70 % de remise, préavis de 2 minutes — sur ECS uniquement
  • Le couple CPU / mémoire n’est pas libre : chaque valeur de vCPU n’accepte qu’une liste de tailles mémoire. 0,25 vCPU se limite à 0,5, 1 ou 2 Go ; 16 vCPU monte à 120 Go

Sécurité

L’isolation de Fargate n’est pas qu’une commodité d’exploitation : elle réduit la surface d’attaque.

  • Une micro-VM par tâche. Chaque tâche s’exécute dans sa propre micro-VM Firecracker. Aucun noyau n’est partagé entre deux tâches, là où plusieurs conteneurs d’une même instance EC2 partagent celui de l’hôte.
  • Pas d’hôte à atteindre. Ni accès shell, ni démon Docker exposé, ni chemin vers les autres conteneurs en passant par l’hôte
  • Pas de rôle d’instance à voler. Les task roles existent aussi en mode EC2 ; mais là, un conteneur peut joindre le service de métadonnées de l’instance et obtenir les identifiants de son rôle, souvent plus large — à moins de l’avoir explicitement bloqué. Sur Fargate, il n’y a pas de rôle d’instance.
  • Un groupe de sécurité par tâche. Le mode awsvpc donne à chaque tâche sa propre interface réseau, donc ses propres règles de filtrage, quand le mode bridge sur EC2 fait partager l’interface de l’hôte
  • Correctifs appliqués par AWS sur le noyau de l’hôte, le moteur de virtualisation et l’agent Fargate, sans interruption à gérer

Dans le modèle de responsabilité partagée, la part qui reste à la charge du client se réduit d’autant.

Limites à connaître

  • Pas de conteneur privilégié, pas de réseau host, pas de GPU
  • Pas de DaemonSet sur EKS : chaque pod ayant son nœud, un agent par nœud n’a pas de sens
  • Démarrage plus lent qu’une instance déjà chaude
  • Conteneurs Windows : possibles sur ECS, pas sur EKS