Déployer un pipeline CI/CD pour les microservices Java sur Amazon ECS - Recommandations AWS

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.

Déployer un pipeline CI/CD pour les microservices Java sur Amazon ECS

Créé par Vijay Thompson (AWS) et Sankar Sangubotla () AWS

Environnement : PoC ou pilote

Technologies : DevOps ; Conteneurs et microservices

AWSservices : AWS CodeBuild ; Amazon EC2 Container Registry ; Amazon ECS ; AWS Fargate ; AWS CodePipeline

Récapitulatif

Ce modèle vous guide à travers les étapes de déploiement d'un pipeline d'intégration et de livraison continues (CI/CD) pour les microservices Java sur un cluster Amazon Elastic Container Service (AmazonECS) existant en utilisant. AWS CodeBuild Lorsque le développeur valide les modifications, le pipeline CI/CD est lancé et le processus de construction démarre. CodeBuild Lorsque la compilation est terminée, l'artefact est transféré vers Amazon Elastic Container Registry (AmazonECR) et la dernière version d'Amazon ECR est récupérée et envoyée au ECS service Amazon.

Conditions préalables et limitations

Prérequis

  • Une application de microservices Java existante exécutée sur Amazon ECS

  • Connaissance de et AWS CodeBuild AWS CodePipeline

Architecture

Pile technologique source

  • Microservices Java exécutés sur Amazon ECS

  • Référentiel de code sur Amazon ECR

  • AWS Fargate

Architecture source

Architecture source pour le déploiement d'un pipeline CI/CD pour les microservices Java sur Amazon ECS

Pile technologique cible

  • Amazon ECR

  • Amazon ECS

  • AWS Fargate

  • AWS CodePipeline

  • AWS CodeBuild

Architecture cible

Architecture cible pour le déploiement d'un pipeline CI/CD pour les microservices Java sur Amazon ECS

Automatisation et mise à l'échelle

CodeBuild buildspec.ymlfichier :

version: 0.2 phases: pre_build: commands: - echo Logging in to Amazon ECR... - aws --version - $(aws ecr get-login --region $AWS_DEFAULT_REGION --no-include-email) - REPOSITORY_URI=$AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO - COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7) - IMAGE_TAG=build-$(echo $CODEBUILD_BUILD_ID | awk -F":" '{print $2}') build: commands: - echo Build started on `date` - echo building the Jar file - mvn clean install - echo Building the Docker image... - docker build -t $REPOSITORY_URI:$BUILD_TAG . - docker tag $REPOSITORY_URI:$BUILD_TAG $REPOSITORY_URI:$IMAGE_TAG post_build: commands: - echo Build completed on `date` - echo Pushing the Docker images... - docker push $REPOSITORY_URI:$BUILD_TAG - docker push $REPOSITORY_URI:$IMAGE_TAG - echo Writing image definitions file... - printf '[{"name":"%s","imageUri":"%s"}]' $DOCKER_CONTAINER_NAME $REPOSITORY_URI:$IMAGE_TAG > imagedefinitions.json - cat imagedefinitions.json artifacts: files: - imagedefinitions.json - target/DockerDemo.jar

Outils

AWSservices

  • AWS CodeBuildest un service de génération entièrement géré qui vous aide à compiler le code source, à exécuter des tests unitaires et à produire des artefacts prêts à être déployés. AWS CodeBuild évolue en continu et traite plusieurs versions simultanément, afin que vos versions ne soient pas laissées dans la file d'attente.

  • AWS CodePipelinevous permet de modéliser et de configurer rapidement les différentes étapes d'une version logicielle et d'automatiser les étapes nécessaires à la publication continue des modifications logicielles. Vous pouvez intégrer AWS CodePipeline des services tiers tels que GitHub Amazon ou utiliser AWS des services tels que AWS CodeCommit AmazonECR.

  • Amazon Elastic Container Registry (AmazonECR) est un registre entièrement géré qui permet aux développeurs de stocker, de gérer et de déployer facilement des images de conteneurs Docker. Amazon ECR est intégré à Amazon ECS pour simplifier votre development-to-production flux de travail. Amazon ECR héberge vos images dans une architecture hautement disponible et évolutive afin que vous puissiez déployer des conteneurs pour vos applications de manière fiable. L'intégration avec AWS Identity and Access Management (IAM) permet de contrôler chaque référentiel au niveau des ressources.

  • Amazon Elastic Container Service (AmazonECS) est un service d'orchestration de conteneurs hautement évolutif et performant qui prend en charge les conteneurs Docker et vous permet d'exécuter et de faire évoluer facilement des applications conteneurisées. AWS Amazon vous ECS évite d'avoir à installer et à exploiter votre propre logiciel d'orchestration de conteneurs, à gérer et à dimensionner un cluster de machines virtuelles ou à planifier des conteneurs sur ces machines virtuelles.

  • AWSFargate est un moteur de calcul pour ECS Amazon qui vous permet d'exécuter des conteneurs sans avoir à gérer de serveurs ou de clusters. Avec AWS Fargate, vous n'avez plus besoin de provisionner, de configurer et de dimensionner des clusters de machines virtuelles pour exécuter des conteneurs. Vous n'avez plus à choisir de types de serveurs, décider quand mettre à l'échelle vos clusters ni optimiser les packs de clusters.

