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.
Automatisches Erstellen von CI/CD-Pipelines und ECS Amazon-Clustern für Microservices mithilfe von AWS CDK
Erstellt von Varsha Raju () AWS
Umgebung: PoC oder Pilotprojekt | Technologien: DevOps; Container und Mikroservices; Modernisierung; Infrastruktur | AWSDienstleistungen: AWS CodeBuild; AWS CodeCommit; AWS CodePipeline; AmazonECS; AWS CDK |
Übersicht
Dieses Muster beschreibt, wie die Pipelines für Continuous Integration und Continuous Delivery (CI/CD) und die zugrunde liegende Infrastruktur für den Aufbau und die Bereitstellung von Microservices auf Amazon Elastic Container Service (Amazon) automatisch erstellt werden. ECS Sie können diesen Ansatz verwenden, wenn Sie proof-of-concept CI/CD-Pipelines einrichten möchten, um Ihrem Unternehmen die Vorteile von CI/CD, Microservices und aufzuzeigen. DevOps Sie können diesen Ansatz auch verwenden, um erste CI/CD-Pipelines zu erstellen, die Sie dann an die Anforderungen Ihres Unternehmens anpassen oder ändern können.
Der Ansatz des Musters erstellt eine Produktionsumgebung und eine Nicht-Produktionsumgebung, die jeweils über eine virtuelle private Cloud (VPC) und einen ECS Amazon-Cluster verfügen, die für die Ausführung in zwei Availability Zones konfiguriert sind. Diese Umgebungen werden von all Ihren Microservices gemeinsam genutzt, und Sie erstellen dann eine CI/CD-Pipeline für jeden Microservice. Diese CI/CD-Pipelines holen Änderungen aus einem Quell-Repository ein AWS CodeCommit, erstellen die Änderungen automatisch und stellen sie dann in Ihren Produktions- und Nichtproduktionsumgebungen bereit. Wenn eine Pipeline alle Phasen erfolgreich abgeschlossen hat, können Sie URLs damit auf den Microservice in der Produktions- und Nichtproduktionsumgebung zugreifen.
Voraussetzungen und Einschränkungen
Voraussetzungen
Ein aktives Amazon Web Services (AWS) -Konto.
Ein vorhandener Amazon Simple Storage Service (Amazon S3) -Bucket, der die
starter-code.zip
Datei (angehängt) enthält.AWSCloud Development Kit (AWSCDK), in Ihrem Konto installiert und konfiguriert. Weitere Informationen dazu finden Sie AWS CDK in der AWS CDK Dokumentation unter Erste Schritte mit dem.
Python 3 und
pip
, installiert und konfiguriert. Weitere Informationen dazu finden Sie in der Python-Dokumentation. Vertrautheit mit AWS CDK AWS CodePipeline, AWS CodeBuild, CodeCommit, Amazon Elastic Container Registry (AmazonECR)ECS, Amazon und AWS Fargate.
Vertrautheit mit Docker.
Ein Verständnis von CI/CD und. DevOps
Einschränkungen
Es gelten allgemeine AWS Kontolimits. Weitere Informationen dazu finden Sie unter AWSServicekontingenten in der AWS allgemeinen Referenzdokumentation.
Produktversionen
Der Code wurde mit den Versionen 16.13.0 und AWS CDK 1.132.0 von Node.js getestet.
Architektur
Das Diagramm zeigt den folgenden Workflow:
Ein Anwendungsentwickler überträgt den Code in ein Repository. CodeCommit
Eine Pipeline wird initiiert.
CodeBuild erstellt das Docker-Image und überträgt es in ein Amazon-Repository ECR
CodePipeline stellt ein neues Image für einen vorhandenen Fargate-Service in einem Amazon-Cluster bereit, der nicht zur Produktion dient. ECS
Amazon überträgt ECS das Bild aus dem ECR Amazon-Repository in einen Fargate-Dienst, der nicht zur Produktion verwendet wird.
Die Tests werden mit einem Gerät durchgeführt, das nicht in der Produktion verwendet wird. URL
Der Release-Manager genehmigt die Produktionsbereitstellung.
CodePipeline stellt das neue Image für einen vorhandenen Fargate-Service in einem Amazon-Produktionscluster bereit ECS
Amazon ECS überträgt das Bild aus dem ECR Amazon-Repository in den Fargate-Produktionsservice.
Produktionsbenutzer greifen mithilfe einer Produktion auf Ihr Feature zu. URL
Technologie-Stack
AWS CDK
CodeBuild
CodeCommit
CodePipeline
Amazon ECR
Amazon ECS
Amazon VPC
Automatisierung und Skalierung
Sie können den Ansatz dieses Musters verwenden, um Pipelines für Microservices zu erstellen, die in einem gemeinsam genutzten AWS CloudFormation Stack bereitgestellt werden. Die Automatisierung kann in jedem mehr als einen ECS Amazon-Cluster erstellen VPC und auch Pipelines für Microservices erstellen, die in einem gemeinsamen ECS Amazon-Cluster bereitgestellt werden. Dies erfordert jedoch, dass Sie neue Ressourceninformationen als Eingaben für den Pipeline-Stack angeben.
Tools
AWSCDK— AWS Cloud Development Kit (AWSCDK) ist ein Softwareentwicklungsframework, mit dem Cloud-Infrastruktur im Code definiert und bereitgestellt werden kann. AWS CloudFormation
AWS CodeBuild— AWS CodeBuild ist ein vollständig verwalteter Build-Service in der Cloud. CodeBuild kompiliert Ihren Quellcode, führt Komponententests durch und produziert Artefakte, die sofort einsatzbereit sind.
AWS CodeCommit— AWS CodeCommit ist ein Versionskontrolldienst, mit dem Sie Git-Repositorys privat in der AWS Cloud speichern und verwalten können. CodeCommit macht es überflüssig, dass Sie Ihr eigenes Quellcodeverwaltungssystem verwalten oder sich Gedanken über die Skalierung der Infrastruktur machen müssen.
AWS CodePipeline— AWS CodePipeline ist ein Service zur kontinuierlichen Bereitstellung, mit dem Sie die zur Veröffentlichung Ihrer Software erforderlichen Schritte modellieren, visualisieren und automatisieren können. Sie können die verschiedenen Phasen eines Softwareveröffentlichungsprozesses schnell modellieren und konfigurieren. CodePipeline automatisiert die Schritte, die erforderlich sind, um Ihre Softwareänderungen kontinuierlich zu veröffentlichen.
Amazon ECS — Amazon Elastic Container Service (AmazonECS) ist ein hoch skalierbarer, schneller Container-Management-Service, der zum Ausführen, Stoppen und Verwalten von Containern in einem Cluster verwendet wird. Sie können Ihre Aufgaben und Dienste auf einer serverlosen Infrastruktur ausführen, die von AWS Fargate verwaltet wird. Für mehr Kontrolle über Ihre Infrastruktur können Sie Ihre Aufgaben und Dienste alternativ auf einem Cluster von Amazon Elastic Compute Cloud (AmazonEC2) -Instances ausführen, die Sie verwalten.
Docker
— Docker hilft Entwicklern dabei, jede Anwendung als leichten, portablen und autarken Container zu packen, zu versenden und auszuführen.
Code
Der Code für dieses Muster ist in den starter-code.zip
Dateien cicdstarter.zip
und (im Anhang) verfügbar.
Epen
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Richten Sie das Arbeitsverzeichnis für ein AWSCDK. |
| AWS DevOps, Cloud-Infrastruktur |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie die gemeinsame Infrastruktur. |
| AWS DevOps, Cloud-Infrastruktur |
Überwachen Sie den AWS CloudFormation Stack. |
| AWS DevOps, Cloud-Infrastruktur |
Testen Sie den AWS CloudFormation Stack. |
Wichtig: Stellen Sie sicher, dass Sie die Sicherheitsgruppe IDs für die beiden VPCs und die Sicherheitsgruppe IDs für die Standardsicherheitsgruppen in beiden Gruppen aufzeichnenVPCs. | AWS DevOps, Cloud-Infrastruktur |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie die Infrastruktur für den Microservice. |
Hinweis: Sie können die Werte für beide Befehle auch angeben, indem Sie die | AWS DevOps, Cloud-Infrastruktur |
Überwachen Sie den AWS CloudFormation Stack. | Öffnen Sie die AWS CloudFormation Konsole und überwachen Sie den Fortschritt des | AWS DevOps, Cloud-Infrastruktur |
Testen Sie den AWS CloudFormation Stack. |
| |
Verwenden Sie die Pipeline. |
| AWS DevOps, Cloud-Infrastruktur |
Wiederhole dieses Epos für jeden Microservice. | Wiederholen Sie die Aufgaben in diesem Epos, um eine CI/CD-Pipeline für jeden Ihrer Microservices zu erstellen. | AWS DevOps, Cloud-Infrastruktur |
Zugehörige Ressourcen
Zusätzliche Informationen
cdk synth
-Befehl
cdk synth --context aws_account=<aws_account_number> --context aws_region=<aws_region> --context vpc_nonprod_id=<id_of_non_production VPC> --context vpc_prod_id=<id_of_production_VPC> --context ecssg_nonprod_id=< default_security_group_id_of_non-production_VPC> --context ecssg_prod_id=<default_security_group_id_of_production_VPC> --context code_commit_s3_bucket_for_code=<S3 bucket name> --context code_commit_s3_object_key_for_code=<Object_key_of_starter_code> --context microservice_name=<name_of_microservice>
cdk deploy
command
cdk deploy --context aws_account=<aws_account_number> --context aws_region=<aws_region> --context vpc_nonprod_id=<id_of_non_production_VPC> --context vpc_prod_id=<id_of_production_VPC> --context ecssg_nonprod_id=< default_security_group_id_of_non-production_VPC> --context ecssg_prod_id=<default_security_group_id_of_production_VPC> --context code_commit_s3_bucket_for_code=<S3 bucket name> --context code_commit_s3_object_key_for_code=<Object_key_of_starter_code> --context microservice_name=<name_of_microservice>