Menu

Cette page a fait l'objet d'une traduction automatique et peut contenir des imperfections.

Partager des commentaires

AWS ECS en détail : architecture et options de déploiement

Sommaire

Partager cette page

Yifat Perry
Yifat Perry

Qu’est-ce qu’AWS ECS ?

Amazon Elastic Container Service (ECS) est un service d’orchestration de conteneurs basé sur le cloud et entièrement géré. Il vous permet d’exécuter vos applications dans le cloud sans avoir à configurer et maintenir l’infrastructure.

Pour vous assurer que les demandes de capacité sont satisfaites de manière optimale et maintenir des performances maximales, vous pouvez configurer ECS pour qu’il évalue et surveille en permanence les processus de mémoire et de processeur. Ces données vous aident à déterminer une stratégie de déploiement optimale pour chaque conteneur. De plus, vous pouvez utiliser ECS pour faire évoluer les conteneurs et publier des mises à jour si nécessaire.

ECS prend en charge l’intégration avec plusieurs services et fonctionnalités AWS utiles, notamment les rôles Identity and Access Management (AWS IAM), les volumes Elastic Block Store (AWS EBS) et AWS Elastic Load Balancing (AWS ELB).

Cet article fait partie de notre série d’articles sur Kubernetes sur AWS.

Dans cet article, vous découvrirez les points suivants :

Avantages et cas d’usage d’ECS

ECS vous permet d’exploiter facilement les conteneurs pour différents cas d’usage. Vous pouvez utiliser ECS pour héberger des sites web simples, mais aussi pour gérer une architecture de microservices distribués. ECS simplifie la gestion des conteneurs, mais il n’automatise pas l’ensemble du processus. Vous pouvez toujours affiner et personnaliser le processus.

Voici plusieurs avantages clés d’Amazon ECS :

  • Déploiement facile et simple : ECS évite d’avoir à configurer et maintenir l’infrastructure des clusters de Kubernetes en prenant la responsabilité de ces tâches.
  • Fonctionnalités de planification : elles vous permettent de planifier des services, des applications et des processus par lots.
  • Disponibilité gérée : ECS est responsable du maintien de la disponibilité des applications et vous aide à faire évoluer votre environnement à la hausse ou à la baisse selon vos besoins, pour vous assurer que les demandes de capacité sont satisfaites.
  • Intégration native, avec un large éventail de fonctionnalités telles qu’AWS ELB, Amazon Virtual Private Cloud (Amazon VPC), IAM et AWS EBS.
  • Intégration avec les outils existants : ECS fournit des API simples qui vous permettent d’intégrer votre pipeline CI/CD et vos outils existants.

Découvrez-en davantage en lisant nos guides (en anglais) : AWS ECS vs Kubernetes et AWS ECS vs EKS.

Architecture Amazon ECS

La figure ci-dessous illustre Amazon ECS avec des conteneurs s’exécutant sur AWS Fargate. Dans les sections suivantes, nous abordons les principaux composants présentés.

Amazon ECS architecture with VPC, container registry, Fargate tasks, and elastic network interfaces across availability zones.Source : AWS

Conteneurs et images

Pour déployer votre application sur Amazon ECS, vous devez concevoir des composants d’application afin qu’ils s’exécutent dans des conteneurs. Les conteneurs sont créés à partir de modèles en lecture seule appelés images.

Les images sont généralement créées à partir d’un fichier Dockerfile, un fichier texte brut qui spécifie tous les composants qui doivent s’exécuter dans le conteneur. Une fois créées, ces images sont stockées dans un registre de conteneurs et peuvent être téléchargées et exécutées sur le cluster.

Définitions des tâches AWS ECS

Pour préparer votre application à s’exécuter sur Amazon ECS, vous devez créer une définition de tâche. Une définition de tâche est un fichier texte (au format JSON) qui décrit un ou plusieurs conteneurs (jusqu’à 10) qui composent votre application.

La définition de la tâche peut spécifier différents paramètres pour votre application conteneurisée. Par exemple, vous pouvez utiliser ces paramètres pour indiquer les conteneurs à exécuter, les ports à ouvrir, les volumes de données à utiliser, le mode de mise en réseau Docker à utiliser et les rôles Identity and Access Management (IAM).

Presque tout ce que vous pouvez exécuter dans une commande Docker ligne de commandes peut être défini à l’aide des définitions de tâches ECS. Tous les paramètres de définition de tâche figurent dans la documentation officielle.

Tâches et planification AWS ECS

Une tâche est une instance d’une définition de tâche s’exécutant dans un cluster. Après avoir créé une définition de tâche pour votre application dans Amazon ECS, vous pouvez spécifier le nombre de tâches à exécuter sur votre cluster.

Le planificateur de tâches Amazon ECS est responsable du placement des tâches dans un cluster. Il existe deux principales stratégies de planificateur :

  • La stratégie REPLICA place un nombre souhaité de tâches dans votre cluster et maintient ce nombre de tâches, en les restaurant si certaines échouent.
  • La stratégie DAEMON place une tâche sur chaque instance de conteneur active qui répond aux critères pertinents.

Amazon ECS architecture showing service definition and Fargate tasks with elastic network interfaces.Source : AWS

Cluster AWS ECS

Un cluster Amazon ECS est un regroupement logique de services, chacun composé d’une ou plusieurs tâches. La première fois que vous utilisez Amazon ECS, un cluster par défaut est créé. Vous pouvez créer des clusters supplémentaires dans votre compte pour obtenir une isolation des ressources pour différents workloads ou projets.

