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 ECS clusters Amazon pour les microservices à l'aide de AWS CDK
Créée par Varsha Raju () AWS
Environnement : PoC ou pilote | Technologies : DevOps ; Conteneurs et microservices ; Modernisation ; Infrastructure | AWSservices : AWS CodeBuild AWS CodeCommit ; AWS CodePipeline ; Amazon ECS ; AWS CDK |
Récapitulatif
Ce modèle décrit comment créer automatiquement les pipelines d'intégration continue et de livraison continue (CI/CD) ainsi que l'infrastructure sous-jacente pour créer et déployer des microservices sur Amazon Elastic Container Service (Amazon). ECS Vous pouvez utiliser cette approche si vous souhaitez configurer des pipelines proof-of-concept CI/CD afin de montrer à votre organisation les avantages de la CI/CD, des microservices et. DevOps Vous pouvez également utiliser cette approche pour créer des pipelines CI/CD initiaux que vous pouvez ensuite personnaliser ou modifier en fonction des besoins 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 ECS cluster Amazon configurés pour s'exécuter dans deux zones de disponibilité. Ces environnements sont partagés par tous vos microservices et vous créez ensuite un pipeline CI/CD pour chaque microservice. Ces pipelines CI/CD extraient les modifications d'un référentiel source AWS CodeCommit, les intègrent automatiquement, puis les déploient 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).AWSCloud Development Kit (AWSCDK), installé et configuré dans votre compte. Pour plus d'informations à ce sujet, consultez Getting started with the AWS CDK dans la AWS CDK documentation.
Python 3 et
pip
, installé et configuré. Pour plus d'informations à ce sujet, consultez la documentation Python. Connaissance d'AWSCDKAmazon Elastic Container Registry (AmazonECR)ECS, Amazon et AWS Fargate. AWS CodePipeline AWS CodeBuild CodeCommit
Connaissance de Docker.
Compréhension du CI/CD et. DevOps
Limites
Les limites générales AWS du compte s'appliquent. Pour plus d'informations à ce sujet, consultez la section Quotas de AWS service dans la documentation de référence AWS générale.
Versions du produit
Le code a été testé à l'aide des versions 16.13.0 et AWS CDK 1.132.0 de Node.js.
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 hors production. ECS
Amazon ECS extrait l'image du ECR référentiel Amazon vers un service Fargate non destiné à la production.
Les tests sont effectués à l'aide d'une non-productionURL.
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 de production ECS
Amazon ECS extrait l'image du ECR référentiel Amazon vers le service de production Fargate.
Les utilisateurs de production accèdent à votre fonctionnalité en utilisant une productionURL.
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 AWS CloudFormation pile partagée. L'automatisation peut créer plusieurs ECS clusters Amazon dans chaque cluster VPC et également créer des pipelines pour les microservices déployés dans un ECS cluster Amazon partagé. Toutefois, cela nécessite que vous fournissiez de nouvelles informations sur les ressources en tant qu'entrées dans la pile de pipelines.
Outils
AWSCDK— AWS Cloud Development Kit (AWSCDK) est un framework de développement logiciel permettant de définir l'infrastructure cloud dans le code et de la provisionner via AWS CloudFormation ce dernier.
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 AWS cloud. 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 (AmazonECS) 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 (AmazonEC2) 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 AWSCDK. |
| AWS DevOps, Infrastructure cloud |
Tâche | Description | Compétences requises |
---|---|---|
Créez l'infrastructure partagée. |
| AWS DevOps, Infrastructure cloud |
Surveillez la AWS CloudFormation pile. |
| AWS DevOps, Infrastructure cloud |
Testez la AWS CloudFormation pile. |
Important : Assurez-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 deuxVPCs. | AWS DevOps, Infrastructure cloud |
Tâche | Description | Compétences requises |
---|---|---|
Créez l'infrastructure du microservice. |
Remarque : Vous pouvez également fournir les valeurs des deux commandes en utilisant le | AWS DevOps, Infrastructure cloud |
Surveillez la AWS CloudFormation pile. | Ouvrez la AWS CloudFormation console et surveillez la progression de la | AWS DevOps, Infrastructure cloud |
Testez la AWS CloudFormation pile. |
| |
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>