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.
Richten Sie eine CI/CD-Pipeline für Hybrid-Workloads auf Amazon ECS Anywhere ein, indem Sie und AWS CDK GitLab
Erstellt von Dr. Rahul Sharad Gaikwad () AWS
Übersicht
Hinweis: AWS CodeCommit ist für Neukunden nicht mehr verfügbar. Bestandskunden von AWS CodeCommit können den Service weiterhin wie gewohnt nutzen. Weitere Informationen
Amazon ECS Anywhere ist eine Erweiterung des Amazon Elastic Container Service (AmazonECS). Es bietet Unterstützung für die Registrierung einer externen Instanz, z. B. eines lokalen Servers oder einer virtuellen Maschine (VM), in Ihrem ECS Amazon-Cluster. Diese Funktion hilft, Kosten zu senken und komplexe lokale Container-Orchestrierung und -Operationen zu minimieren. Sie können ECS Anywhere verwenden, um Containeranwendungen sowohl in lokalen als auch in Cloud-Umgebungen bereitzustellen und auszuführen. Dadurch entfällt für Ihr Team die Notwendigkeit, mehrere Bereiche und Fähigkeiten zu erlernen oder komplexe Software eigenständig zu verwalten.
Dieses Muster beschreibt einen step-by-step Ansatz zur Bereitstellung eines ECS Amazon-Clusters mit Amazon ECS Anywhere-Instances mithilfe von Amazon Web Services (AWS) Cloud Development Kit (AWSCDK) -Stacks. Anschließend richten Sie eine AWS CodePipeline Pipeline für kontinuierliche Integration und kontinuierliche Bereitstellung (CI/CD) ein. Anschließend replizieren Sie Ihr GitLab Code-Repository auf den AWS CodeCommit Amazon-Cluster und stellen Ihre containerisierte Anwendung dort bereit. ECS
Dieses Muster soll denjenigen helfen, die eine lokale Infrastruktur verwenden, um Containeranwendungen auszuführen und die Anwendungscodebasis GitLab zu verwalten. Sie können diese Workloads mithilfe von AWS Cloud-Diensten verwalten, ohne Ihre bestehende lokale Infrastruktur zu stören.
Voraussetzungen und Einschränkungen
Voraussetzungen
Ein aktives AWS-Konto.
Eine Containeranwendung, die auf einer lokalen Infrastruktur ausgeführt wird.
Ein GitLab Repository, in dem Sie Ihre Anwendungscodebasis verwalten. Weitere Informationen finden Sie unter Repository
(GitLab). AWSBefehlszeilenschnittstelle (AWSCLI), installiert und konfiguriert. Weitere Informationen finden Sie unter Installation oder Aktualisierung der neuesten Version von AWS CLI (AWSCLIDokumentation).
AWSCDKToolkit, global installiert und konfiguriert. Weitere Informationen finden Sie unter Installieren von AWS CDK (AWSCDKDokumentation).
npm, installiert und konfiguriert für den AWS CDK in TypeScript. Weitere Informationen finden Sie unter Node.js und npm herunterladen und installieren (npm-Dokumentation
).
Einschränkungen
Einschränkungen und Überlegungen finden Sie unter Externe Instances (Amazon ECS Anywhere) in der ECS Amazon-Dokumentation.
Produktversionen
AWSCDKToolkit-Version 2.27.0 oder höher
npm Version 7.20.3 oder höher
Node.js Version 16.6.1 oder höher
Architektur
Zieltechnologie-Stack
AWS CDK
AWS CloudFormation
AWS CodeBuild
AWS CodeCommit
AWS CodePipeline
Amazon ECS überall
Amazon Elastic Container Registry (AmazonECR)
AWSIdentity and Access Management (IAM)
AWSSystemmanager
GitLab Endlager
Zielarchitektur

