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
Zieltechnologie-Stack
Amazon ECR
Amazon ECS
AWS-Fargate
AWS CodePipeline
AWS CodeBuild
Zielarchitektur
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
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
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie ein CodeBuild Build-Projekt. | Erstellen Sie in der AWS CodeBuild Konsole | 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:
| 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:
Diese Variablen sind Platzhalter in der | App-Entwickler, AWS Systemadministrator |
Erstellen Sie eine Buildspec-Datei. | Sie können eine | 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 |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie eine Pipeline. | Erstellen Sie auf der AWS CodePipeline Konsole | 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 |