Stellen Sie eine CI/CD-Pipeline für Java-Microservices auf Amazon bereit ECS - AWS Prescriptive Guidance

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Stellen Sie eine CI/CD-Pipeline für Java-Microservices auf Amazon bereit ECS

Erstellt von Vijay Thompson (AWS) und Sankar Sangubotla () AWS

Umgebung: PoC oder Pilotprojekt

Technologien: Container DevOps und Mikroservices

AWSDienstleistungen: AWS CodeBuild; Amazon EC2 Container Registry; AmazonECS; AWS Fargate; AWS CodePipeline

Übersicht

Dieses Muster führt Sie durch die Schritte zur Bereitstellung einer CI/CD-Pipeline (Continuous Integration and Continuous Delivery) für Java-Mikroservices auf einem vorhandenen Amazon Elastic Container Service (AmazonECS) -Cluster mithilfe von. AWS CodeBuild Wenn der Entwickler die Änderungen festschreibt, wird die CI/CD-Pipeline initiiert und der Build-Prozess beginnt in. CodeBuild Wenn der Build abgeschlossen ist, wird das Artefakt an Amazon Elastic Container Registry (AmazonECR) übertragen, und der neueste Build von Amazon ECR wird abgerufen und an den ECS Amazon-Service übertragen.

Voraussetzungen und Einschränkungen

Voraussetzungen

  • Eine bestehende Java-Microservices-Anwendung, die auf Amazon läuft ECS

  • Vertrautheit mit und AWS CodeBuild AWS CodePipeline

Architektur

Quelltechnologie-Stack

  • Java-Microservices, die auf Amazon laufen ECS

  • Code-Repository bei Amazon ECR

  • AWS-Fargate

Quellarchitektur

Quellarchitektur für die Bereitstellung einer CI/CD-Pipeline für Java-Microservices auf Amazon ECS

Zieltechnologie-Stack

  • Amazon ECR

  • Amazon ECS

  • AWS-Fargate

  • AWS CodePipeline

  • AWS CodeBuild

Zielarchitektur

Zielarchitektur für die Bereitstellung einer CI/CD-Pipeline für Java-Microservices auf Amazon ECS

Automatisierung und Skalierung

CodeBuild buildspec.ymldatei:

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

Tools

AWSDienstleistungen

  • AWS CodeBuildist ein vollständig verwalteter Build-Service, der Sie beim Kompilieren von Quellcode, beim Ausführen von Komponententests und beim Erstellen von Artefakten unterstützt, die sofort einsatzbereit sind. AWS CodeBuild skaliert kontinuierlich und verarbeitet mehrere Builds gleichzeitig, sodass Ihre Builds nicht in der Warteschlange verbleiben.

  • AWS CodePipelinehilft Ihnen dabei, die verschiedenen Phasen einer Softwareversion schnell zu modellieren und zu konfigurieren und die Schritte zu automatisieren, die für die kontinuierliche Veröffentlichung von Softwareänderungen erforderlich sind. Sie können Dienste von Drittanbietern wie GitHub Amazon integrieren AWS CodePipeline oder AWS Dienste wie AWS CodeCommit Amazon verwendenECR.

  • Amazon Elastic Container Registry (AmazonECR) ist eine vollständig verwaltete Registry, die es Entwicklern erleichtert, Docker-Container-Images zu speichern, zu verwalten und bereitzustellen. Amazon ECR ist in Amazon integriertECS, um Ihren development-to-production Arbeitsablauf zu vereinfachen. Amazon ECR hostet Ihre Images in einer hochverfügbaren und skalierbaren Architektur, sodass Sie Container für Ihre Anwendungen zuverlässig bereitstellen können. Die Integration mit AWS Identity and Access Management (IAM) ermöglicht die Kontrolle jedes Repositorys auf Ressourcenebene.

  • Amazon Elastic Container Service (AmazonECS) ist ein hoch skalierbarer, leistungsstarker Container-Orchestrierungsservice, der Docker-Container unterstützt und es Ihnen ermöglicht, containerisierte Anwendungen einfach auszuführen und zu skalieren. AWS Amazon ECS macht es für Sie überflüssig, Ihre eigene Container-Orchestrierungssoftware zu installieren und zu betreiben, einen Cluster von virtuellen Maschinen zu verwalten und zu skalieren oder Container auf diesen virtuellen Maschinen zu planen.

  • AWSFargate ist eine Compute-Engine für AmazonECS, mit der Sie Container ausführen können, ohne Server oder Cluster verwalten zu müssen. Mit AWS Fargate müssen Sie keine Cluster von virtuellen Maschinen mehr bereitstellen, konfigurieren und skalieren, um Container auszuführen. Auf diese Weise müssen keine Servertypen mehr ausgewählt werden, es muss nicht entschieden werden, wann die Cluster skaliert werden oder das Cluster-Packing optimiert werden.

