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.
Bereitstellungen migrieren CodeDeploy blue/green deployments to Amazon ECS blue/green
CodeDeploy blue/green and Amazon ECS blue/greenBereitstellungen bieten ähnliche Funktionen, unterscheiden sich jedoch darin, wie Sie sie konfigurieren und verwalten.
CodeDeploy Übersicht über die Bereitstellung in Blau/Grün
Wenn Sie einen Amazon ECS-Service mit erstellen CodeDeploy, gehen Sie wie folgt vor:
-
Erstellen Sie einen Load Balancer mit einem Produktions-Listener und (optional) einem Test-Listener. Jeder Listener ist mit einer einzigen (Standard-) Regel konfiguriert, die den gesamten Datenverkehr an eine einzige Zielgruppe (die primäre Zielgruppe) weiterleitet.
-
Erstellen Sie einen Amazon-ECS-Service, der für die Verwendung des Listeners und der Zielgruppe konfiguriert ist und dessen
deploymentController-Typ aufCODE_DEPLOYgestellt ist. Die Erstellung eines Services führt zur Erstellung eines (blauen) Aufgabensatzes, der bei der angegebenen Zielgruppe registriert ist. -
Erstellen Sie eine CodeDeploy Bereitstellungsgruppe (als Teil einer CodeDeploy Anwendung) und konfigurieren Sie sie mit Details zum Amazon ECS-Cluster, dem Servicenamen, den Load Balancer-Listenern, zwei Zielgruppen (die primäre Zielgruppe, die in der Produktions-Listener-Regel verwendet wird, und einer sekundären Zielgruppe, die für Ersatzaufgaben verwendet wird), einer Servicerolle (zur Erteilung von CodeDeploy Berechtigungen zur Bearbeitung von Amazon ECS- und Elastic Load Balancing Balancing-Ressourcen) und verschiedenen Parametern, die das Bereitstellungsverhalten steuern.
Mit CodeDeploy werden neue Versionen eines Dienstes unter Angabe des CodeDeploy AnwendungsnamensCreateDeployment(), des Namens der Bereitstellungsgruppe und einer AppSpec Datei bereitgestellt, die Details zur neuen Version und optionale Lifecycle-Hooks enthält. Bei der CodeDeploy Bereitstellung wird ein Ersatzaufgabensatz (grün) erstellt und dessen Aufgaben bei der sekundären Zielgruppe registriert. Sobald diese fehlerfrei wird, steht sie für Tests (optional) und für die Produktion zur Verfügung. In beiden Fällen wird das Routing dadurch erreicht, dass die jeweilige Listener-Regel so geändert wird, dass sie auf die sekundäre Zielgruppe verweist, die dem grünen Aufgabensatz zugeordnet ist. Ein Rollback wird erreicht, indem die Produktions-Listener-Regel wieder auf die primäre Zielgruppe zurückgesetzt wird.
Überblick über die blue/green Bereitstellung von Amazon ECS
Bei Amazon blue/green ECS-Bereitstellungen ist die Bereitstellungskonfiguration Teil des Amazon ECS-Service selbst:
-
Sie müssen den Produktions-Listener des Load Balancer mit einer Regel vorkonfigurieren, die zwei Zielgruppen mit den Gewichtungen 1 und 0 umfasst.
-
Sie müssen die folgenden Ressourcen angeben oder die Service-Ressourcen aktualisieren:
-
Der ARN dieser Listener-Regel
-
Die zwei Zielgruppen
-
Eine IAM-Rolle, um Amazon ECS die Erlaubnis zu erteilen, Elastic Load Balancing aufzurufen APIs
-
Eine optionale IAM-Rolle zur Ausführung von Lambda-Funktionen
-
Setzen Sie den
deploymentController-Typ aufECSunddeploymentConfiguration.strategyaufBLUE_GREEN. Dadurch entsteht eine (blaue) Servicebereitstellung, deren Aufgaben bei der primären Zielgruppe registriert sind.
-
Wenn Amazon ECS blau/grün ist, wird eine neue Service-Revision erstellt, indem Amazon ECS UpdateService() aufgerufen und die Details der neuen Revision übergeben werden. Bei der Servicebereitstellung werden neue Aufgaben der (grünen) Service-Revision erstellt und diese bei der sekundären Zielgruppe registriert. Amazon ECS führt Routing- und Rollback-Vorgänge aus, indem es die Gewichtungen der Listener-Regel ändert.
Wichtige Unterschiede bei der Implementierung
Beide Ansätze führen zwar zur Erstellung eines ersten Aufgabensatzes, die zugrunde liegende Implementierung unterscheidet sich jedoch:
-
CodeDeploy verwendet einen Tasksatz, während Amazon ECS eine Service-Revision verwendet. Amazon-ECS-Aufgabensätze sind ein älteres Konstrukt, das durch Revisionen und Bereitstellungen von Amazon-ECS-Services ersetzt wurde. Letztere bieten einen besseren Einblick in den Bereitstellungsprozess sowie in die Servicebereitstellung und den Verlauf der Service-Revisionen.
-
Mit CodeDeploy werden Lifecycle-Hooks als Teil der AppSpec Datei angegeben, an die geliefert wird
CreateDeployment(). Das bedeutet, dass die Hooks von einer Bereitstellung zur nächsten geändert werden können. Bei Amazon-ECS-Blau/Grün-Bereitstellungen werden die Hooks als Teil der Service-Konfiguration angegeben, und für alle Aktualisierungen wäre einUpdateService()-Aufruf erforderlich. -
CodeDeploy Sowohl Amazon ECS als auch Amazon ECS blue/green verwenden Lambda für die Hook-Implementierung, aber die erwarteten Eingaben und Ausgaben unterscheiden sich.
Bei muss die Funktion aufgerufen werden CodeDeploy,
PutLifecycleEventHookExecutionStatus()um den Hook-Status zurückzugeben, der entwederSUCCEEDEDoderFAILEDsein kann. Bei Amazon ECS wird die Lambda-Antwort verwendet, um den Hook-Status anzuzeigen. -
CodeDeploy ruft jeden Hook als einmaligen Aufruf auf und erwartet, dass innerhalb einer Stunde der endgültige Ausführungsstatus zurückgegeben wird. Amazon-ECS-Hooks sind insofern flexibler, als sie einen
IN_PROGRESS-Indikator zurückgeben können, der signalisiert, dass der Hook wiederholt erneut aufgerufen werden muss, bis er zuSUCCEEDEDoderFAILEDführt. Weitere Informationen finden Sie unter Lebenszyklus-Hooks für Amazon-ECS-Servicebereitstellungen.
Migrationsansätze
Es gibt drei Hauptansätze für die Migration von Bereitstellungen. CodeDeploy blue/green to Amazon ECS blue/green Jeder Ansatz weist unterschiedliche Merkmale in Bezug auf Komplexität, Risiko, Rollback-Fähigkeit und potenzielle Ausfallzeiten auf.
Wiederverwendung derselben Elastic Load Balancing Balancing-Ressourcen, die für verwendet wurden CodeDeploy
Sie aktualisieren den vorhandenen Amazon ECS-Service, sodass er den Amazon ECS Deployment Controller mit blue/green Deployment Strategy anstelle des CodeDeploy Deployment Controllers verwendet. Berücksichtigen Sie bei diesem Ansatz Folgendes:
-
Das Migrationsverfahren ist einfacher, da Sie den vorhandenen Servicebereitstellungs-Controller von Amazon ECS und die Bereitstellungsstrategie aktualisieren.
-
Bei korrekter Konfiguration und Migration treten keine Ausfallzeiten auf.
-
Ein Rollback erfordert, dass Sie die Service-Revision rückgängig machen.
-
Das Risiko ist hoch, da es keine parallele Blau/Grün-Konfiguration gibt.
Sie verwenden denselben Load Balancer-Listener und dieselben Zielgruppen wie für. CodeDeploy Wenn Sie es verwenden, finden Sie weitere Informationen CloudFormation unter. Eine Vorlage migrieren CloudFormation CodeDeploy blue/green deployment template to an Amazon ECS blue/green CloudFormation
-
Ändern Sie die Standardregel der production/test Zuhörer so, dass sie die alternative Zielgruppe einbezieht, und legen Sie die Gewichtung der primären Zielgruppe auf 1 und der alternativen Zielgruppe auf 0 fest.
Denn CodeDeploy die Listener des an den Service angeschlossenen Load Balancers sind mit einer einzigen (Standard-) Regel konfiguriert, die den gesamten Datenverkehr an eine einzige Zielgruppe weiterleitet. Für Amazon-ECS-Blau/Grün-Bereitstellungen müssen die Load-Balancer-Listener mit einer Regel vorkonfiguriert sein, die die beiden Zielgruppen mit Gewichtungen umfasst. Die primäre Zielgruppe muss mit 1 gewichtet werden und die alternative Zielgruppe muss mit 0 gewichtet werden.
-
Aktualisieren Sie den vorhandenen Amazon-ECS-Service, indem Sie die
UpdateService-API aufrufen und den ParameterdeploymentControlleraufECSund den ParameterdeploymentStrategyaufBLUE_GREENsetzen. Geben Sie ARNs die Zielgruppe, die alternative Zielgruppe, den Produktions-Listener und einen optionalen Test-Listener an. -
Stellen Sie sicher, dass der Service wie erwartet funktioniert.
-
Löschen Sie das CodeDeploy Setup für diesen Amazon ECS-Service, da Sie jetzt Amazon ECS blau/grün verwenden.
Neuer Service mit vorhandenem Load Balancer
Bei diesem Ansatz wird die blue/green Strategie für die Migration verwendet.
Berücksichtigen Sie bei diesem Ansatz Folgendes:
-
Es gibt nur minimale Störungen. Störungen treten nur während der Port-Auslagerung für Elastic Load Balancing auf.
-
Ein Rollback erfordert, dass Sie die Port-Auslagerung für Elastic Load Balancing rückgängig machen.
-
Das Risiko ist gering, da es parallele Konfigurationen gibt. Daher können Sie vor der Datenverkehrsverlagerung testen.
-
Lassen Sie die Zuhörer, die Zielgruppen und den Amazon ECS-Service für das CodeDeploy Setup intakt, sodass Sie bei Bedarf problemlos zu diesem Setup zurückkehren können.
-
Erstellen Sie neue Zielgruppen und neue Listener (mit anderen Ports als die ursprünglichen Listener) unter dem vorhandenen Load Balancer. Erstellen Sie dann einen neuen Amazon ECS-Service, der dem bestehenden Amazon ECS-Service entspricht, außer dass Sie ihn
ECSals Deployment Controller,BLUE_GREENals Bereitstellungsstrategie verwenden, und übergeben Sie die Regeln ARNs für die neuen Zielgruppen und die neuen Zuhörer. -
Überprüfen Sie die neue Einrichtung, indem Sie HTTP-Datenverkehr manuell an den Service senden. Wenn alles gut geht, tauschen Sie die Ports der ursprünglichen Listener und der neuen Listener aus, um den Datenverkehr an die neue Einrichtung weiterzuleiten.
-
Überprüfen Sie das neue Setup, und wenn alles weiterhin wie erwartet funktioniert, löschen Sie das CodeDeploy Setup.
Neuer Service mit neuem Load Balancer
Wie der vorherige Ansatz verwendet auch dieser Ansatz die blue/green Strategie für die Migration. Der Hauptunterschied besteht darin, dass der Wechsel vom CodeDeploy Setup zum Amazon blue/green ECS-Setup auf einer Reverse-Proxy-Ebene über dem Load Balancer erfolgt. Beispielimplementierungen für die Reverse-Proxy-Schicht sind Route 53 und. CloudFront
Dieser Ansatz eignet sich für Kunden, die bereits über diese Reverse-Proxyschicht verfügen und wenn die gesamte Kommunikation mit dem Service über sie erfolgt (z. B. keine direkte Kommunikation auf Load-Balancer-Ebene).
Berücksichtigen Sie bei diesem Ansatz Folgendes:
-
Dies erfordert eine Reverse-Proxy-Schicht.
-
Das Migrationsverfahren ist komplizierter, da Sie den vorhandenen Servicebereitstellungs-Controller von Amazon ECS und die Bereitstellungsstrategie aktualisieren müssen.
-
Es gibt nur minimale Störungen. Störungen treten nur während der Port-Auslagerung für Elastic Load Balancing auf.
-
Ein Rollback erfordert, dass Sie die Änderungen an der Proxy-Konfiguration rückgängig machen.
-
Das Risiko ist gering, da es parallele Konfigurationen gibt. Daher können Sie vor der Datenverkehrsverlagerung testen.
-
Ändern Sie das bestehende CodeDeploy Setup nicht intakt (Load Balancer, Listener, Zielgruppen, Amazon ECS-Service und CodeDeploy Bereitstellungsgruppe).
-
Erstellen Sie einen neuen Load Balancer, Zielgruppen und Listener, die für Amazon blue/green ECS-Bereitstellungen konfiguriert sind.
Konfigurieren Sie die entsprechenden Ressourcen.
-
Application Load Balancer – Weitere Informationen finden Sie unter Application Load Balancer Balancer-Ressourcen für blaue/grüne, lineare und kanarische Bereitstellungen.
-
Network Load Balancer – Weitere Informationen finden Sie unter Network Load Balancer Balancer-Ressourcen für Amazon ECS-Bereitstellungen blue/green .
-
-
Erstellen Sie einen neuen Service mit
ECSals Bereitstellungs-Controller undBLUE_GREENals Bereitstellungsstrategie, die auf die neuen Load-Balancer-Ressourcen verweist. -
Überprüfen Sie die neue Einrichtung, indem Sie sie mit dem neuen Load Balancer testen.
-
Aktualisieren Sie die Reverse-Proxy-Konfiguration, um den Datenverkehr an den neuen Load Balancer weiterzuleiten.
-
Beachten Sie die neue Service-Revision. Wenn alles weiterhin wie erwartet funktioniert, löschen Sie das Setup. CodeDeploy
Nächste Schritte
Nach der Migration zu Amazon blue/green ECS-Bereitstellungen:
-
Aktualisieren Sie Ihre Bereitstellungsskripte und CI/CD Pipelines, um die Amazon
UpdateServiceECS-API anstelle der CodeDeployCreateDeploymentAPI zu verwenden. -
Aktualisieren Sie Ihre Überwachungs- und Warnmeldungen, um Amazon ECS-Servicebereitstellungen anstelle von CodeDeploy Bereitstellungen zu verfolgen.
-
Erwägen Sie die Implementierung automatisierter Tests Ihres neuen Bereitstellungsprozesses, um sicherzustellen, dass er wie erwartet funktioniert.