Stellen Sie eine CI/CD-Pipeline für Java-Microservices auf Amazon ECS bereit - 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 ECS bereit

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

Übersicht

Dieses Muster führt Sie durch die Schritte zur Implementierung einer kontinuierlichen Integration und kontinuierlichen Bereitstellung (die CI/CD) pipeline for Java microservices on an existing Amazon Elastic Container Service (Amazon ECS) cluster by using AWS CodeBuild. When the developer commits the changes, the CI/CD Pipeline wird initiiert und der Build-Prozess beginnt in. CodeBuild Wenn der Build abgeschlossen ist, wird das Artefakt an Amazon Elastic Container Registry (Amazon ECR) übertragen und der neueste Build von Amazon ECR wird abgerufen und an den Amazon ECS-Service übertragen.

Voraussetzungen und Einschränkungen

Voraussetzungen

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

  • Vertrautheit mit AWS CodeBuild und AWS CodePipeline

Architektur

Quelltechnologie-Stack

  • Java-Microservices, die auf Amazon ECS ausgeführt werden

  • Code-Repository in 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.yml-Datei:

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

AWS-Services

  • AWS CodeBuild ist ein vollständig verwalteter Build-Service, mit dem Sie Quellcode kompilieren, Komponententests ausführen und bereitstellungsbereite Artefakte erstellen können. AWS CodeBuild skaliert kontinuierlich und verarbeitet mehrere Builds gleichzeitig, sodass Ihre Builds nicht in der Warteschlange verbleiben.

  • AWS CodePipeline hilft 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 AWS CodePipeline in Dienste von Drittanbietern wie GitHub Amazon ECR integrieren oder einen AWS-Service wie Amazon ECR verwenden.

  • Amazon Elastic Container Registry (Amazon ECR) ist eine vollständig verwaltete Registry, die es Entwicklern erleichtert, Docker-Container-Images zu speichern, zu verwalten und bereitzustellen. Amazon ECR ist in Amazon ECS integriert, 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 (Amazon ECS) ist ein hoch skalierbarer, leistungsstarker Container-Orchestrierungsservice, der Docker-Container unterstützt und es Ihnen ermöglicht, containerisierte Anwendungen auf AWS einfach auszuführen und zu skalieren. Mit Amazon ECS müssen Sie keine eigene Container-Orchestrierungssoftware installieren und betreiben, einen Cluster von virtuellen Maschinen verwalten und skalieren oder Container auf diesen virtuellen Maschinen planen.

  • AWS Fargate ist eine Rechen-Engine für Amazon ECS, 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.

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie ein CodeBuild Build-Projekt.

Erstellen Sie in der CodeBuild AWS-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:

  • Anmerkung

    Amazon Linux 2 (: 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 private Amazon ECR-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 CodePipeline AWS-Konsole eine Pipeline und geben Sie ihren Namen an. Weitere Informationen zum Erstellen einer Pipeline finden Sie in der CodePipeline AWS-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 Artefaktspeicher.

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 das Artefakt auch mithilfe eines Verschlüsselungsschlüssels verschlüsseln.

App-Entwickler, AWS-Systemadministrator

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

Erkennungsoptionen ändern.

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 als Build-Anbieter AWS CodeBuild aus und geben Sie dann die AWS-Region und den Projektnamen für das Build-Projekt an.

Wählen Sie als Build-Typ die Option Single Build aus.

App-Entwickler, AWS-Systemadministrator

Wählen Sie einen Bereitstellungsanbieter.

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

App-Entwickler, AWS-Systemadministrator

Zugehörige Ressourcen