Blau/Grün-Bereitstellung mit CodeDeploy - Amazon Elastic Container Service

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.

Blau/Grün-Bereitstellung mit CodeDeploy

Der Blau/Grün-Bereitstellungstyp verwendet das Blau/Grün-Bereitstellungsmodell, das von gesteuert wird CodeDeploy. Mit diesem Bereitstellungstyp können Sie eine neue Bereitstellung eines Service überprüfen, bevor Sie den Produktionsverkehr an ihn senden. Weitere Informationen finden Sie unter Was ist CodeDeploy? im AWS CodeDeploy -Benutzerhandbuch.

Es gibt drei Möglichkeiten, wie sich der Datenverkehr während einer Blau/Grün-Bereitstellung verschieben kann:

  • Canary – Der Datenverkehr wird in zwei Schritten verschoben. Sie können aus vordefinierten Canary-Optionen auswählen, die den Prozentsatz des Datenverkehrs, der im ersten Inkrementschritt zu Ihrem aktualisierten Aufgabensatz verschoben wird, sowie das Zeitintervall (in Minuten) angeben, das verstreichen soll, bevor der restliche Datenverkehr im zweiten Inkrementschritt verschoben wird.

  • Linear – Der Datenverkehr wird in gleichen Schritten mit einer gleichen Anzahl von Minuten zwischen jedem Schritt verschoben. Sie können aus vordefinierten linearen Optionen auswählen, die den Prozentsatz des Datenverkehrs, der in den einzelnen Inkrementschritten verschoben wird, sowie das Zeitintervall (in Minuten) zwischen den einzelnen Inkrementschritten angeben.

  • All-at-once – Der gesamte Datenverkehr wird gleichzeitig vom ursprünglichen Aufgabensatz zum aktualisierten Aufgabensatz verschoben.

Im Folgenden sind die Komponenten von aufgeführt CodeDeploy , die Amazon ECS verwendet, wenn ein Service den Blau/Grün-Bereitstellungstyp verwendet:

CodeDeploy Anwendung

Eine Sammlung von - CodeDeploy Ressourcen. Sie besteht aus einer oder mehreren Bereitstellungsgruppen.

CodeDeploy Bereitstellungsgruppe

Die Bereitstellungseinstellungen. Diese bestehen aus:

  • Amazon-ECS-Cluster und -Service

  • Load Balancer Zielgruppen- und Listener-Informationen

  • Rollback-Strategie für die Bereitstellung

  • Einstellungen zur Verkehrsumlenkung

  • Beendigungseinstellungen der ursprünglichen Revision

  • Bereitstellungskonfiguration

  • CloudWatch -Alarmkonfiguration, die so eingerichtet werden kann, dass Bereitstellungen gestoppt werden

  • SNS- oder CloudWatch Ereigniseinstellungen für Benachrichtigungen

Weitere Informationen finden Sie unter Arbeiten mit Bereitstellungsgruppen im AWS CodeDeploy -Benutzerhandbuch.

CodeDeploy -Bereitstellungskonfiguration

Gibt an, wie den Produktionsdatenverkehr während einer Bereitstellung an Ihren Ersatzaufgabensatz CodeDeploy weiterleitet. Die folgenden vordefinierten linearen und Canary-Bereitstellungskonfigurationen sind verfügbar. Sie können auch benutzerdefinierte lineare und Canary-Bereitstellungen erstellen. Weitere Informationen finden Sie unter Arbeiten mit Bereitstellungskonfigurationen im AWS CodeDeploy -Benutzerhandbuch.

  • CodeDeployDefault.ECS:AllAtOnce Verschiebt den gesamten Datenverkehr auf einmal auf den aktualisierten Amazon-ECS-Container

  • CodeDeployDefault.ECSLinear10PercentEvery1Minutes: Verschiebt jede Minute 10 Prozent des Datenverkehrs, bis der gesamte Datenverkehr verschoben wird.

  • CodeDeployDefault.ECSLinear10PercentEvery3Minutes: Verschiebt alle 3 Minuten 10 Prozent des Datenverkehrs, bis der gesamte Datenverkehr verschoben wird.

  • CodeDeployDefault.ECSCanary10Percent5Minutes: Verschiebt 10 Prozent des Datenverkehrs im ersten Schritt. Die restlichen 90 Prozent werden fünf Minuten später bereitgestellt.

  • CodeDeployDefault.ECSCanary10Percent15Minutes: Verschiebt 10 Prozent des Datenverkehrs im ersten Schritt. Die restlichen 90 Prozent werden 15 Minuten später bereitgestellt.

