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.
Erstellen einer Amazon ECS-Canary-Bereitstellung
Durch die Verwendung von Amazon ECS Canary-Bereitstellungen können Sie einen kleinen Teil des Datenverkehrs auf Ihre neue Service-Revision (die „Canary“) verlagern. Überprüfen Sie die Bereitstellung und verlagern Sie dann den verbleibenden Datenverkehr nach einem bestimmten Intervall auf einmal. Dieser Ansatz ermöglicht es Ihnen, neue Funktionen vor der vollständigen Bereitstellung mit minimalem Risiko zu testen.
Voraussetzungen
Führen Sie die folgenden Schritte durch, bevor Sie eine Bereitstellung auf Canary starten.
-
Konfigurieren Sie die entsprechenden Berechtigungen.
-
Hinweise zu ELB-Berechtigungen finden Sie unterAmazon-ECS-IAM-Infrastrukturrolle für Load Balancer.
-
Weitere Informationen zu Lambda-Berechtigungen finden Sie unter Erforderliche Berechtigungen für Lambda-Funktionen in Amazon ECS-Bereitstellungen blue/green .
-
-
Für Bereitstellungen von Amazon ECS Canary muss Ihr Service eine der folgenden Funktionen verwenden: 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.
-
-
Erstellen Sie eine Regel, um den Datenverkehr an Ihre neue Service-Revision weiterzuleiten. Weitere Informationen finden Sie unter Listener-Regeln in den ELB Application Load Balancers.
-
Erstellen Sie eine Zielgruppe für Ihre grüne Service-Revision. Wenn Sie den
awsvpc-Netzwerkmodus für Ihre Aufgaben verwenden, muss der Zieltypipsein. Informationen zu Zielgruppen finden Sie unter Zielgruppen in den ELB Application Load Balancers.
Verfahren
Sie können die Konsole oder die verwenden AWS CLI , um einen Amazon ECS Canary-Bereitstellungsservice zu erstellen.
- Console
-
Öffnen Sie die Konsole auf https://console.aws.amazon.com/ecs/Version
2. -
Bestimmen Sie die Ressource, von der aus Sie den Service starten.
So starten Sie einen Service von Schritte Cluster
-
Wählen Sie auf der Seite Cluster den Cluster aus, den Sie im Service erstellen möchten.
Die Cluster-Detailseite wird angezeigt.
-
Wählen Sie auf der Registerkarte Services die Option Create (Erstellen).
Aufgabendefinition -
Wählen Sie auf der Seite Aufgabendefinitionen die Aufgabendefinition aus.
-
Wählen Sie im Menü Bereitstellen die Option Service erstellen aus.
Die Seite Service erstellen wird angezeigt.
-
-
Führen Sie unter Service-Details die folgenden Schritte aus:
-
Wählen Sie für Aufgabendefinitionsfamilie die zu verwendende Aufgabendefinition aus. Geben Sie dann unter Revision der Aufgabendefinition die zu verwendende Revision ein.
-
Wählen Sie für Service name (Servicename) einen Namen für Ihren Service aus.
-
-
Um den Service in einem vorhandenen Cluster auszuführen, wählen Sie unter Vorhandener Cluster den Cluster aus. Um den Service in einem neuen Cluster auszuführen, wählen Sie Cluster erstellen aus
-
Wählen Sie aus, wie Ihre Aufgaben auf Ihre Cluster-Infrastruktur verteilt werden. Wählen Sie unter Datenverarbeitungskonfiguration Ihre Option aus.
Rechenoptionen Schritte Kapazitätsanbieter-Strategie
-
Wählen Sie unter Rechenoptionen die Option Kapazitätsanbieter-Strategie aus.
-
Wählen Sie eine Strategie aus:
-
Um die standardmäßige Kapazitätsanbieter-Strategie des Clusters zu verwenden, wählen Sie Use cluster default (Cluster-Standard verwenden).
-
Wenn Ihr Cluster nicht über eine Standard-Kapazitätsanbieter-Strategie verfügt oder Sie eine benutzerdefinierte Strategie verwenden möchten, wählen Sie Benutzerdefiniert verwenden, Kapazitätsanbieter-Strategie hinzufügen und definieren dann Ihre benutzerdefinierte Kapazitätsanbieter-Strategie, indem Sie eine Basis, einen Kapazitätsanbieter und ein Gewicht angeben.
-
Anmerkung
Damit Kapazitätsanbieter in einer Strategie verwendet werden kann, muss er dem Cluster zugeordnet sein.
Starttyp -
Wählen Sie im Bereich Rechenoptionen die Option Starttyp aus.
-
Wählen Sie unter Launch type (Starttyp) einen Starttyp aus.
-
(Optional) Wenn Fargate angegeben ist, geben Sie für Plattformversion die zu verwendende Plattformversion an. Ist keine Plattformversion angegeben, wird die Plattformversion
LATESTverwendet.
-
-
Führen Sie im Abschnitt Bereitstellungskonfiguration Folgendes aus:
-
Wählen Sie für Service-Typ die Option Replikat aus.
-
Geben Sie für Desired tasks (Gewünschte Aufgaben) die Anzahl der Aufgaben an, die im Service gestartet und aufrecht erhalten werden sollen.
-
Damit Amazon ECS die Verteilung der Aufgaben auf die Availability Zones überwacht und sie bei einem Ungleichgewicht neu verteilt, wählen Sie unter Service-Neuausgleich der Availability Zone die Option Service-Neuausgleich der Availability Zone aus.
-
Geben Sie für Health Check Grance Period den Zeitraum (in Sekunden) ein, für den der Service Scheduler fehlerhafte ELB-, VPC Lattice- und Container-Integritätsprüfungen ignoriert, nachdem eine Aufgabe zum ersten Mal gestartet wurde. Wenn Sie keine Übergangsfrist für die Zustandsprüfung angeben, wird der Standardwert 0 verwendet.
-
-
Konfigurieren Sie unter Bereitstellungskonfiguration die Bereitstellungseinstellungen von Canary:
-
Wählen Sie als Bereitstellungsstrategie Canary aus.
-
Geben Sie für Canary-Prozentsatz den Prozentsatz des Traffics ein, der in der ersten Phase auf die Green Service-Version umgestellt werden soll (z. B. 10% für den anfänglichen Canary-Verkehr).
-
Geben Sie für Canary Bake Time die Wartezeit in Minuten ein, bis der verbleibende Traffic auf die Green-Service-Version umgestellt wird.
-
Geben Sie unter Backzeit die Anzahl der Minuten ein, für die sowohl die blaue als auch die grüne Version nach der letzten Verkehrsverlagerung gleichzeitig ausgeführt werden, bevor die blaue Version beendet wird.
-
(Optional) Führen Sie Lambda-Funktionen in bestimmten Phasen der Bereitstellung aus. Wählen Sie unter Bereitstellungs-Lebenszyklus-Hooks die Phasen aus, in denen die Lebenszyklus-Hooks ausgeführt werden sollen.
So fügen Sie einen Lebenszyklus-Hook hinzu:
-
Wählen Sie Hinzufügen aus.
-
Geben Sie für Lambda-Funktion den Funktionsnamen oder ARN ein.
-
Wählen Sie für Rolle die IAM-Rolle aus, die berechtigt ist, die Lambda-Funktion aufzurufen.
-
Wählen Sie für Lebenszyklusphasen die Phasen aus, in denen die Lambda-Funktion ausgeführt werden soll.
-
-
-
Um zu konfigurieren, wie Amazon ECS Bereitstellungsfehler erkennt und behandelt, erweitern Sie Deployment failure detection (Erkennung von Bereitstellungsfehlern) und wählen Sie dann Ihre Optionen.
-
Um eine Bereitstellung anzuhalten, wenn die Aufgaben nicht gestartet werden können, wählen Sie Use the Amazon ECS deployment circuit breaker (Verwenden des Amazon-ECS-Bereitstellungsschutzschalters).
Wenn Sie möchten, dass die Software die Bereitstellung automatisch auf den letzten abgeschlossenen Bereitstellungsstatus zurücksetzt, wenn der Bereitstellungs-Schutzschalter die Bereitstellung auf einen fehlgeschlagenen Status setzt, wählen Sie Rollback bei Fehler aus.
-
Um eine Bereitstellung auf der Grundlage von Anwendungsmetriken zu beenden, wählen Sie CloudWatch Alarm (en) verwenden aus. Wählen Sie dann unter CloudWatch Alarmname die Alarme aus. Um einen neuen Alarm zu erstellen, gehen Sie zur CloudWatch Konsole.
Damit die Software die Bereitstellung automatisch auf den Status der letzten abgeschlossenen Bereitstellung zurücksetzt, wenn ein CloudWatch Alarm die Bereitstellung in einen fehlgeschlagenen Zustand versetzt, wählen Sie Rollback bei Fehlern.
-
-
(Optional) Um Ihren Service mit Service Connect zu verbinden, erweitern Sie Service Connect und geben Sie dann Folgendes an:
-
Wählen Sie Service Connect einschalten aus.
-
Geben Sie unter Service Connect configuration (Service-Connect-Konfiguration) den Client-Modus an.
-
Wenn Ihr Service eine Netzwerk-Client-Anwendung ausführt, die nur eine Verbindung zu anderen Services im Namespace herstellen muss, wählen Sie Nur Client-Seite aus.
-
Wenn Ihr Service eine Netzwerk- oder Webservice-Anwendung ausführt und Endpunkte für diesen Service bereitstellen muss und eine Verbindung zu anderen Services im Namespace herstellt, wählen Sie Client and server (Client und Server) aus.
-
-
Um einen Namespace zu verwenden, der nicht der Standard-Cluster-Namespace ist, wählen Sie für Namespace den Service-Namespace aus. Dies kann ein Namespace sein, der separat in demselben AWS-Region in Ihrer AWS-Konto oder einem Namespace in derselben Region erstellt wurde und der mithilfe AWS Resource Access Manager von () mit Ihrem Konto geteilt wird.AWS RAMWeitere Informationen zur gemeinsamen Nutzung von AWS Cloud Map Namespaces finden Sie unter Kontenübergreifende gemeinsame Nutzung von AWS Cloud Map Namespaces im Entwicklerhandbuch.AWS Cloud Map
-
(Optional) Konfigurieren Sie Test-Traffic-Header-Regeln für Canary-Bereitstellungen. Geben Sie unter Test-Datenverkehrs-Routing Folgendes an:
-
Wählen Sie Header-Regeln für Test-Datenverkehr aktivieren aus, um während des Tests bestimmte Anfragen an die grüne Service-Revision weiterzuleiten.
-
Konfigurieren Sie für Regeln für den Header-Abgleich die Kriterien für das Routing von Test-Datenverkehr:
-
Header-Name: Geben Sie den Namen des HTTP-Headers ein, dem der Abgleich entsprechen soll (z. B.
X-Test-VersionoderUser-Agent). -
Übereinstimmungstyp: Wählen Sie die Kriterien für den Abgleich aus:
-
Exakte Übereinstimmung: Leitet Anfragen weiter, bei denen der Header-Wert genau dem angegebenen Wert entspricht
-
Header vorhanden: Leitet Anfragen weiter, die den angegebenen Header enthalten, unabhängig vom Wert
-
Musterübereinstimmung: Leitet Anfragen weiter, bei denen der Header-Wert einem bestimmten Muster entspricht
-
-
Header-Wert (wenn „Exakte Übereinstimmung“ oder „Musterübereinstimmung“ verwendet wird): Geben Sie den Wert oder das Muster ein, mit dem abgeglichen werden soll.
Sie können mehrere Header-Abgleichsregeln hinzufügen, um eine komplexe Routing-Logik zu erstellen. Anfragen, die einer der konfigurierten Regeln entsprechen, werden zum Testen an die grüne Service-Revision weitergeleitet.
-
-
Wählen Sie Header-Regel hinzufügen, um zusätzliche Bedingungen für den Header-Abgleich zu konfigurieren.
Anmerkung
Mithilfe von Header-Regeln für den Test-Datenverkehr können Sie neue Funktionen mit kontrolliertem Datenverkehr validieren, bevor Sie die vollständige Bereitstellung abschließen. Auf diese Weise können Sie die grüne Service-Revision mit spezifischen Anfragen (z. B. von internen Testtools oder Beta-Benutzern) testen und gleichzeitig den normalen Datenfluss zur blauen Service-Revision aufrechterhalten.
-
-
(Optional) Geben Sie eine Protokollkonfiguration an. Wählen Sie Protokollsammlung verwenden aus. Die Standardoption sendet Container-Logs an CloudWatch Logs. Die anderen Protokolltreiberoptionen werden mit konfiguriert AWS FireLens. Weitere Informationen finden Sie unter Amazon ECS-Protokolle an einen AWS Service senden oder AWS Partner.
Im Folgenden wird jedes Container-Protokollziel ausführlicher beschrieben.
-
Amazon CloudWatch — Konfigurieren Sie die Aufgabe, um Container-Logs an CloudWatch Logs zu senden. Es werden die standardmäßigen Protokolltreiberoptionen bereitgestellt, mit denen in Ihrem Namen eine CloudWatch Protokollgruppe erstellt wird. Um einen anderen Protokollgruppen-Namen anzugeben, ändern Sie die Werte der Treiberoption.
-
Amazon Data Firehose – Konfigurieren Sie die Aufgabe, dass Container-Protokolle an Firehose gesendet werden. Die Standardoptionen für den Protokolltreiber werden bereitgestellt, wodurch die Protokolle an einen Bereitstellungsdatenstrom von Firehose gesendet werden. Um einen anderen Namen für den Bereitstellungsdatenstrom anzugeben, ändern Sie die Werte der Treiberoption.
-
Amazon Kinesis Data Streams – Konfigurieren Sie die Aufgabe, dass Container-Protokolle an Kinesis Data Streams gesendet werden. Die Standardoptionen für den Protokolltreiber werden bereitgestellt, wodurch Protokolle an einen Datenstrom von Kinesis Data Streams gesendet werden. Um einen anderen Datenstrom-Namen anzugeben, ändern Sie die Werte der Treiberoption.
-
Amazon OpenSearch Service — Konfigurieren Sie die Aufgabe, um Container-Logs an eine OpenSearch Service-Domain zu senden. Die Optionen für den Protokolltreiber müssen bereitgestellt werden.
-
Amazon S3 – Konfigurieren Sie die Aufgabe, dass Container-Protokolle an einen Amazon-S3-Bucket gesendet werden. Die Standardoptionen für den Protokolltreiber werden bereitgestellt, Sie müssen jedoch einen gültigen Amazon-S3-Bucket-Namen angeben.
-
-
-
(Optional) Konfigurieren Sie den Lastenausgleich für die Bereitstellung auf Canary.
ELB-Typ Schritte Application Load Balancer
-
Wählen Sie für Load-Balancer-Typ die Option Application Load Balancer aus.
-
Wählen Sie Erstellen eines neuen Load Balancers, um einen neuen Application Load Balancer zu erstellen, oder Verwenden eines vorhandenen Load Balancers um einen vorhandenen Application Load Balancer auszuwählen.
-
Wählen Sie für Container den Container aus, der den Service hostet.
-
Geben Sie für Load balancer name (Name des Load Balancers) einen eindeutigen Namen ein.
-
Geben Sie für Listener (Zuhörer) einen Port und ein Protokoll für den Application Load Balancer an, an dem der Application Load Balancer auf Verbindungsanfragen lauschen soll. Standardmäßig wird der Load Balancer so konfiguriert, dass er Port 80 und HTTP verwendet.
-
Geben Sie für Produktionsregel die Bewertungsreihenfolge und das Pfadmuster für die Regel ein.
Diese Regel gilt für den Datenverkehr Ihrer Produktions-Service-Revision (blau).
-
Geben Sie für Testregel die Bewertungsreihenfolge und das Pfadmuster für die Regel ein.
Diese Regel gilt für den Datenverkehr Ihrer Test-Service-Revision (grün).
-
-
Konfigurieren Sie für Zielgruppe Folgendes:
-
Geben Sie für Target group name (Name der Zielgruppe) einen Namen und ein Protokoll für die Zielgruppe ein, an die der Application Load Balancer Anforderungen weiterleitet.
-
Wählen Sie für Protokoll das Protokoll für die Zielgruppe aus, an die der Application Load Balancer Anforderungen weiterleitet. Standardmäßig leitet die Zielgruppe Anforderungen an den ersten Container weiter, der in Ihrer Aufgabendefinition definiert ist.
-
Geben Sie für die Verzögerung bei der Abmeldung die Anzahl der Sekunden ein, auf die der Load Balancer den Zielstatus ändern soll.
UNUSEDStandardmäßig ist ein Zeitraum von 300 Sekunden festgelegt. -
Geben Sie für Health check path (Pfad für die Zustandsprüfung) einen Pfad an, der in Ihrem Container vorhanden ist, an den der Application Load Balancer regelmäßig Anforderungen senden soll, um den Verbindungszustand zwischen dem Application Load Balancer und dem Container zu überprüfen. Der Standard ist das Root-Verzeichnis (
/). -
Geben Sie unter Alternativer Gruppenname den Gruppennamen für die Zielgruppe für Ihre Testservice-Revision ein.
-
-
-
(Optional) Um Ihren Service und Ihre Aufgaben besser identifizieren zu können, erweitern Sie den Bereich Tags (Tags) und konfigurieren Sie dann Ihre Tags.
Damit Amazon ECS alle neu gestarteten Aufgaben automatisch mit Tags für den Clusternamen und den Aufgabendefinitions-Tags versieht, wählen Sie Amazon ECS Managed Tags einschalten und dann für Tags verbreiten von die Option Aufgabendefinitionen.
Damit Amazon ECS alle neu gestarteten Aufgaben automatisch mit Tags für den Clustername und die Service-Tags versieht, wählen Sie Amazon ECS Managed Tags einschalten und dann für Tags verbreiten von die Option Service.
Hinzufügen oder Entfernen eines Tag.
-
[Ein Tag hinzufügen] Wählen Sie Add tag (Tag hinzufügen) und führen Sie dann das Folgende aus:
-
Geben Sie bei Key (Schlüssel) den Schlüsselnamen ein.
-
Geben Sie bei Value (Wert) den Wert des Schlüssels ein.
-
-
[Tag entfernen] Wählen Sie neben dem Tag die Option Remove tag (Tag löschen) aus.
-
-
Wählen Sie Erstellen aus.
- AWS CLI
-
-
Erstellen Sie eine Datei mit dem Namen
canary-service-definition.jsonund dem folgenden Inhalt.Ersetzen Sie die
user-inputdurch Ihre Werte.{ "serviceName": "myCanaryService", "cluster": "arn:aws:ecs:us-west-2:123456789012:cluster/sample-fargate-cluster", "taskDefinition": "sample-fargate:1", "desiredCount": 5, "launchType": "FARGATE", "networkConfiguration": { "awsvpcConfiguration": { "subnets": [ "subnet-09ce6e74c116a2299", "subnet-00bb3bd7a73526788", "subnet-0048a611aaec65477" ], "securityGroups": [ "sg-09d45005497daa123" ], "assignPublicIp": "ENABLED" } }, "deploymentController": { "type": "ECS" }, "deploymentConfiguration": { "strategy": "CANARY", "maximumPercent": 200, "minimumHealthyPercent": 100, "canaryConfiguration" : { "canaryPercent" : 5.0, "canaryBakeTime" : 10 }, "bakeTimeInMinutes": 10, "alarms": { "alarmNames": [ "myAlarm" ], "rollback": true, "enable": true } }, "loadBalancers": [ { "targetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/blue-target-group/54402ff563af1197", "containerName": "fargate-app", "containerPort": 80, "advancedConfiguration": { "alternateTargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/green-target-group/cad10a56f5843199", "productionListenerRule": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-canary-demo/32e0e4f946c3c05b/9cfa8c482e204f7d/831dbaf72edb911", "roleArn": "arn:aws:iam::123456789012:role/LoadBalancerManagementforECS" } } ] } -
Führen Sie
create-service.aws ecs create-service --cli-input-json file://canary-service-definition.json
-
Nächste Schritte
Gehen Sie nach der Konfiguration Ihrer Canary-Bereitstellung wie folgt vor:
-
Aktualisieren Sie den Service, um die Bereitstellung zu starten. Weitere Informationen finden Sie unter Aktualisierung eines Amazon ECS-Service.
-
Überwachen Sie den Bereitstellungsprozess, um sicherzustellen, dass er dem Canary-Muster folgt:
-
Die grüne Service-Revision wurde erstellt und hochskaliert
-
Ein kleiner Teil des Traffics (Canary) wird auf die grüne Version umgestellt
-
Das System wartet auf das angegebene kanarische Intervall
-
Der restliche Verkehr wird auf einmal auf die grüne Version umgestellt
-
Nach Ablauf der Bake-Zeit wird die blaue Revision beendet
-