Wählen Sie Ihre Cookie-Einstellungen aus

Wir verwenden essentielle Cookies und ähnliche Tools, die für die Bereitstellung unserer Website und Services erforderlich sind. Wir verwenden Performance-Cookies, um anonyme Statistiken zu sammeln, damit wir verstehen können, wie Kunden unsere Website nutzen, und Verbesserungen vornehmen können. Essentielle Cookies können nicht deaktiviert werden, aber Sie können auf „Anpassen“ oder „Ablehnen“ klicken, um Performance-Cookies abzulehnen.

Wenn Sie damit einverstanden sind, verwenden AWS und zugelassene Drittanbieter auch Cookies, um nützliche Features der Website bereitzustellen, Ihre Präferenzen zu speichern und relevante Inhalte, einschließlich relevanter Werbung, anzuzeigen. Um alle nicht notwendigen Cookies zu akzeptieren oder abzulehnen, klicken Sie auf „Akzeptieren“ oder „Ablehnen“. Um detailliertere Entscheidungen zu treffen, klicken Sie auf „Anpassen“.

Richten Sie eine CI/CD-Pipeline für Hybrid-Workloads auf Amazon ECS Anywhere ein, indem Sie und AWS CDK GitLab - 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.

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

Einschränkungen

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

Architekturdiagramm der Einrichtung des ECS Amazon-Clusters und der CI/CD-Pipeline.

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:

  1. Bereitstellung des Amazon-Clusters ECS

    1. Wenn Sie den ersten AWS CDK Stack bereitstellen, erstellt er einen CloudFormation Stack aufAWS.

    2. Dieser CloudFormation Stack stellt einen ECS Amazon-Cluster und zugehörige AWS Ressourcen bereit.

    3. 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. 

    4. 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.

    5. 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.

    6. 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.

  2. Einrichtung und Bereitstellung der CI/CD-Pipeline

    1. Wenn Sie den zweiten AWS CDK Stack bereitstellen, erstellt er einen weiteren CloudFormation Stack auf. AWS

    2. Dieser CloudFormation Stack stellt eine Pipeline in CodePipeline und zugehörige AWS Ressourcen bereit.

    3. Sie übertragen Änderungen am Anwendungscode per Push und führen sie in ein lokales GitLab Repository zusammen. 

    4. Das GitLab Repository wird automatisch in das Repository repliziert. CodeCommit

    5. Die Aktualisierungen des CodeCommit Repositorys werden automatisch gestartet. CodePipeline 

    6. CodePipeline kopiert Code aus der CodeCommit integrierten implementierbaren Anwendung und erstellt sie. CodeBuild

    7. CodePipeline erstellt ein Docker-Image der CodeBuild Build-Umgebung und überträgt es in das ECR Amazon-Repo.

    8. CodePipeline initiiert CodeDeploy Aktionen, die das Container-Image aus dem ECR Amazon-Repo abrufen.

    9. 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 des Repositorys verfügbar.

Bewährte Methoden

Beachten Sie bei der Bereitstellung dieses Musters die folgenden bewährten Methoden:

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Überprüfen Sie die AWS CDK Version.

Überprüfen Sie die Version des AWS CDK Toolkits, indem Sie den folgenden Befehl eingeben.

cdk --version

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.

npm --version

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 aws configure Sie den Befehl eingeben und den Anweisungen folgen.

$aws configure AWS Access Key ID [None]: <your-access-key-ID> AWS Secret Access Key [None]: <your-secret-access-key> Default region name [None]: <your-Region-name> Default output format [None]:
DevOps Ingenieur

Überprüfen Sie die Konfiguration AWS CDK

AufgabeBeschreibungErforderliche Fähigkeiten

Überprüfen Sie die AWS CDK Version.

Überprüfen Sie die Version des AWS CDK Toolkits, indem Sie den folgenden Befehl eingeben.

cdk --version

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.

npm --version

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 aws configure Sie den Befehl eingeben und den Anweisungen folgen.

