Le Blog Amazon Web Services

Configurer un pipeline de livraison continue pour les conteneurs à l’aide d’AWS CodePipeline et d’Amazon ECS

La création et le déploiement manuels de services conteneurisés sont difficiles, longs et sources d’erreurs. La livraison continue (Continuous Delivery) avec des mécanismes de build et de test automatisés permet de détecter rapidement les erreurs, de gagner du temps et de réduire les échecs, ce qui en fait un modèle populaire pour les déploiements d’applications. Auparavant, pour automatiser vos worflows de conteneurisation avec Amazon ECS, vous deviez créer votre propre solution à l’aide d’AWS CloudFormation. Désormais, vous pouvez intégrer AWS CodePipeline et AWS CodeBuild à Amazon ECS pour automatiser vos workflows en quelques étapes seulement.

Un workflow de livraison continue typique avec AWS CodePipeline, AWS CodeBuild et Amazon ECS s’articule autour des étapes suivantes :

  • Choisissez votre code source,
  • Buildez/Construisez votre projet,
  • Déployez votre code sous forme de conteneur sur ECS.

Nous avons également une architecture de référence pour le déploiement continu disponible sur GitHub, implémentant ce workflow. Dans cet article, nous allons vous montrer comment configurer les différents services AWS pour mettre en place ce workflow de livraison continue.

Pour démarrer

Tout d’abord, créez un nouveau projet AWS CodePipeline et donnez-lui un nom, tel que “demo” :

Etape 1 de création de AWS CodePipeline

Vous pouvez désormais choisir un rôle de service AWS IAM existant que AWS CodePipeline peut utiliser pour accéder aux ressources de votre compte, ou laisser AWS CodePipeline en créer un. Pour cet exemple, utilisez l’assistant et créez le rôle suivant (AWSCodePipelineServiceRole-eu-west-3-demo).

Ensuite, choisissez l’emplacement source où le code est stocké. Cela peut être AWS CodeCommit, GitHub ou Amazon S3. Pour cet exemple, entrez GitHub, puis accordez à AWS CodePipeline l’accès au repository.

Ensuite, ajoutez une étape de Build. Vous pouvez importer une version existante, telle qu’une URL d’un serveur Jenkins ou un projet AWS CodeBuild, ou créer une nouvelle étape avec AWS CodeBuild. Si vous n’avez pas de projet de build existant dans AWS CodeBuild, créez-en un à partir de AWS CodePipeline :

Vous devez ensuite créer un nouveau projet :

Etape 4 de configuration

Vous devez associer un environnement et les configurations associées à ce projet :

Etape 5 de configuration - Choix d'environnement

Le configuration du Build par AWS CodeBuild passe par l’utilisation d’un fichier de configuration buildspec.yml (présent à la racine du projet GitHub) :

Etape 5 de configuration - Définition de buildspec

Choississez:

  • Fournisseur de génération : AWS CodeBuild
  • Configuration du projet : Créer un nouveau projet de Build
  • Image d’environnement : Utiliser une image gérée par AWS CodeBuild
  • Système d’exploitation : Ubuntu
  • Environnement d’exécution : Standard
  • Image : aws/codebuild/standard:4.0
  • Spécifications du Build : Utilisez le buildspec.yml dans le répertoire racine du code source

Maintenant que vous avez créé l’étape AWS CodeBuild, vous pouvez l’utiliser comme projet existant dans AWS CodePipeline.

Etape 7 de configuration - Configuration du build

Ensuite, ajoutez un fournisseur de déploiement. C’est la cible sur laquelle votre build est déployé. Vous avez accès à plusieurs options différentes, telles que AWS CodeDeploy, AWS Elastic Beanstalk, AWS CloudFormation ou Amazon ECS. Pour cet exemple, utilisez à Amazon ECS.

Pour qu’AWS CodeBuild puisse déployer sur Amazon ECS, vous devez créer un fichier JSON de définition d’image. Cela nécessite l’ajout de quelques instructions aux phases de pre-build, de build et de post-build à votre process de build Codebuild dans votre fichier buildspec.yml. Pour obtenir de l’aide pour créer un fichier de définition d’image, consultez l’étape 1 du tutoriel: Déploiement continu avec AWS CodePipeline.

Etape 7 de configuration - Configuration du déploiement

Sélectionnez :

  • Fournisseur de déploiement : Amazon ECS
  • Nom du cluster : entrez le nom de votre projet à partir de l’étape de build
  • Nom du service : web
  • Fichier de définitions d’image : entrez votre nom de fichier de définition d’image (web.json).

Vous avez presque fini!

Validez toutes vos modifications et choisissez Créer un pipeline.

Une fois le pipeline créé, vous disposerez d’un modèle de l’ensemble de votre pipeline dans lequel vous pourrez afficher vos exécutions, ajouter différents tests, ajouter des approbations manuelles ou apporter une modification.

Etape 8 de configuration - Synthèse de la configuration

Nous avons vu ensemble comment AWS CodePipeline prend en charge et facilite la création d’un pipeline de livraison continue sur Amazon ECS pour des applications ou des micro-services basés sur des conteneurs.

Pour en savoir plus, consultez le Guide de l’utilisateur AWS CodePipeline.

Bonne automatisation!

Article original réalisé par Nathan Taber et Abby Fuller et traduit en français par Zineb Swidnane, Solutions Architect dans l’équipe AWS France.