Wie man

AWS ECS aktualisiert automatisch ECS-Services mit CodePipeline

AWS ECS aktualisiert automatisch ECS-Services mit CodePipeline

Dieser Artikel ist Teil 4 eines vierteiligen Leitfadens zum Ausführen von Docker-Containern auf AWS ECS. ECS steht für Elastic Container Service. Es ist ein verwalteter Containerdienst, der Docker-Container ausführt. AWS bietet zwar auch Container-Management mit Kubernetes (EKS) an, hat aber auch seine proprietäre Lösung (ECS).

Die anderen Teile des Leitfadens, die bereits in separaten Artikeln behandelt wurden, sind:

Teil 4 dieses Handbuchs behandelt „Erstellen einer Pipeline zum Aktualisieren der im ECS-Cluster ausgeführten Aufgaben/Container“. Das Container-Update erfolgt jedes Mal, wenn wir eine Änderung an das CodeCommit-Repository übertragen push.

Für diese Demonstration erstellen wir eine Pipeline, um den Dienst und die Aufgabe zu aktualisieren, die auf dem ECS-Cluster mit CodePipeline ausgeführt werden. Wir gehen davon aus, dass sich der Quellcode des Projekts in einem CodeCommit-Repository befindet. CodePipeline kann jedoch Code aus verschiedenen Versionskontrolltools auswählen, darunter:

Voraussetzungen/Voraussetzungen

Erstellen Sie ein Build-Projekt

Mit CodeBuild erstellen wir ein Build-Projekt, das ein Docker-Image aus einer Docker-Datei erstellt, die in unser Code-Commit-Repository verschoben wird. Es wird dann das Docker-Image in die ECR-Registrierung verschieben.

Klicken Sie in der CodeBuild-Konsole auf Build-Projekt erstellen.

Projekt erstellen, erstellen

ECS CodeBuild-Projektkonfigurationen:

Geben Sie als Nächstes bei Projektkonfigurationen Ihren Projektnamen und Ihre Beschreibung ein. Außerdem können Sie Tags für Ihr Build-Projekt hinzufügen.

Projektkonfigurationen

Wählen Sie als Quelle CodeCommit. Angenommen, Sie haben Ihren Projektcode in ein Codecommit-Repository gepusht.

CodeBuild-Projektquelle

Wählen Sie als Nächstes unter Umgebungskonfigurationen die Umgebung aus, in der Ihr Build-Projekt ausgeführt werden soll. Da unser Image ein Linux-Image ist, haben wir uns für eine Linux-Umgebung entschieden.

CodeBuild-Umgebungskonfigurationen

Wählen Sie für die Rolle neue Servicerolle aus. Hinweis: Stellen Sie sicher, dass der Rolle die AmazonEC2ContainerRegistryFullAccess-Richtlinie zugeordnet ist. Andernfalls funktioniert CodeBuild nicht.

CodeBuild-Dienstrolle konfigurieren

ECS CodeBuild BuildSpec.yml:

Klicken Sie unter BuildSpec auf Zum Editor wechseln und fügen Sie den folgenden Code in Ihre Buildspec ein.yml. Stellen Sie sicher, dass Sie dies für die Docker-Tag- und Docker-Push-Befehle durch Ihre ECR-Registrierungs-Push-Befehle ersetzen. Außerdem sollte der Name des Docker-Build-Images durch Ihren jeweiligen Docker-Image-Namen ersetzt werden.

Version: 0.2 Phasen: installieren: Laufzeitversionen: Docker: 19 Befehle: - curl "https://awscli.Amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" - awscliv2 entpacken.Postleitzahl - ./aws/install pre_build: Befehle: - echo logging to ecr - $(aws ecr get-login --no-include-email --region eu-central-1) build: Befehle: - echo starting build on 'date' - CD ./ - docker build -t hallo-world . - Docker-Tag hallo-world: neueste 429758582529.dkr.ecr.eu-zentral-1.Amazonaws.com/hello-world:latest post_build: Befehle: - echo build am 'date' abgeschlossen - echo push to repo - docker push 429758582529.dkr.ecr.eu-zentral-1.Amazonaws.com/hello-world:latest - echo Definitionsdatei schreiben… - printf '["name":"Hello_World","imageUri":"%s"]' 429758582529.dkr.ecr.eu-zentral-1.Amazonaws.com/hello-world:latest > HelloWorldtaskdefinition.json-Artefakte: Dateien: HelloWorldtaskdefinition.json

Da wir ein Docker-Image in eine ECR-Registrierung verschieben, sind keine Artefakte erforderlich. Wählen Sie daher unter Artefakte keine aus. Für Protokolle werden wir sie an eine CloudWatch-Protokollgruppe übertragen, die Sie zuvor erstellt haben.

Build-Projektartefakte und -protokolle konfigurieren Log

