Archives de
Mois : janvier 2018

Bien débuter avec Amazon EC2 Container Service (101) – Cluster & task

Bien débuter avec Amazon EC2 Container Service (101) – Cluster & task

Nous continuons dans la série “Bien débuter avec Amazon EC2 Container Service” en se concentrant sur les tasks et les clusters qui vont les héberger.

1 – Qu’est ce qu’un Cluster

Un cluster ECS est un regroupement d’instances EC2 qui vont héberger vos containers.

Exemple d'un cluster ECS
Exemple d’un cluster ECS

Un cluster peut contenir une ou plusieurs instances, de différents types et taille. Dans notre exemple, nous utiliserons une t2.micro.

2 – Création d’un cluster ECS

Nous allons nous connecter à la console web aws pour ecs. Nous allons cliquer sur “Cluster” dans le menu de gauche. Dans l’écran suivant (liste des clusters), nous allons cliquer sur “Create Cluster” pour créer notre premier cluster.

Dans l’écran de création de cluster nous avons un formulaire très complet avec de nombreuses options. Nous allons utiliser les champs suivants :

  • Cluster Name : helloworldCluster
  • Provisioning Model : On-Demand Instance
  • EC2 instance type : t2.micro
  • VPC : choisir la VPC où vous désirez créer vos instances
  • Security group : Choisir/Créer un security group qui ouvre le port 80

Cliquez sur le bouton bleu “Create” pour créer le cluster. Il devrait maintenant apparaître dans la liste des clusters

ECS Cluster
ECS Cluster

3 – Task Definition ou comment définir le lancement des containers

Une task definition est une liste des paramètres qui vont permettre le lancement de nos containers.

Pour la créer, nous allons cliquer sur “Task definitions” dans le menu de gauche, puis sur le bouton bleu “Create new Task Definition”.

Cette première task definition va nous permettre de lancer un container, qui aura son port HTTP (80) lié au port 8080 sur l’instance hôte.

Pour notre exemple nous allons remplir les champs suivants :

  • Task Definition Name : Helloworld-1
  • Container Definitions : cliquez sur “add container”
    • Container name : Helloworld
    • Image : 123456789012.dkr.ecr.eu-west-1.amazonaws.com/helloworld:latest
    • Memory Limits (MB) : 128
    • Port mappings :
      • Host : 8080
      • Container : 80
      • protocol : tcp
    • Cliquez sur le bouton “Add”

Vous pouvez ensuite cliquer sur le bouton bleu “Create”

ECS Task definition
ECS Task definition

De nombreuses autres options sont disponibles dans le Container Definitions, pour permettre une définition fine des besoins des containers (Mapping de volumes, lien entre containers …)

4 – Exécution d’une task

Maintenant que nous avons créé notre Cluster de machine hôte et que nous avons décrit la manière de lancer le container, nous pouvons enfin l’exécuter.
Pour cela, nous allons cliquer sur le menu “Cluster” puis choisir dans la liste notre cluster helloworldCluster. Nous arrivons donc ici :

ECS Cluster Hello world
ECS Cluster Hello world

Cliquez sur l’onglet “Task” puis sur le bouton bleu “Run new Task”
Dans l’écran suivant nous allons choisir tous les éléments que nous avons créé précédemment

ECS run task
ECS run task

La task est créée et est prête à recevoir des messages.

5 – Connexion au container

Il ne reste plus qu’à valider que le container répond bien à nos requêtes HTTP.
Nous allons nous connecter directement à l’instance hôte sur le port 8080.
Pour trouver son IP, il suffit de cliquer sur le nom de la task (dans notre cas 67f6a5b4-4…) pour afficher les détails.
Dans la partie container il faut cliquer sur le triangle à côté du nom du container (helloworld) pour afficher les détails, l’IP sera dans la section “Network Bindings”

ECS host IP
ECS host IP

Vous pouvez ensuite aller dans votre navigateur préféré, et entrez l’url du container pour afficher la page

ECS task result
ECS task result

Félicitations, vous avez fait fonctionner votre premier container sur Amazon EC2 Container Service.

Dans le prochain article nous verrons comment aller plus loin en créant un service se basant sur l’image de container existante. Ainsi plusieurs containers seront lancés et pourront répondre à vos requêtes