$aws configure AWS Access Key ID [None]: <your-access-key-ID> AWS Secret Access Key [None]: <your-secret-access-key> Default region name [None]: <your-Region-name> Default output format [None]:
DevOps Ingenieur
AufgabeBeschreibungErforderliche Fähigkeiten

Klonen Sie das AWS CDK Code-Repository.

  1. Klonen Sie die CI/CD-Pipeline für Amazon ECS Anywhere mithilfe des AWS CDK Repositorys für dieses Muster, indem Sie den folgenden Befehl eingeben.

    git clone https://github.com/aws-samples/amazon-ecs-anywhere-cicd-pipeline-cdk-sample.git
  2. Navigieren Sie in das geklonte Verzeichnis, indem Sie den folgenden Befehl eingeben.

    cd amazon-ecs-anywhere-cicd-pipeline-cdk-sample
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.

cdk bootstrap <account-number>/<Region>

Weitere Informationen finden Sie in der Dokumentation unter Bootstrapping. AWS CDK

DevOps Ingenieur

Bootstrapping für die Umwelt AWS CDK

AufgabeBeschreibungErforderliche Fähigkeiten

Klonen Sie das AWS CDK Code-Repository.

  1. Klonen Sie die CI/CD-Pipeline für Amazon ECS Anywhere mithilfe des AWS CDK Repositorys für dieses Muster, indem Sie den folgenden Befehl eingeben.

    git clone https://github.com/aws-samples/amazon-ecs-anywhere-cicd-pipeline-cdk-sample.git
  2. Navigieren Sie in das geklonte Verzeichnis, indem Sie den folgenden Befehl eingeben.

    cd amazon-ecs-anywhere-cicd-pipeline-cdk-sample
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.

cdk bootstrap <account-number>/<Region>

Weitere Informationen finden Sie in der Dokumentation unter Bootstrapping. AWS CDK

DevOps Ingenieur
AufgabeBeschreibungErforderliche 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.

$cd EcsAnywhereCdk $npm install $npm fund

Mit diesen Befehlen werden alle Pakete aus dem Beispiel-Repository installiert. Weitere Informationen finden Sie unter npm ci und npm install in der npm-Dokumentation. Wenn Sie bei der Eingabe dieser Befehle Fehler über fehlende Pakete erhalten, lesen Sie den Abschnitt zur Fehlerbehebung in diesem Muster.

DevOps Ingenieur

Erstellen Sie das Projekt.

Geben Sie den folgenden Befehl ein, um den Projektcode zu erstellen.

npm run build

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.

  1. Listen Sie die Stacks auf, indem Sie den folgenden Befehl eingeben.

    $cdk list
  2. Vergewissern Sie sich, dass die Ausgabe die ECSAnywherePipelineStack Stapel EcsAnywhereInfraStack und zurückgibt.

  3. Stellen Sie den EcsAnywhereInfraStack Stack bereit, indem Sie den folgenden Befehl eingeben.

    $cdk  deploy EcsAnywhereInfraStack
DevOps Ingenieur

Überprüfen Sie die Erstellung und Ausgabe des Stacks.

  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die CloudFormation Konsole unter https://console.aws.amazon.com/cloudformation/.

  2. Wählen Sie auf der Seite Stacks den EcsAnywhereInfraStack Stack aus.

  3. Vergewissern Sie sich, dass der Stack-Status entweder CREATE_IN_PROGRESS oder CREATE_COMPLETE lautet.

    Die Einrichtung des ECS Amazon-Clusters kann einige Zeit in Anspruch nehmen. Fahren Sie erst fort, wenn die Stack-Erstellung abgeschlossen ist.

DevOps Ingenieur

Aufbau und Bereitstellung der Infrastruktur für Amazon ECS Anywhere

AufgabeBeschreibungErforderliche 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.

$cd EcsAnywhereCdk $npm install $npm fund

