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 :
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écouvrez-en davantage en lisant nos guides (en anglais) : AWS ECS vs Kubernetes et AWS ECS vs EKS.
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.
Source : AWS
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.
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.
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 :
Source : AWS
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.
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.
Source : AWS
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 :
Utilisez ECS Fargate lorsque :
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.
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.
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.