Andere Tools

  • Docker ist eine Plattform, mit der Sie Anwendungen in Paketen, sogenannten Containern, erstellen, testen und bereitstellen können.

  • Git ist ein verteiltes Versionskontrollsystem zur Nachverfolgung von Änderungen im Quellcode während der Softwareentwicklung. Es wurde für die Koordinierung der Arbeit zwischen Programmierern entwickelt, kann jedoch verwendet werden, um Änderungen an beliebigen Dateien zu verfolgen. Zu seinen Zielen gehören Geschwindigkeit, Datenintegrität und Unterstützung verteilter, nichtlinearer Workflows. Sie können es auch AWS CodeCommit als Alternative zu Git verwenden.

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie ein CodeBuild Build-Projekt.

Erstellen Sie in der AWS CodeBuild Konsole ein Build-Projekt und geben Sie dessen Namen an.

App-Entwickler, AWS Systemadministrator

Wählen Sie die Quelle aus.

Dieses Muster verwendet Git für das Code-Repository. Wählen Sie also GitHub aus der Liste der verfügbaren Optionen. Wähle ein öffentliches Repository oder aus deinem GitHub Konto.

App-Entwickler, AWS Systemadministrator

Wählen Sie ein Repository aus.

Wählen Sie das Repository aus, aus dem Sie den Code erstellen möchten.

App-Entwickler, AWS Systemadministrator

Wählen Sie die Umgebung aus.

Sie können aus einer Liste verwalteter Images auswählen oder sich mit Docker für ein benutzerdefiniertes Image entscheiden. Dieses Muster verwendet das folgende verwaltete Image:

  • Amazon Linux 2 (Hinweis: Amazon Linux 2 nähert sich dem Ende der Unterstützung. Weitere Informationen finden Sie unter Amazon Linux FAQs 2.)

  • Laufzeit: Standard

  • Bildversion 1.0

App-Entwickler, AWS Systemadministrator

Wählen Sie eine Servicerolle.

Sie können eine Servicerolle erstellen oder aus einer Liste vorhandener Rollen auswählen.

App-Entwickler, AWS Systemadministrator

Hinzufügen von Umgebungsvariablen

Konfigurieren Sie im Abschnitt Zusätzliche Konfiguration die folgenden Umgebungsvariablen:

  • AWS_ DEFAULT _ REGION für die AWS Standardregion

  • AWS_ ACCOUNT _ID für die Benutzerkontonummer

  • IMAGE_ REPO für das ECR private Amazon-Repository

  • BUILD_ TAG für die Version des Builds (der neueste Build ist der Wert für diese Variable)

  • DOCKER_ CONTAINER _ NAME für den Namen des Containers in der Aufgabe

Diese Variablen sind Platzhalter in der buildspec.yml Datei und werden durch ihre jeweiligen Werte ersetzt.

App-Entwickler, AWS Systemadministrator

Erstellen Sie eine Buildspec-Datei.

