Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Créez automatiquement des pipelines CI/CD et des clusters Amazon ECS pour les microservices à l'aide d'AWS CDK
Créée par Varsha Raju (AWS)
Récapitulatif
Ce modèle décrit comment créer automatiquement l'intégration continue et la livraison continue (CI/CD) pipelines and underlying infrastructure for building and deploying microservices on Amazon Elastic Container Service (Amazon ECS). You can use this approach if you want to set up proof-of-concept CI/CD pipelines to show your organization the benefits of CI/CD, microservices, and DevOps. You can also use this approach to create initial CI/CDpipelines) que vous pouvez ensuite personnaliser ou modifier en fonction des exigences de votre organisation.
L'approche du modèle crée un environnement de production et un environnement hors production dotés chacun d'un cloud privé virtuel (VPC) et d'un cluster Amazon ECS configurés pour s'exécuter dans deux zones de disponibilité. Ces environnements sont partagés par tous vos microservices, puis vous créez des CI/CD pipeline for each microservice. These CI/CD pipelines, vous extrayez les modifications depuis un référentiel source dans AWS CodeCommit, vous les générez automatiquement, puis vous les déployez dans vos environnements de production et hors production. Lorsqu'un pipeline termine avec succès toutes ses étapes, vous pouvez l'utiliser URLs pour accéder au microservice dans les environnements de production et hors production.
Conditions préalables et limitations
Prérequis
Un compte Amazon Web Services (AWS) actif.
Un compartiment Amazon Simple Storage Service (Amazon S3) existant contenant
starter-code.zip
le fichier (joint).AWS Cloud Development Kit (AWS CDK), installé et configuré dans votre compte. Pour plus d'informations à ce sujet, consultez Getting started with the AWS CDK dans la documentation AWS CDK.
Python 3 et
pip
, installé et configuré. Pour plus d'informations à ce sujet, consultez la documentation Python. Connaissance d'AWS CDK, d'AWS, d' CodePipelineAWS CodeBuild, d' CodeCommitAmazon Elastic Container Registry (Amazon ECR), d'Amazon ECS et d'AWS Fargate.
Connaissance de Docker.
Compréhension du CI/CD et. DevOps
Limites
Les limites générales du compte AWS s'appliquent. Pour plus d'informations à ce sujet, consultez les quotas de service AWS dans la documentation de référence générale AWS.
Versions du produit
Le code a été testé à l'aide de Node.js version 16.13.0 et d'AWS CDK version 1.132.0.
Architecture