Mit diesen Befehlen werden alle Pakete aus dem Beispiel-Repository installiert. Weitere Informationen finden Sie unter npm ci und npm install in der npm-Dokumentation. Wenn Sie bei der Eingabe dieser Befehle Fehler über fehlende Pakete erhalten, lesen Sie den Abschnitt zur Fehlerbehebung in diesem Muster.

DevOps Ingenieur

Erstellen Sie das Projekt.

Geben Sie den folgenden Befehl ein, um den Projektcode zu erstellen.

npm run build

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.

  1. Listen Sie die Stacks auf, indem Sie den folgenden Befehl eingeben.

    $cdk list
  2. Vergewissern Sie sich, dass die Ausgabe die ECSAnywherePipelineStack Stapel EcsAnywhereInfraStack und zurückgibt.

  3. Stellen Sie den EcsAnywhereInfraStack Stack bereit, indem Sie den folgenden Befehl eingeben.

    $cdk  deploy EcsAnywhereInfraStack
DevOps Ingenieur

Überprüfen Sie die Erstellung und Ausgabe des Stacks.

  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die CloudFormation Konsole unter https://console.aws.amazon.com/cloudformation/.

  2. Wählen Sie auf der Seite Stacks den EcsAnywhereInfraStack Stack aus.

  3. Vergewissern Sie sich, dass der Stack-Status entweder CREATE_IN_PROGRESS oder CREATE_COMPLETE lautet.

    Die Einrichtung des ECS Amazon-Clusters kann einige Zeit in Anspruch nehmen. Fahren Sie erst fort, wenn die Stack-Erstellung abgeschlossen ist.

DevOps Ingenieur
AufgabeBeschreibungErforderliche Fähigkeiten

Richten Sie Ihre VM ein.

Erstellen Sie eine Vagrant-VM, indem Sie den vagrant up Befehl aus dem Stammverzeichnis eingeben, in dem sich Vagrantfile befindet. Weitere Informationen finden Sie in der Vagrant-Dokumentation.

DevOps Ingenieur

Registrieren Sie Ihre VM als externe Instanz.

  1. Melden Sie sich mit dem vagrant ssh Befehl bei der Vagrant-VM an. Weitere Informationen finden Sie in der Vagrant-Dokumentation.

  2. Installieren Sie AWS CLI auf der VM, indem Sie den AWSCLIInstallationsanweisungen folgen und die folgenden Befehle eingeben. 

    $ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" \ > -o "awscliv2.zip" $sudo apt install unzip $unzip awscliv2.zip $sudo ./aws/install $aws configure AWS Access Key ID [None]: <your-access-key-ID> AWS Secret Access Key [None]: <your-secret-access-key> Default region name [None]: <your-Region-name> Default output format [None]:
  1. Erstellen Sie einen Aktivierungscode und eine ID, mit denen Sie Ihre VM bei AWS Systems Manager registrieren und Ihre externe Instanz aktivieren können. Die Ausgabe dieses Befehls enthält die Werte für die Aktivierungs-ID und den Aktivierungscode.

    aws ssm create-activation \ > --iam-role EcsAnywhereInstanceRole \ > | tee ssm-activation.json

    Wenn Sie bei der Ausführung dieses Befehls eine Fehlermeldung erhalten, finden Sie weitere Informationen im Abschnitt Problembehandlung.

  2. Exportieren Sie die Aktivierungs-ID und die Codewerte.

    export ACTIVATION_ID=<activation-ID> export ACTIVATION_CODE=<activation-code>
  3. Laden Sie das Installationsskript auf Ihre VM herunter.

    curl --proto "https" -o "ecs-anywhere-install.sh" \ > "https://amazon-ecs-agent.s3.amazonaws.com/ecs-anywhere-install-latest.sh"
  4. Führen Sie das Installationsskript auf Ihrer VM aus.

    sudo bash ecs-anywhere-install.sh \ --cluster EcsAnywhereCluster \ --activation-id $ACTIVATION_ID \ --activation-code $ACTIVATION_CODE \ --region <region-name>

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. Wenn Sie Probleme haben, lesen Sie den Abschnitt Fehlerbehebung.

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.