Dieses Diagramm stellt zwei primäre Workflows dar, die in diesem Muster beschrieben werden, nämlich die Bereitstellung des ECS Amazon-Clusters und die Einrichtung der CI/CD pipeline that sets up and deploys the CI/CD Pipeline, wie folgt:
Bereitstellung des Amazon-Clusters ECS
Wenn Sie den ersten AWS CDK Stack bereitstellen, erstellt er einen CloudFormation Stack aufAWS.
Dieser CloudFormation Stack stellt einen ECS Amazon-Cluster und zugehörige AWS Ressourcen bereit.
Um eine externe Instance bei einem ECS Amazon-Cluster zu registrieren, müssen Sie AWS Systems Manager Agent (SSMAgent) auf Ihrer VM installieren und die VM als von AWS Systems Manager verwaltete Instance registrieren.
Sie müssen auch den Amazon ECS Container Agent und Docker auf Ihrer VM installieren, um sie als externe Instance beim ECS Amazon-Cluster zu registrieren.
Wenn die externe Instance registriert und mit dem ECS Amazon-Cluster konfiguriert ist, kann sie mehrere Container auf Ihrer VM ausführen, die als externe Instance registriert ist.
Der ECS Amazon-Cluster ist aktiv und kann die Anwendungs-Workloads über Container ausführen. Die Amazon ECS Anywhere-Container-Instance wird in einer lokalen Umgebung ausgeführt, ist aber mit dem ECS Amazon-Cluster in der Cloud verknüpft.
Einrichtung und Bereitstellung der CI/CD-Pipeline
Wenn Sie den zweiten AWS CDK Stack bereitstellen, erstellt er einen weiteren CloudFormation Stack auf. AWS
Dieser CloudFormation Stack stellt eine Pipeline in CodePipeline und zugehörige AWS Ressourcen bereit.
Sie übertragen Änderungen am Anwendungscode per Push und führen sie in ein lokales GitLab Repository zusammen.
Das GitLab Repository wird automatisch in das Repository repliziert. CodeCommit
Die Aktualisierungen des CodeCommit Repositorys werden automatisch gestartet. CodePipeline
CodePipeline kopiert Code aus der CodeCommit integrierten implementierbaren Anwendung und erstellt sie. CodeBuild
CodePipeline erstellt ein Docker-Image der CodeBuild Build-Umgebung und überträgt es in das ECR Amazon-Repo.
CodePipeline initiiert CodeDeploy Aktionen, die das Container-Image aus dem ECR Amazon-Repo abrufen.
CodePipeline stellt das Container-Image auf dem ECS Amazon-Cluster bereit.
Automatisierung und Skalierung
Dieses Muster verwendet das Tool AWS CDK as an Infrastructure as Code (IaC) zur Konfiguration und Bereitstellung dieser Architektur. AWSCDKhilft Ihnen bei der Orchestrierung der AWS Ressourcen und der Einrichtung von Amazon ECS Anywhere und der CI/CD-Pipeline.
Tools
AWS-Services
AWSCloud Development Kit (AWSCDK) ist ein Softwareentwicklungs-Framework, mit dem Sie AWS Cloud-Infrastruktur im Code definieren und bereitstellen können.
AWS CodeCommitist ein Versionskontrolldienst, mit dem Sie Git-Repositorys privat speichern und verwalten können, ohne Ihr eigenes Quellcodeverwaltungssystem verwalten zu müssen.
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.
AWSCommand Line Interface (AWSCLI) ist ein Open-Source-Tool, mit dem Sie mithilfe von Befehlen in Ihrer Befehlszeilenshell mit AWS Diensten interagieren können.
Amazon Elastic Container Registry (AmazonECR) ist ein verwalteter Container-Image-Registry-Service, der sicher, skalierbar und zuverlässig ist.
Amazon Elastic Container Service (AmazonECS) ist ein schneller und skalierbarer Container-Management-Service, mit dem Sie Container in einem Cluster ausführen, stoppen und verwalten können. Dieses Muster verwendet auch Amazon ECS Anywhere, das Unterstützung für die Registrierung eines lokalen Servers oder einer VM in Ihrem ECS Amazon-Cluster bietet.
Andere Tools
Node.js
ist eine ereignisgesteuerte JavaScript Laufzeitumgebung, die für die Erstellung skalierbarer Netzwerkanwendungen entwickelt wurde. npm
ist eine Softwareregistrierung, die in einer Node.js -Umgebung ausgeführt wird und verwendet wird, um Pakete gemeinsam zu nutzen oder auszuleihen und die Bereitstellung von privaten Paketen zu verwalten. Vagrant
ist ein Open-Source-Hilfsprogramm für den Aufbau und die Wartung portabler virtueller Softwareentwicklungsumgebungen. Zu Demonstrationszwecken verwendet dieses Muster Vagrant, um eine lokale VM zu erstellen.
Code-Repository
Der Code für dieses Muster ist in der GitHub CI/CD-Pipeline für Amazon ECS Anywhere mithilfe AWS CDK
Bewährte Methoden
Beachten Sie bei der Bereitstellung dieses Musters die folgenden bewährten Methoden:
Epen
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Überprüfen Sie die AWS CDK Version. | Überprüfen Sie die Version des AWS CDK Toolkits, indem Sie den folgenden Befehl eingeben.
Für dieses Pattern ist Version 2.27.0 oder höher erforderlich. Wenn Sie eine frühere Version haben, folgen Sie den Anweisungen in der AWSCDKDokumentation, um sie zu aktualisieren. | DevOps Ingenieur |
Überprüfen Sie die NPM-Version. | Überprüfen Sie die Version von npm, indem Sie den folgenden Befehl eingeben.
Dieses Muster erfordert Version 7.20.3 oder höher. Wenn Sie eine frühere Version haben, folgen Sie den Anweisungen in der npm-Dokumentation, um sie zu aktualisieren | DevOps Ingenieur |
AWSAnmeldeinformationen einrichten. | Richten Sie die AWS Anmeldeinformationen ein, indem
| DevOps Ingenieur |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Klonen Sie das AWS CDK Code-Repository. |
| DevOps Ingenieur |
Bootstrapping für die Umwelt. | Stellen Sie die CloudFormation Vorlage für das Konto und die AWS Region bereit, die Sie verwenden möchten, indem Sie den folgenden Befehl eingeben.
Weitere Informationen finden Sie in der Dokumentation unter Bootstrapping. AWS CDK | DevOps Ingenieur |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Installieren Sie die Paketabhängigkeiten und kompilieren Sie die TypeScript Dateien. | Installieren Sie die Paketabhängigkeiten und kompilieren Sie die TypeScript Dateien, indem Sie die folgenden Befehle eingeben.
Mit diesen Befehlen werden alle Pakete aus dem Beispiel-Repository installiert. Weitere Informationen finden Sie unter npm ci | DevOps Ingenieur |
Erstellen Sie das Projekt. | Geben Sie den folgenden Befehl ein, um den Projektcode zu erstellen.
Weitere Informationen zum Erstellen und Bereitstellen des Projekts finden Sie in der AWS CDK Dokumentation unter Ihre erste AWS CDK App. | DevOps Ingenieur |
Stellen Sie den Amazon ECS Anywhere-Infrastruktur-Stack bereit. |
| DevOps Ingenieur |
Überprüfen Sie die Erstellung und Ausgabe des Stacks. |
| DevOps Ingenieur |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Richten Sie Ihre VM ein. | Erstellen Sie eine Vagrant-VM, indem Sie den | DevOps Ingenieur |
Registrieren Sie Ihre VM als externe Instanz. |
Dadurch wird Ihre VM als externe Amazon ECS Anywhere-Instance eingerichtet und die Instance im ECS Amazon-Cluster registriert. Weitere Informationen finden Sie in der ECS Amazon-Dokumentation unter Registrierung einer externen Instance in einem Cluster | DevOps Ingenieur |
Überprüfen Sie den Status von Amazon ECS Anywhere und der externen VM. | Verwenden Sie die folgenden Befehle, um zu überprüfen, ob Ihre VM mit der ECS Amazon-Steuerebene verbunden ist und läuft.
| DevOps Ingenieur |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie einen Zweig im CodeCommit Repo. | Erstellen Sie einen Branch mit dem Namen
| DevOps Ingenieur |
Richten Sie die Repo-Mirroring ein. | Sie können ein GitLab Repository von und zu externen Quellen spiegeln. Sie können auswählen, welches Repository als Quelle dient. Branches, Tags und Commits werden automatisch synchronisiert. Richten Sie einen Push-Mirror zwischen dem GitLab Repository, das Ihre Anwendung hostet, und dem CodeCommit Repository ein. Anweisungen finden Sie unter Einen Push-Mirror von GitLab bis einrichten CodeCommit AnmerkungStandardmäßig synchronisiert die Spiegelung das Repository automatisch. Wenn Sie die Repositorys manuell aktualisieren möchten, finden Sie weitere Informationen unter Einen Mirror aktualisieren (Dokumentation | DevOps Ingenieur |
Stellen Sie den CI/CD-Pipeline-Stack bereit. | Stellen Sie den
| DevOps Ingenieur |
Testen Sie die CI/CD-Pipeline. |
| DevOps Ingenieur |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Bereinigen und löschen Sie die Ressourcen. | Nachdem Sie dieses Muster durchgegangen sind, sollten Sie die von Ihnen erstellten proof-of-concept Ressourcen entfernen. Geben Sie zum Aufräumen die folgenden Befehle ein.
| DevOps Ingenieur |
Fehlerbehebung
Problem | Lösung |
---|---|
Fehler bezüglich fehlender Pakete bei der Installation von Paketabhängigkeiten. | Geben Sie einen der folgenden Befehle ein, um fehlende Pakete zu beheben.
or
|
Wenn Sie den
| Der |
Ein ECS Amazon-Gesundheitscheck wird zurückgegeben
| Starten Sie den ECS Amazon-Agenten auf Ihrer Vagrant-VM neu, indem Sie die folgenden Befehle eingeben.
|
Zugehörige Ressourcen
Amazon ECS Anywhere-Demo
(Video) Spiegelung von Repositorys
(GitLab Dokumentation)