Revision

Eine Revision ist die CodeDeploy Anwendungsspezifikationsdatei (AppSpec Datei). In der AppSpec Datei geben Sie den vollständigen ARN der Aufgabendefinition sowie den Container und Port Ihres Ersatzaufgabensatzes an, an den der Datenverkehr weitergeleitet werden soll, wenn eine neue Bereitstellung erstellt wird. Der Containername muss einer der Containernamen sein, auf die in Ihrer Aufgabendefinition verwiesen wird. Wenn die Netzwerkkonfiguration oder Plattformversion in der Servicedefinition aktualisiert wurde, müssen Sie diese Details auch in der AppSpec Datei angeben. Sie können auch die Lambda-Funktionen angeben, die während des Bereitstellungs-Lebenszyklus ausgeführt werden sollen. Mit den Lambda-Funktionen können Sie während der Bereitstellung Tests durchführen und Metriken zurückgeben. Weitere Informationen finden Sie unter AppSpec Dateireferenz im AWS CodeDeploy -Benutzerhandbuch.

Überlegungen zur Blau/Grün-Bereitstellung

Beachten Sie Folgendes, wenn Sie den Blau/Grün-Bereitstellungstyp verwenden:

  • Wenn ein Amazon-ECS-Service mit dem Blau/Grün-Bereitstellungstyp erstmals erstellt wird, wird ein Amazon-ECS-Aufgabensatz erstellt.

  • Sie müssen den Service für die Verwendung von entweder einem Application Load Balancer oder Network Load Balancer konfigurieren. Nachfolgend sind die Anforderungen an den Load Balancer aufgeführt:

    • Sie müssen dem Load Balancer, der zur Weiterleitung des Produktionsverkehrs verwendet wird, einen Produktions-Listener hinzufügen.

    • Dem Load Balancer, der zur Weiterleitung des Testverkehrs verwendet wird, kann ein optionaler Test-Listener hinzugefügt werden. Wenn Sie einen Test-Listener angeben, CodeDeploy leitet Ihren Testdatenverkehr während einer Bereitstellung an den Ersatzaufgabensatz weiter.

    • Sowohl der Produktions- als auch der Test-Listener müssen demselben Load Balancer angehören.

    • Sie müssen für den Load Balancer eine Zielgruppe definieren. Die Zielgruppe leitet den Datenverkehr über den Produktions-Listener an die ursprüngliche Aufgabe weiter, die in einem Service festgelegt wurde.

    • Bei Verwendung eines Network Load Balancer wird nur die CodeDeployDefault.ECSAllAtOnce-Bereitstellungskonfiguration unterstützt.

  • Bei Services, die für die Verwendung des Auto Scaling des Services und der blau/grüne Bereitstellungstyp konfiguriert sind, wird das Auto Scaling während einer Bereitstellung nicht blockiert, die Bereitstellung kann jedoch unter Umständen fehlschlagen. Im Folgenden wird dieses Verhalten ausführlich beschrieben.

    • Wenn ein Service skaliert wird und eine Bereitstellung gestartet CodeDeploy wird, wird der grüne Aufgabensatz erstellt und wartet bis zu einer Stunde, bis der grüne Aufgabensatz den stabilen Zustand erreicht, und verschiebt keinen Datenverkehr, bis dies der Fall ist.

    • Wenn sich ein Service gerade in einer blau/grünen Bereitstellung befindet und ein Skalierungsereignis auftritt, wird der Datenverkehr für 5 Minuten weiter verschoben. Wenn der Service den stabilen Status nicht innerhalb von 5 Minuten erreicht, CodeDeploy stoppt die Bereitstellung und markiert sie als fehlgeschlagen.

    • Wenn sich ein Service gerade in einer blau/grünen Bereitstellung befindet und ein Skalierungsereignis auftritt, wird die gewünschte Aufgabenzahl möglicherweise auf einen unerwarteten Wert festgelegt. Dies wird durch das Auto Scaling verursacht, die die Anzahl der laufenden Aufgaben als aktuelle Kapazität berücksichtigt, was der doppelten Anzahl von Aufgaben entspricht, die in der Berechnung der gewünschten Aufgabenzahl verwendet werden.

  • Aufgaben, die den Starttyp Fargate oder die Controller-Typen CODE_DEPLOY verwenden, unterstützen die DAEMON-Scheduling-Strategie nicht.

  • Wenn Sie zum ersten Mal eine CodeDeploy Anwendung und Bereitstellungsgruppe erstellen, müssen Sie Folgendes angeben:

    • Sie müssen zwei Zielgruppen für den Load Balancer definieren. Eine Zielgruppe ist die ursprüngliche Zielgruppe, die für den Load Balancer beim Anlegen des Amazon-ECS-Service definiert wurde. Die einzige Anforderung der zweiten Zielgruppe besteht darin, dass sie nicht mit einem anderen Load Balancer als dem, den der Service verwendet, verknüpft werden darf.

  • Wenn Sie eine CodeDeploy Bereitstellung für einen Amazon-ECS-Service erstellen, CodeDeploy erstellt einen Ersatz-Aufgabensatz (oder grünen Aufgabensatz) in der Bereitstellung. Wenn Sie dem Load Balancer einen Test-Listener hinzugefügt haben, CodeDeploy leitet Ihren Testdatenverkehr an den Ersatz-Aufgabensatz weiter. Dies ist der Zeitpunkt, an dem Sie Validierungstests durchführen können. CodeDeploy leitet den Produktionsdatenverkehr dann vom ursprünglichen Aufgabensatz zum Ersatz-Aufgabensatz um. Dabei gelten die Einstellungen für die Datenverkehrsumleitung der Bereitstellungsgruppe.