Klicken Sie abschließend auf Build-Projekt erstellen.

Erstellen Sie eine Pipeline für die Bereitstellung im ECS-Cluster

Nach dem Erstellen eines CodeBuild-Projekts erstellen wir als Nächstes eine Pipeline, um das Docker-Image bereitzustellen, um den ECS-Clusterdienst und die Aufgaben zu aktualisieren.

Klicken Sie in der CodePipeline-Konsole auf Pipeline erstellen.

CodePipeline Pipeline erstellen

Geben Sie dann unter Pipeline-Einstellungen Ihren Pipeline-Namen ein. Wählen Sie für Servicerolle Neue Servicerolle. Wählen Sie unter Erweiterte Einstellungen den Standardspeicherort für den Artefaktspeicher und den von AWS verwalteten Standardschlüssel für den Verschlüsselungsschlüssel aus. Dann klicke weiter.

Pipeline-Einstellungen

ECS CodePipeline Add Source Stage:

Wählen Sie auf der Stufe Quelle hinzufügen CodeCommit als Ihre Quelle aus. Wählen Sie dann Ihr Repository und den Repository-Zweig für Ihren Code aus. Wählen Sie unter Erkennungsoptionen ändern die Option CloudWatch-Ereignisse aus. Auf diese Weise überwacht CloudWatch aktiv Änderungen am Repository und startet die Pipeline automatisch, wenn es eine Änderung erkennt. Weiter klicken.

CodePipeline Add Source Stage

ECS CodePipeline Add-Build-Phase:

Wählen Sie für Add a Build Stage Ihren Build-Anbieter als CodeBuild . aus. Wählen Sie dann eine Region aus, in der Sie das Build-Projekt erstellt haben, und wählen Sie den Namen des Build-Projekts aus. Verwenden Sie das Build-Projekt, das wir im Abschnitt „Build-Projekt erstellen“ dieses Artikels erstellt haben. Wählen Sie als Build-Typ einen einzelnen Build aus und klicken Sie dann auf Weiter.

CodePipeline Build-Phase hinzufügen

ECS CodePipeline Add Deployment-Phase:

Als Nächstes müssen wir unserer Pipeline eine Bereitstellungsphase hinzufügen. Wählen Sie in der Phase Add Deploy als unseren Bereitstellungsanbieter Amazon ECS. Wählen Sie für die Region die Region aus, in der Sie Ihren ECS-Cluster erstellt haben. Wählen Sie dann unter Clustername den Namen Ihres ECS-Clusters aus. Wählen Sie den Dienstnamen des ECS-Dienstes aus, den Sie auf dem ECS-Cluster aktualisieren möchten.

Als wir unser Build-Projekt auf unserem erstellten Bauspezifikation.yml wir hatten eine Bilddefinitionsdatei erstellt. Für diesen Fall war es HelloWorldAufgabendefinition.json. Fügen Sie den Namen dieser Datei im Abschnitt mit der Image-Definitionsdatei der Bereitstellungsphase ein. Geben Sie schließlich für das Bereitstellungszeitlimit die Zeit in Minuten ein, die wir auf die Bereitstellung warten sollen, bevor das Zeitlimit überschritten wird.

CodePipeline Add Deploy Stage

Überprüfen Sie im Abschnitt "Überprüfung" Ihre Pipeline-Einstellungen und wenn alle Konfigurationen in Ordnung sind, klicken Sie auf "Pipeline erstellen".

Pipeline-Ausführung

Sie verfügen jetzt über eine Pipeline, die einen ECS-Dienst und -Aufgaben jedes Mal aktualisiert, wenn eine Änderung an das CodeCommit-Repository übertragen wird. Standardmäßig ist das Update ein fortlaufendes Update. ich.e. ECS stellt einen neuen Task bereit, der neben dem älteren Task ausgeführt wird. Wenn die neue Task einen stationären Zustand erreicht, wird auf die neue Task umgeschaltet und die alte Task beendet.

Wichtige Links

Andere AWS-Leitfäden:

Glückliches Bauen!!!

So schneiden Sie Videos mit der Windows 10 Fotos-App zu
Mit der neuen Windows 10-Foto-App können Sie Videos schneiden. Nun, dies ist eine coole Funktion für eine einfache Windows 10-App. Früher habe ich Vid...
So ändern Sie die Farbe des Startmenüs und der Taskleiste in Windows 10
90% der Benutzer da draußen möchten von Zeit zu Zeit die Farbe, den Hintergrund und die Designs ihres Betriebssystems ändern. Es verleiht Ihrem PC jed...
Gehen Sie direkt zu bestimmten Einstellungen über Ausführen in Windows 10
Windows 10 hat eine coole Sache gemacht, indem es die Einstellungssteuerung erstellt hat. Dies ist ein separater Tab im Steuerungsfeld  zum Optimieren...