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.
Configurez un pipeline CI/CD pour les charges de travail hybrides sur Amazon ECS Anywhere à l'aide d'AWS CDK et GitLab
Créée par le Dr Rahul Sharad Gaikwad (AWS)
Récapitulatif
Remarque : AWS n' CodeCommit est plus disponible pour les nouveaux clients. Les clients actuels d'AWS CodeCommit peuvent continuer à utiliser le service normalement. En savoir plus
Amazon ECS Anywhere est une extension d'Amazon Elastic Container Service (Amazon ECS). Elle prend en charge l'enregistrement d'une instance externe, telle qu'un serveur sur site ou une machine virtuelle (VM), sur votre cluster Amazon ECS. Cette fonctionnalité permet de réduire les coûts et d'atténuer l'orchestration et les opérations complexes des conteneurs locaux. Vous pouvez utiliser ECS Anywhere pour déployer et exécuter des applications de conteneur dans des environnements sur site et dans le cloud. Ainsi, votre équipe n'a plus besoin d'apprendre plusieurs domaines et compétences, ou de gérer elle-même des logiciels complexes.
Ce modèle décrit une step-by-step approche pour approvisionner un cluster Amazon ECS avec des instances Amazon ECS Anywhere à l'aide de piles Amazon Web Services (AWS) Cloud Development Kit (AWS CDK). Vous utilisez ensuite AWS CodePipeline pour configurer un pipeline d'intégration et de déploiement continus (CI/CD). Ensuite, vous répliquez votre référentiel de GitLab code sur AWS CodeCommit et vous déployez votre application conteneurisée sur le cluster Amazon ECS.
Ce modèle est conçu pour aider ceux qui utilisent une infrastructure sur site à exécuter des applications de conteneur et GitLab à gérer la base de code de l'application. Vous pouvez gérer ces charges de travail à l'aide des services cloud AWS, sans perturber votre infrastructure sur site existante.
Conditions préalables et limitations
Prérequis
Un compte AWS actif.
Application conteneur exécutée sur une infrastructure sur site.
Un GitLab référentiel dans lequel vous gérez la base de code de votre application. Pour plus d'informations, consultez Repository
(GitLab). Interface de ligne de commande AWS (AWS CLI), installée et configurée. Pour plus d'informations, consultez Installation ou mise à jour de la dernière version de l'interface de ligne de commande AWS (documentation de l'interface de ligne de commande AWS).
AWS CDK Toolkit, installé et configuré dans le monde entier. Pour plus d'informations, consultez Installer le CDK AWS (documentation du CDK AWS).
npm, installé et configuré pour le AWS CDK dans. TypeScript Pour plus d'informations, consultez Téléchargement et installation de Node.js et de npm
(documentation npm).
Limites
Pour connaître les limites et les considérations, consultez la section Instances externes (Amazon ECS Anywhere) dans la documentation Amazon ECS.
Versions du produit
AWS CDK Toolkit version 2.27.0 ou ultérieure
npm version 7.20.3 ou ultérieure
Node.js version 16.6.1 ou ultérieure
Architecture
Pile technologique cible
AWS CDK
AWS CloudFormation
AWS CodeBuild
AWS CodeCommit
AWS CodePipeline
Amazon ECS Anywhere
Amazon Elastic Container Registry (Amazon ECR)
AWS Identity and Access Management (IAM)
Gestionnaire du système AWS
GitLab référentiel
Architecture cible

Ce diagramme représente deux flux de travail principaux décrits dans ce modèle, à savoir le provisionnement du cluster Amazon ECS et la configuration du CI/CD pipeline that sets up and deploys the CI/CD pipeline, comme suit :
Provisionnement du cluster Amazon ECS
Lorsque vous déployez la première pile AWS CDK, elle crée une CloudFormation pile sur AWS.
Cette CloudFormation pile fournit un cluster Amazon ECS et les ressources AWS associées.
Pour enregistrer une instance externe auprès d'un cluster Amazon ECS, vous devez installer l'agent AWS Systems Manager (agent SSM) sur votre machine virtuelle et enregistrer la machine virtuelle en tant qu'instance gérée par AWS Systems Manager.
Vous devez également installer l'agent de conteneur Amazon ECS et Docker sur votre machine virtuelle pour l'enregistrer en tant qu'instance externe auprès du cluster Amazon ECS.
Lorsque l'instance externe est enregistrée et configurée avec le cluster Amazon ECS, elle peut exécuter plusieurs conteneurs sur votre machine virtuelle, qui est enregistrée en tant qu'instance externe.
Le cluster Amazon ECS est actif et peut exécuter les charges de travail des applications via des conteneurs. L'instance de conteneur Amazon ECS Anywhere s'exécute dans un environnement sur site mais est associée au cluster Amazon ECS dans le cloud.
Configuration et déploiement du pipeline CI/CD
Lorsque vous déployez la deuxième pile AWS CDK, elle en crée une autre CloudFormation sur AWS.
Cette CloudFormation pile fournit un pipeline dans les ressources AWS CodePipeline et les ressources associées.
Vous transférez et fusionnez les modifications du code de l'application dans un GitLab référentiel local.
Le GitLab référentiel est automatiquement répliqué dans le CodeCommit référentiel.
Les mises à jour du CodeCommit dépôt CodePipeline démarrent automatiquement.
CodePipeline copie le code depuis CodeCommit et crée l'application déployable intégrée. CodeBuild
CodePipeline crée une image Docker de l'environnement de CodeBuild construction et l'envoie vers le dépôt Amazon ECR.
CodePipeline lance des CodeDeploy actions qui extraient l'image du conteneur depuis le dépôt Amazon ECR.
CodePipeline déploie l'image du conteneur sur le cluster Amazon ECS.
Automatisation et mise à l'échelle
Ce modèle utilise le CDK AWS comme outil d'infrastructure sous forme de code (IaC) pour configurer et déployer cette architecture. AWS CDK vous aide à orchestrer les ressources AWS et à configurer Amazon ECS Anywhere et le pipeline CI/CD.
Outils
Services AWS
AWS Cloud Development Kit (AWS CDK) est un framework de développement logiciel qui vous aide à définir et à provisionner l'infrastructure du cloud AWS sous forme de code.
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, sans avoir à gérer votre propre système de contrôle de source.
AWS vous CodePipeline aide à modéliser et à configurer rapidement les différentes étapes d'une version logicielle et à automatiser les étapes nécessaires à la publication continue des modifications logicielles.
L'interface de ligne de commande AWS (AWS CLI) est un outil open source qui vous permet d'interagir avec les services AWS par le biais de commandes dans votre shell de ligne de commande.
Amazon Elastic Container Registry (Amazon ECR) est un service géré de registre d'images de conteneurs sécurisé, évolutif et fiable.
Amazon Elastic Container Service (Amazon ECS) est un service de gestion de conteneurs évolutif et rapide, qui facilite l'exécution, l'arrêt et la gestion de conteneurs Docker sur un cluster. Ce modèle utilise également Amazon ECS Anywhere, qui permet d'enregistrer un serveur ou une machine virtuelle sur site dans votre cluster Amazon ECS.
Autres outils
Node.js
est un environnement d' JavaScript exécution piloté par les événements conçu pour créer des applications réseau évolutives. npm
est un registre de logiciels qui s'exécute dans un environnement Node.js et est utilisé pour partager ou emprunter des packages et gérer le déploiement de packages privés. Vagrant
est un utilitaire open source permettant de créer et de maintenir des environnements de développement de logiciels virtuels portables. À des fins de démonstration, ce modèle utilise Vagrant pour créer une machine virtuelle sur site.
Référentiel de code
Le code de ce modèle est disponible dans le pipeline GitHub CI/CD pour Amazon ECS Anywhere à l'aide du référentiel AWS CDK
Bonnes pratiques
Tenez compte des meilleures pratiques suivantes lors du déploiement de ce modèle :
Épopées
Tâche | Description | Compétences requises |
---|---|---|
Vérifiez la version du kit AWS CDK. | Vérifiez la version du kit d'outils AWS CDK en saisissant la commande suivante.
Ce modèle nécessite la version 2.27.0 ou ultérieure. Si vous disposez d'une version antérieure, suivez les instructions de la documentation AWS CDK pour la mettre à jour. | DevOps ingénieur |
Vérifiez la version de npm. | Vérifiez la version de npm en saisissant la commande suivante.
Ce modèle nécessite la version 7.20.3 ou ultérieure. Si vous avez une version antérieure, suivez les instructions de la documentation de npm | DevOps ingénieur |
Configurez les informations d'identification AWS. | Configurez les informations d'identification AWS en saisissant la
| DevOps ingénieur |
Tâche | Description | Compétences requises |
---|---|---|
Clonez le référentiel de code AWS CDK. |
| DevOps ingénieur |
Démarrez l'environnement. | Déployez le CloudFormation modèle sur le compte et la région AWS que vous souhaitez utiliser en saisissant la commande suivante.
Pour plus d'informations, consultez la section Bootstrapping dans la documentation AWS CDK. | DevOps ingénieur |
Tâche | Description | Compétences requises |
---|---|---|
Installez les dépendances du package et compilez les TypeScript fichiers. | Installez les dépendances du package et compilez les TypeScript fichiers en saisissant les commandes suivantes.
Ces commandes installent tous les packages du référentiel d'échantillons. Pour plus d'informations, consultez npm ci | DevOps ingénieur |
Générez le projet. | Pour créer le code du projet, entrez la commande suivante.
Pour plus d'informations sur la création et le déploiement du projet, consultez Votre première application AWS CDK dans la documentation du CDK AWS. | DevOps ingénieur |
Déployez la pile d'infrastructure Amazon ECS Anywhere. |
| DevOps ingénieur |
Vérifiez la création et la sortie de la pile. |
| DevOps ingénieur |
Tâche | Description | Compétences requises |
---|---|---|
Configurez votre machine virtuelle. | Créez une machine virtuelle Vagrant en entrant la | DevOps ingénieur |
Enregistrez votre machine virtuelle en tant qu'instance externe. |
Cela permet de configurer votre machine virtuelle en tant qu'instance externe Amazon ECS Anywhere et d'enregistrer l'instance dans le cluster Amazon ECS. Pour plus d'informations, consultez la section Enregistrement d'une instance externe dans un cluster | DevOps ingénieur |
Vérifiez l'état d'Amazon ECS Anywhere et de la machine virtuelle externe. | Pour vérifier si votre machine virtuelle est connectée au plan de contrôle Amazon ECS et en cours d'exécution, utilisez les commandes suivantes.
| DevOps ingénieur |
Tâche | Description | Compétences requises |
---|---|---|
Créez une branche dans le CodeCommit dépôt. | Créez une branche nommée
| DevOps ingénieur |
Configurez la mise en miroir des dépôts. | Vous pouvez mettre en miroir un GitLab référentiel depuis et vers des sources externes. Vous pouvez sélectionner le référentiel qui servira de source. Les branches, les tags et les commits sont synchronisés automatiquement. Configurez un miroir push entre le GitLab référentiel hébergeant votre application et le CodeCommit référentiel. Pour obtenir des instructions, voir Configurer un miroir push de GitLab à CodeCommit NotePar défaut, la mise en miroir synchronise automatiquement le référentiel. Si vous souhaitez mettre à jour les référentiels manuellement, voir Mettre à jour un miroir | DevOps ingénieur |
Déployez la pile de pipelines CI/CD. | Déployez la
| DevOps ingénieur |
Testez le pipeline CI/CD. |
| DevOps ingénieur |
Tâche | Description | Compétences requises |
---|---|---|
Nettoyez et supprimez les ressources. | Après avoir suivi ce modèle, vous devez supprimer les proof-of-concept ressources que vous avez créées. Pour nettoyer, entrez les commandes suivantes.
| DevOps ingénieur |
Résolution des problèmes
Problème | Solution |
---|---|
Erreurs relatives aux packages manquants lors de l'installation des dépendances des packages. | Entrez l'une des commandes suivantes pour résoudre les packages manquants.
or
|
Lorsque vous exécutez la
| La |
Un bilan de santé Amazon ECS est renvoyé et l'erreur suivante s'affiche dans la section Services du cluster de la console Amazon ECS.
| Redémarrez l'agent Amazon ECS sur votre machine virtuelle Vagrant en saisissant les commandes suivantes.
|