$aws ssm describe-instance-information $aws ecs list-container-instances --cluster $CLUSTER_NAME
DevOps Ingenieur

Richten Sie eine lokale VM ein

AufgabeBeschreibungErforderliche Fähigkeiten

Richten Sie Ihre VM ein.

Erstellen Sie eine Vagrant-VM, indem Sie den vagrant up Befehl aus dem Stammverzeichnis eingeben, in dem sich Vagrantfile befindet. Weitere Informationen finden Sie in der Vagrant-Dokumentation.

DevOps Ingenieur

Registrieren Sie Ihre VM als externe Instanz.

  1. Melden Sie sich mit dem vagrant ssh Befehl bei der Vagrant-VM an. Weitere Informationen finden Sie in der Vagrant-Dokumentation.

  2. Installieren Sie AWS CLI auf der VM, indem Sie den AWSCLIInstallationsanweisungen folgen und die folgenden Befehle eingeben. 

    $ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" \ > -o "awscliv2.zip" $sudo apt install unzip $unzip awscliv2.zip $sudo ./aws/install $aws configure AWS Access Key ID [None]: <your-access-key-ID> AWS Secret Access Key [None]: <your-secret-access-key> Default region name [None]: <your-Region-name> Default output format [None]:
  1. Erstellen Sie einen Aktivierungscode und eine ID, mit denen Sie Ihre VM bei AWS Systems Manager registrieren und Ihre externe Instanz aktivieren können. Die Ausgabe dieses Befehls enthält die Werte für die Aktivierungs-ID und den Aktivierungscode.

    aws ssm create-activation \ > --iam-role EcsAnywhereInstanceRole \ > | tee ssm-activation.json

    Wenn Sie bei der Ausführung dieses Befehls eine Fehlermeldung erhalten, finden Sie weitere Informationen im Abschnitt Problembehandlung.

  2. Exportieren Sie die Aktivierungs-ID und die Codewerte.

    export ACTIVATION_ID=<activation-ID> export ACTIVATION_CODE=<activation-code>
  3. Laden Sie das Installationsskript auf Ihre VM herunter.

    curl --proto "https" -o "ecs-anywhere-install.sh" \ > "https://amazon-ecs-agent.s3.amazonaws.com/ecs-anywhere-install-latest.sh"
  4. Führen Sie das Installationsskript auf Ihrer VM aus.

    sudo bash ecs-anywhere-install.sh \ --cluster EcsAnywhereCluster \ --activation-id $ACTIVATION_ID \ --activation-code $ACTIVATION_CODE \ --region <region-name>

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. Wenn Sie Probleme haben, lesen Sie den Abschnitt Fehlerbehebung.

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.

$aws ssm describe-instance-information $aws ecs list-container-instances --cluster $CLUSTER_NAME
DevOps Ingenieur
AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie einen Zweig im CodeCommit Repo.

Erstellen Sie einen Branch mit dem Namen main im CodeCommit Repo, indem Sie den ersten Commit für das Repository erstellen. Sie können der AWS Dokumentation unter Create a Commit folgen. CodeCommit Nachfolgend finden Sie einen Beispielbefehl.

aws codecommit put-file \ --repository-name EcsAnywhereRepo \ --branch-name main \ --file-path README.md \ --file-content "Test" \ --name "Dev Ops" \ --email "devops@example.com" \ --commit-message "Adding README."
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 (GitLab Dokumentation).

Anmerkung

Standardmäßig synchronisiert die Spiegelung das Repository automatisch. Wenn Sie die Repositorys manuell aktualisieren möchten, finden Sie weitere Informationen unter Einen Mirror aktualisieren (Dokumentation)GitLab .

DevOps Ingenieur

Stellen Sie den CI/CD-Pipeline-Stack bereit.