Le schéma suivant illustre le flux de travail suivant :
Un développeur d'applications valide le code dans un CodeCommit référentiel.
Un pipeline est lancé.
CodeBuild crée et envoie l'image Docker vers un référentiel Amazon ECR
CodePipeline déploie une nouvelle image sur un service Fargate existant dans un cluster Amazon ECS hors production.
Amazon ECS extrait l'image du référentiel Amazon ECR vers un service Fargate hors production.
Les tests sont effectués à l'aide d'une URL hors production.
Le responsable de publication approuve le déploiement en production.
CodePipeline déploie la nouvelle image sur un service Fargate existant dans un cluster Amazon ECS de production
Amazon ECS extrait l'image du référentiel Amazon ECR vers le service de production Fargate.
Les utilisateurs de production accèdent à votre fonctionnalité à l'aide d'une URL de production.
Pile technologique
AWS CDK
CodeBuild
CodeCommit
CodePipeline
Amazon ECR
Amazon ECS
Amazon VPC
Automatisation et mise à l'échelle
Vous pouvez utiliser l'approche de ce modèle pour créer des pipelines pour les microservices déployés dans une CloudFormation pile AWS partagée. L'automatisation peut créer plusieurs clusters Amazon ECS dans chaque VPC et également créer des pipelines pour les microservices déployés dans un cluster Amazon ECS partagé. Toutefois, cela nécessite que vous fournissiez de nouvelles informations sur les ressources en entrée de la pile de pipelines.
Outils
AWS CDK — AWS Cloud Development Kit (AWS CDK) est un framework de développement logiciel permettant de définir l'infrastructure cloud dans le code et de la provisionner via AWS. CloudFormation
AWS CodeBuild — AWS CodeBuild est un service de création entièrement géré dans le cloud. CodeBuild compile votre code source, exécute des tests unitaires et produit des artefacts prêts à être déployés.
AWS CodeCommit — AWS CodeCommit est un service de contrôle de version qui vous permet de stocker et de gérer de manière privée des référentiels Git dans le cloud AWS. CodeCommit vous n'avez plus à gérer votre propre système de contrôle de source ou à vous soucier de la mise à l'échelle de son infrastructure.
AWS CodePipeline — AWS CodePipeline est un service de livraison continue que vous pouvez utiliser pour modéliser, visualiser et automatiser les étapes nécessaires à la publication de votre logiciel. Vous pouvez rapidement modéliser et configurer les différentes étapes d'un processus de publication d'un logiciel. CodePipeline automatise les étapes nécessaires à la publication continue des modifications de votre logiciel.
Amazon ECS — Amazon Elastic Container Service (Amazon ECS) est un service de gestion de conteneurs rapide et hautement évolutif utilisé pour exécuter, arrêter et gérer des conteneurs sur un cluster. Vous pouvez exécuter vos tâches et services sur une infrastructure sans serveur gérée par AWS Fargate. Pour mieux contrôler votre infrastructure, vous pouvez également exécuter vos tâches et services sur un cluster d'instances Amazon Elastic Compute Cloud (Amazon EC2) que vous gérez.
Docker
— Docker aide les développeurs à emballer, expédier et exécuter n'importe quelle application sous la forme d'un conteneur léger, portable et autonome.
Code
Le code de ce modèle est disponible dans les starter-code.zip
fichiers cicdstarter.zip
et (joints).
Épopées
Tâche | Description | Compétences requises |
---|---|---|
Configurez le répertoire de travail pour AWS CDK. |
| AWS DevOps, infrastructure cloud |
Tâche | Description | Compétences requises |
---|---|---|
Créez l'infrastructure partagée. |
| AWS DevOps, infrastructure cloud |
Surveillez la CloudFormation pile AWS. |
| AWS DevOps, infrastructure cloud |
Testez la CloudFormation pile AWS. |
ImportantAssurez-vous d'enregistrer le IDs pour les deux groupes de sécurité VPCs et le groupe de sécurité IDs pour les groupes de sécurité par défaut dans les deux VPCs. | AWS DevOps, infrastructure cloud |
Tâche | Description | Compétences requises |
---|---|---|
Créez l'infrastructure du microservice. |
NoteVous pouvez également fournir les valeurs des deux commandes en utilisant le | AWS DevOps, infrastructure cloud |
Surveillez la CloudFormation pile AWS. | Ouvrez la CloudFormation console AWS et surveillez la progression de la | AWS DevOps, infrastructure cloud |
Testez la CloudFormation pile AWS. |
| |
Utilisez le pipeline. |
| AWS DevOps, infrastructure cloud |
Répétez cette épopée pour chaque microservice. | Répétez les tâches de cette épopée pour créer un pipeline CI/CD pour chacun de vos microservices. | AWS DevOps, infrastructure cloud |
Ressources connexes
Informations supplémentaires
Commande cdk synth
de la
cdk synth --context aws_account=<aws_account_number> --context aws_region=<aws_region> --context vpc_nonprod_id=<id_of_non_production VPC> --context vpc_prod_id=<id_of_production_VPC> --context ecssg_nonprod_id=< default_security_group_id_of_non-production_VPC> --context ecssg_prod_id=<default_security_group_id_of_production_VPC> --context code_commit_s3_bucket_for_code=<S3 bucket name> --context code_commit_s3_object_key_for_code=<Object_key_of_starter_code> --context microservice_name=<name_of_microservice>
cdk deploy
commande
cdk deploy --context aws_account=<aws_account_number> --context aws_region=<aws_region> --context vpc_nonprod_id=<id_of_non_production_VPC> --context vpc_prod_id=<id_of_production_VPC> --context ecssg_nonprod_id=< default_security_group_id_of_non-production_VPC> --context ecssg_prod_id=<default_security_group_id_of_production_VPC> --context code_commit_s3_bucket_for_code=<S3 bucket name> --context code_commit_s3_object_key_for_code=<Object_key_of_starter_code> --context microservice_name=<name_of_microservice>