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
Pile technologique cible
Amazon ECR
Amazon ECS
AWS Fargate
AWS CodePipeline
AWS CodeBuild
Architecture cible
Automatisation et mise à l'échelle
CodeBuild buildspec.yml
fichier :
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âche | Description | Compétences requises |
---|---|---|
Créez un projet CodeBuild de construction. | Dans la AWS CodeBuild console | 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 :
| 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 :
Ces variables sont des espaces réservés dans le | Développeur d'applications, administrateur AWS système |
Créez un fichier buildspec. | Vous pouvez créer un | 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âche | Description | Compétences requises |
---|---|---|
Créez un pipeline. | Sur la AWS CodePipeline console | 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 |