Autres outils

  • Docker est une plate-forme qui vous permet de créer, de tester et de fournir des applications dans des packages appelés conteneurs.

  • Git est un système de contrôle de version distribué permettant de suivre les modifications du code source pendant le développement de logiciels. Il est conçu pour coordonner le travail entre les programmeurs, mais il peut être utilisé pour suivre les modifications apportées à n'importe quel ensemble de fichiers. Ses objectifs incluent la rapidité, l'intégrité des données et la prise en charge de flux de travail distribués et non linéaires. Vous pouvez également l'utiliser AWS CodeCommit comme alternative à Git.

Épopées

TâcheDescriptionCompétences requises

Créez un projet CodeBuild de construction.

Dans la AWS CodeBuild console, créez un projet de génération et spécifiez son nom.

Développeur d'applications, administrateur AWS système

Sélectionnez la source.

Ce modèle utilise Git pour le dépôt de code. GitHub Choisissez donc dans la liste des options disponibles. Choisissez un dépôt public ou depuis votre GitHub compte.

Développeur d'applications, administrateur AWS système

Sélectionnez un référentiel.

Sélectionnez le référentiel à partir duquel vous souhaitez générer le code.

Développeur d'applications, administrateur AWS système

Sélectionnez l'environnement.

Vous pouvez sélectionner une image dans une liste d'images gérées ou opter pour une image personnalisée à l'aide de Docker. Ce modèle utilise l'image gérée suivante :

  • Amazon Linux 2 (Remarque : le support d'Amazon Linux 2 touche à sa fin. Pour plus d'informations, consultez Amazon Linux 2 FAQs.)

  • Durée d'exécution : Standard

  • Version de l'image 1.0

Développeur d'applications, administrateur AWS système

Choisissez un rôle de service.

Vous pouvez créer un rôle de service ou le sélectionner dans une liste de rôles existants.

Développeur d'applications, administrateur AWS système

Ajoutez des variables d'environnement.

Dans la section Configuration supplémentaire, configurez les variables d'environnement suivantes :

  • AWS_ DEFAULT _ REGION pour la AWS région par défaut

  • AWS_ ACCOUNT _ID pour le numéro de compte utilisateur

  • IMAGE_ REPO pour le référentiel ECR privé Amazon

  • BUILD_ TAG pour la version du build (le dernier build est la valeur de cette variable)

  • DOCKER_ CONTAINER _ NAME pour le nom du conteneur dans la tâche

Ces variables sont des espaces réservés dans le buildspec.yml fichier et seront remplacées par leurs valeurs respectives.

Développeur d'applications, administrateur AWS système

Créez un fichier buildspec.

Vous pouvez créer un buildspec.yml fichier au même emplacement pom.xml et ajouter la configuration fournie dans ce modèle, ou utiliser l'éditeur buildspec en ligne et ajouter la configuration. Configurez les variables environnementales avec les valeurs appropriées en suivant les étapes indiquées.

Développeur d'applications, administrateur AWS système

Configurez le projet pour les artefacts.

(Facultatif) Configurez le projet de construction pour les artefacts, si nécessaire.

Développeur d'applications, administrateur AWS système

Configurez Amazon CloudWatch Logs.

(Facultatif) Configurez Amazon CloudWatch Logs pour le projet de génération, si nécessaire. Cette étape est facultative mais recommandée.

Développeur d'applications, administrateur AWS système

Configurez les journaux Amazon S3.

(Facultatif) Configurez les journaux Amazon Simple Storage Service (Amazon S3) pour le projet de génération, si vous souhaitez stocker les journaux.

Développeur d'applications, administrateur AWS système
TâcheDescriptionCompétences requises

Créez un pipeline.

Sur la AWS CodePipeline console, créez un pipeline et spécifiez son nom. Pour plus d'informations sur la création d'un pipeline, consultez la AWS CodePipeline documentation.

Développeur d'applications, administrateur AWS système

Sélectionnez un rôle de service.

Créez un rôle de service ou sélectionnez-le dans la liste des rôles de service existants. Si vous créez un rôle de service, attribuez un nom au rôle et sélectionnez l'option permettant CodePipeline de créer le rôle.

Développeur d'applications, administrateur AWS système

Choisissez un magasin d'artefacts.

Dans les paramètres avancés, si vous souhaitez qu'Amazon S3 crée un compartiment et y stocke les artefacts, utilisez l'emplacement par défaut du magasin d'artefacts. Vous pouvez également sélectionner un emplacement personnalisé et spécifier un compartiment existant. Vous pouvez également choisir de chiffrer l'artefact à l'aide d'une clé de chiffrement.

Développeur d'applications, administrateur AWS système

Spécifiez le fournisseur source.

Dans le champ Source provider, choisissez GitHub (Version 2).

Développeur d'applications, administrateur AWS système

Sélectionnez le référentiel et la branche du code.

Si vous n'êtes pas connecté, fournissez les informations de connexion auxquelles vous souhaitez vous connecter GitHub, puis sélectionnez le nom du référentiel et le nom de la branche.

Développeur d'applications, administrateur AWS système

Modifiez les options de détection.

Choisissez Démarrer le pipeline lors de la modification du code source et passez à la page suivante.

Développeur d'applications, administrateur AWS système

Sélectionnez un fournisseur de build.

Pour le fournisseur de construction AWS CodeBuild, choisissez, puis fournissez les détails de AWS la région et du nom du projet de construction.

Pour Type de construction, choisissez Construction unique.

Développeur d'applications, administrateur AWS système

Choisissez un fournisseur de déploiement.

Dans le champ Deploy provider, choisissez AmazonECS. Choisissez le nom du cluster, le nom du service, le fichier de définitions d'image, le cas échéant, et une valeur de délai de déploiement, si nécessaire. Choisissez Créer un pipeline.

Développeur d'applications, administrateur AWS système

Ressources connexes