Sie können eine buildspec.yml Datei am selben Speicherort wie die in diesem Muster bereitgestellte Konfiguration erstellen pom.xml und hinzufügen, oder Sie können den Online-Buildspec-Editor verwenden und die Konfiguration hinzufügen. Konfigurieren Sie die Umgebungsvariablen mit den entsprechenden Werten, indem Sie die angegebenen Schritte ausführen.

App-Entwickler, AWS Systemadministrator

Konfigurieren Sie das Projekt für Artefakte.

(Optional) Konfigurieren Sie das Build-Projekt für Artefakte, falls erforderlich.

App-Entwickler, AWS Systemadministrator

Konfigurieren Sie Amazon CloudWatch Logs.

(Optional) Konfigurieren Sie Amazon CloudWatch Logs für das Build-Projekt, falls erforderlich. Dieser Schritt ist optional, wird aber empfohlen.

App-Entwickler, AWS Systemadministrator

Konfigurieren Sie Amazon S3 S3-Protokolle.

(Optional) Konfigurieren Sie Amazon Simple Storage Service (Amazon S3) -Protokolle für das Build-Projekt, wenn Sie die Protokolle speichern möchten.

App-Entwickler, AWS Systemadministrator
AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie eine Pipeline.

Erstellen Sie auf der AWS CodePipeline Konsole eine Pipeline und geben Sie ihren Namen an. Weitere Informationen zum Erstellen einer Pipeline finden Sie in der AWS CodePipeline Dokumentation.

App-Entwickler, AWS Systemadministrator

Wählen Sie eine Servicerolle aus.

Erstellen Sie eine Servicerolle oder wählen Sie eine aus der Liste der vorhandenen Servicerollen aus. Wenn Sie eine Servicerolle erstellen, geben Sie einen Namen für die Rolle ein und wählen Sie die Option CodePipeline zum Erstellen der Rolle aus.

App-Entwickler, AWS Systemadministrator

Wählen Sie einen Artefaktladen.

Wenn Sie möchten, dass Amazon S3 in den erweiterten Einstellungen einen Bucket erstellt und die Artefakte darin speichert, verwenden Sie den Standardspeicherort für den Artefaktspeicher. Oder wählen Sie einen benutzerdefinierten Speicherort und geben Sie einen vorhandenen Bucket an. Sie können sich auch dafür entscheiden, das Artefakt mithilfe eines Verschlüsselungsschlüssels zu verschlüsseln.

App-Entwickler, Systemadministrator AWS

Geben Sie den Quellanbieter an.

Wählen Sie als Quellanbieter GitHub (Version 2) aus.

App-Entwickler, AWS Systemadministrator

Wählen Sie das Repository und den Zweig des Codes aus.

Wenn Sie nicht angemeldet sind, geben Sie die Verbindungsdetails ein, zu denen Sie eine Verbindung herstellen möchten GitHub, und wählen Sie dann den Namen des Repositorys und den Namen der Filiale aus.

App-Entwickler, AWS Systemadministrator

Ändern Sie die Erkennungsoptionen.

Wählen Sie Bei Änderung des Quellcodes die Pipeline starten und fahren Sie mit der nächsten Seite fort.

App-Entwickler, AWS Systemadministrator

Wählen Sie einen Build-Anbieter aus.

Wählen Sie AWS CodeBuildfür Build-Anbieter die Option und geben Sie dann die AWS Region und den Projektnamen für das Build-Projekt an.

Wählen Sie als Buildtyp die Option Single Build aus.

App-Entwickler, AWS Systemadministrator

Wählen Sie einen Bereitstellungsanbieter.

Wählen Sie als Bereitstellungsanbieter Amazon ausECS. Wählen Sie den Clusternamen, den Servicenamen, die Image-Definitionsdatei, falls vorhanden, und gegebenenfalls einen Wert für das Bereitstellungs-Timeout aus. Wählen Sie Create pipeline (Pipeline erstellen) aus.

App-Entwickler, AWS Systemadministrator

Zugehörige Ressourcen