Stellen Sie den EcsAnywherePipelineStack Stack bereit, indem Sie den folgenden Befehl eingeben.

$cdk deploy EcsAnywherePipelineStack
DevOps Ingenieur

Testen Sie die CI/CD-Pipeline.

  1. Nehmen Sie Änderungen am Anwendungscode vor und übertragen Sie ihn in das lokale GitLab Quell-Repository. Weitere Informationen finden Sie unter Push-Optionen (GitLab Dokumentation). Bearbeiten Sie beispielsweise die ../application/index.html Datei, um den Versionswert der Anwendung zu aktualisieren.

  2. Wenn der Code in das CodeCommit Repository repliziert wird, wird die CI/CD-Pipeline gestartet. Führen Sie eine der folgenden Aktionen aus:

    • Wenn Sie die automatische Spiegelung verwenden, um das Repository mit dem GitLab Repo zu synchronisieren, fahren Sie mit dem nächsten CodeCommit Schritt fort.

    • Wenn Sie die manuelle Spiegelung verwenden, übertragen Sie die Änderungen am Anwendungscode in das CodeCommit Repository, indem Sie den Anweisungen unter Einen Spiegel aktualisieren (Dokumentation) folgen. GitLab

  3. Geben Sie auf Ihrem lokalen Computer in einem Webbrowser http://localhost:80 ein. Dadurch wird die NGINX Webseite geöffnet, da Port 80 in Vagrantfile an localhost weitergeleitet wird. Vergewissern Sie sich, dass Sie den Wert der aktualisierten Anwendungsversion anzeigen können. Dadurch werden die Pipeline und die Image-Bereitstellung validiert.

  4. (Optional) Wenn Sie die Bereitstellung in der AWS Management Console überprüfen möchten, gehen Sie wie folgt vor:

    1. Öffnen Sie die ECS Amazon-Konsole unter https://console.aws.amazon.com/ecs/.

    2. Wählen Sie die zu verwendende Region in der Navigationsleiste aus.

    3. Klicken Sie im Navigationsbereich auf Cluster.

    4. Wählen Sie auf der Cluster-Seite den EcsAnywhereClusterCluster aus.

    5. Wählen Sie Aufgabendefinitionen.

    6. Vergewissern Sie sich, dass der Container läuft.

DevOps Ingenieur

Stellen Sie die CI/CD-Pipeline bereit

AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie einen Zweig im CodeCommit Repo.

Erstellen Sie einen Branch mit dem Namen main im CodeCommit Repo, indem Sie den ersten Commit für das Repository erstellen. Sie können der AWS Dokumentation unter Create a Commit folgen. CodeCommit Nachfolgend finden Sie einen Beispielbefehl.

aws codecommit put-file \ --repository-name EcsAnywhereRepo \ --branch-name main \ --file-path README.md \ --file-content "Test" \ --name "Dev Ops" \ --email "devops@example.com" \ --commit-message "Adding README."
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 (GitLab Dokumentation).

Anmerkung

Standardmäßig synchronisiert die Spiegelung das Repository automatisch. Wenn Sie die Repositorys manuell aktualisieren möchten, finden Sie weitere Informationen unter Einen Mirror aktualisieren (Dokumentation)GitLab .

DevOps Ingenieur

Stellen Sie den CI/CD-Pipeline-Stack bereit.

Stellen Sie den EcsAnywherePipelineStack Stack bereit, indem Sie den folgenden Befehl eingeben.

$cdk deploy EcsAnywherePipelineStack
DevOps Ingenieur