Erforderliche IAM-Berechtigungen für die Blau/Grün-Bereitstellung

Blau/Grün-Bereitstellungen von Amazon ECS werden durch eine Kombination der Amazon-ECS- und - CodeDeploy APIs ermöglicht. Benutzer müssen über die entsprechenden Berechtigungen für diese Services verfügen, bevor sie Amazon-ECS-Blau/Grün-Bereitstellungen in der AWS Management Console oder mit der AWS CLI oder SDKs verwenden können.

Zusätzlich zu den IAM-Standardberechtigungen für das Erstellen und Aktualisieren von Services erfordert Amazon ECS folgende Berechtigungen. Diese Berechtigungen wurden der AmazonECS_FullAccess-IAM-Richtlinie hinzugefügt. Weitere Informationen finden Sie unter AmazonECS _FullAccess.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codedeploy:CreateApplication", "codedeploy:CreateDeployment", "codedeploy:CreateDeploymentGroup", "codedeploy:GetApplication", "codedeploy:GetDeployment", "codedeploy:GetDeploymentGroup", "codedeploy:ListApplications", "codedeploy:ListDeploymentGroups", "codedeploy:ListDeployments", "codedeploy:StopDeployment", "codedeploy:GetDeploymentTarget", "codedeploy:ListDeploymentTargets", "codedeploy:GetDeploymentConfig", "codedeploy:GetApplicationRevision", "codedeploy:RegisterApplicationRevision", "codedeploy:BatchGetApplicationRevisions", "codedeploy:BatchGetDeploymentGroups", "codedeploy:BatchGetDeployments", "codedeploy:BatchGetApplications", "codedeploy:ListApplicationRevisions", "codedeploy:ListDeploymentConfigs", "codedeploy:ContinueDeployment", "sns:ListTopics", "cloudwatch:DescribeAlarms", "lambda:ListFunctions" ], "Resource": ["*"] } ] }
Anmerkung

Zusätzlich zu den standardmäßigen Amazon-ECS-Berechtigungen, die zum Ausführen von Aufgaben und Services erforderlich sind, benötigen Benutzer auch iam:PassRole-Berechtigungen, um IAM-Rollen für Aufgaben zu verwenden.

CodeDeploy benötigt Berechtigungen zum Aufrufen von Amazon-ECS-APIs, Ändern Ihres Elastic Load Balancing, Aufrufen von Lambda-Funktionen und Beschreiben von CloudWatch Alarmen sowie Berechtigungen zum Ändern der gewünschten Anzahl Ihres Services in Ihrem Namen. Bevor Sie einen Amazon-ECS-Service erstellen, der den Blau/Grün-Bereitstellungstyp verwendet, müssen Sie eine IAM-Rolle erstellen (ecsCodeDeployRole). Weitere Informationen finden Sie unter Amazon-ECS- CodeDeploy IAM-Rolle.

Die Beispiel für die Service-Erstellung- und Beispiel für die Service-Aktualisierung-IAM-Richtlinienbeispiele zeigen die Berechtigungen, die für Benutzer erforderlich sind, um Amazon-ECS-Blau/Grün-Bereitstellungen auf der AWS Management Console zu verwenden.