Il existe deux façons d’exécuter des ressources de cluster : sur des instances EC2 ou via Amazon Fargate. Pour plus de détails sur le fonctionnement de chacune de ces options, voir la section suivante.

Agent de conteneur

L'agent de conteneur s'exécute sur chaque instance de conteneur dans un cluster Amazon ECS. L'agent envoie à Amazon ECS des informations sur les tâches en cours d'exécution et l'utilisation des ressources. Amazon ECS peut utiliser l'agent pour démarrer et arrêter les tâches selon les besoins.

Amazon ECS workflow diagram illustrating container registry integration and task scheduling.Source : AWS

Options de déploiement AWS ECS : comparaison de EC2 et Fargate

ECS peut utiliser des instances Elastic Compute Cloud (EC2) pour exécuter des conteneurs. Les instances EC2 sont déployées dans le cadre du service Amazon EC2 et « enregistrées » dans un cluster ECS défini, ce qui signifie que EC2 peut utiliser ces instances pour déployer des conteneurs. Vous pouvez exécuter un cluster ECS dans un VPC existant, le rendant accessible aux ressources AWS existantes exécutées dans ce VPC.

Une autre façon de déployer des conteneurs ECS consiste à utiliser Amazon Fargate. Fargate supprime la responsabilité du provisionnement, de la configuration et de la gestion des instances EC2, permettant à AWS de gérer les instances EC2 pour vous.

Avec Fargate, vous n’avez pas besoin de gérer des serveurs, mais vous devez vous assurer que les définitions de tâches sont sans état. Actuellement, vous ne pouvez pas attacher un volume de stockage (comme un volume Elastic Block Storage) au conteneur défini dans la tâche.

Cela signifie que si vous utilisez Fargate avec un stockage persistant, vous devrez utiliser des services de stockage externes comme S3 ou Relational Data Service (RDS).

Utilisez ECS avec EC2 lorsque :

  • L’ensemble de votre infrastructure s’exécute dans AWS
  • Vous avez déjà défini VPC et les sous-réseaux
  • Vous disposez de processus existants pour le provisionnement et la gestion des instances EC2
  • Les applications nécessitent un stockage persistant directement attaché

Utilisez ECS Fargate lorsque :

  • Vous n’avez pas de VPC existant
  • Vous avez certaines ressources qui s’exécutent sur Amazon et d’autres dans d’autres environnements cloud
  • Les applications sont sans état ou ne nécessitent pas de volumes de stockage directement attachés

Questions et réponses sur AWS ECS

En quoi Amazon ECS est-il différent d’AWS Elastic Beanstalk ?

EC2 fournit des fonctionnalités qui simplifient la gestion des conteneurs, tandis que vous continuez à affiner le processus. AWS Elastic Beanstalk, quant à lui, gère automatiquement l’infrastructure pour vous. Vous pouvez utiliser Beanstalk dans les cas où vous devez vous concentrer uniquement sur le code.

AWS Elastic Beanstalk est un service cloud qui vous permet de déployer et de faire évoluer facilement des applications et des services. Beanstalk gère automatiquement les services, tels qu'ELB, EC2, Auto Scaling, RDS et Auto Scaling, déploie les applications et surveille l’état de l’application.

Lorsque vous utilisez Beanstalk, vous devez spécifier les images de conteneur à déployer, ainsi que les exigences en matière de mémoire et de processeur, les liens de conteneur et les mappages de ports. Une fois que vous avez défini ces informations, Beanstalk commence à gérer automatiquement toute la gestion. Il provisionne le cluster ECS, gère l’évolutivité automatique et la surveillance, effectue l’équilibrage de charge et déploie les conteneurs dans les clusters.

En quoi Amazon ECS est-il différent d’AWS Lambda ?

Amazon ECS propose des fonctionnalités qui simplifient la gestion des conteneurs et des clusters, mais n’automatise pas totalement le processus. Vous devez comprendre comment fonctionne le processus de provisionnement et configurer et faire évoluer continuellement vos ressources. EC2 expose les serveurs et vous fournit les informations nécessaires pour faire évoluer et optimiser votre environnement.

AWS Lambda vous permet de coder des tâches basées sur des événements qui automatisent l’infrastructure de calcul. Lambda vous permet de définir une infrastructure sans serveur qui ne nécessite pas ou ne permet pas votre intervention, à part l’écriture du code qui déclenche les événements. Lambda vous permet de configurer des événements comme des modifications de données ou des clics sur des sites Web et de définir une réaction en réponse à ces événements.

Optimisation du stockage des conteneurs avec Cloud Volumes ONTAP

NetApp Cloud Volumes ONTAP, la solution de gestion du stockage haute performance leader, offre des services de gestion du stockage sécurisés et éprouvés sur AWS, Azure et Google Cloud. Cloud Volumes ONTAP prend en charge une capacité allant jusqu'à 368 To, ainsi que divers cas d'usage tels que les services de fichiers, les bases de données, DevOps ou tout autre workload exigeant, avec un ensemble complet de fonctionnalités, notamment la haute disponibilité, la protection des données, l'efficacité du stockage, l'intégration avec Kubernetes, et plus encore.

En particulier, Cloud Volumes ONTAP prend en charge le provisionnement et la gestion de volumes persistants pour les workloads conteneurisés.

Découvrez comment Cloud Volumes ONTAP permet de relever les défis liés aux applications conteneurisées dans ces workloads Kubernetes avec des études de cas Cloud Volumes ONTAP.

Drift chat loading