Testen Sie die CI/CD-Pipeline.

  1. Nehmen Sie Änderungen am Anwendungscode vor und übertragen Sie ihn in das lokale GitLab Quell-Repository. Weitere Informationen finden Sie unter Push-Optionen (GitLab Dokumentation). Bearbeiten Sie beispielsweise die ../application/index.html Datei, um den Versionswert der Anwendung zu aktualisieren.

  2. Wenn der Code in das CodeCommit Repository repliziert wird, wird die CI/CD-Pipeline gestartet. Führen Sie eine der folgenden Aktionen aus:

    • Wenn Sie die automatische Spiegelung verwenden, um das Repository mit dem GitLab Repo zu synchronisieren, fahren Sie mit dem nächsten CodeCommit Schritt fort.

    • Wenn Sie die manuelle Spiegelung verwenden, übertragen Sie die Änderungen am Anwendungscode in das CodeCommit Repository, indem Sie den Anweisungen unter Einen Spiegel aktualisieren (Dokumentation) folgen. GitLab

  3. Geben Sie auf Ihrem lokalen Computer in einem Webbrowser http://localhost:80 ein. Dadurch wird die NGINX Webseite geöffnet, da Port 80 in Vagrantfile an localhost weitergeleitet wird. Vergewissern Sie sich, dass Sie den Wert der aktualisierten Anwendungsversion anzeigen können. Dadurch werden die Pipeline und die Image-Bereitstellung validiert.

  4. (Optional) Wenn Sie die Bereitstellung in der AWS Management Console überprüfen möchten, gehen Sie wie folgt vor:

    1. Öffnen Sie die ECS Amazon-Konsole unter https://console.aws.amazon.com/ecs/.

    2. Wählen Sie die zu verwendende Region in der Navigationsleiste aus.

    3. Klicken Sie im Navigationsbereich auf Cluster.

    4. Wählen Sie auf der Cluster-Seite den EcsAnywhereClusterCluster aus.

    5. Wählen Sie Aufgabendefinitionen.

    6. Vergewissern Sie sich, dass der Container läuft.

DevOps Ingenieur
AufgabeBeschreibungErforderliche 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.

$cdk destroy EcsAnywherePipelineStack $cdk destroy EcsAnywhereInfraStack
DevOps Ingenieur

Bereinigen

AufgabeBeschreibungErforderliche 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.

$cdk destroy EcsAnywherePipelineStack $cdk destroy EcsAnywhereInfraStack
DevOps Ingenieur

Fehlerbehebung

ProblemLösung

Fehler bezüglich fehlender Pakete bei der Installation von Paketabhängigkeiten.

Geben Sie einen der folgenden Befehle ein, um fehlende Pakete zu beheben.

$npm ci

or

$npm install -g @aws-cdk/<package_name>

Wenn Sie den aws ssm create-activation Befehl auf der VM ausführen, erhalten Sie die folgende Fehlermeldung.

An error occurred (ValidationException) when calling the CreateActivation operation: Nonexistent role or missing ssm service principal in trust policy: arn:aws:iam::000000000000:role/EcsAnywhereInstanceRole

Der EcsAnywhereInfraStack Stack ist nicht vollständig bereitgestellt, und die IAM Rolle, die für die Ausführung dieses Befehls erforderlich ist, wurde noch nicht erstellt. Überprüfen Sie den Stack-Status in der CloudFormation Konsole. Versuchen Sie den Befehl erneut, nachdem sich der Status auf CREATE_COMPLETE geändert hat.

Ein ECS Amazon-Gesundheitscheck wird zurückgegebenUNHEALTHY, und der folgende Fehler wird im Abschnitt Services des Clusters in der ECS Amazon-Konsole angezeigt.

service EcsAnywhereService was unable to place a task because no container instance met all of its requirements. Reason: No Container Instances were found in your cluster.

Starten Sie den ECS Amazon-Agenten auf Ihrer Vagrant-VM neu, indem Sie die folgenden Befehle eingeben.

$vagrant ssh $sudo systemctl restart ecs $sudo systemctl status ecs

Zugehörige Ressourcen

DatenschutzNutzungsbedingungen für die WebsiteCookie-Einstellungen
© 2025, Amazon Web Services, Inc. oder Tochtergesellschaften. Alle Rechte vorbehalten.