Direkt zum Inhalt

Wie führe ich Blau/Grün-Bereitstellungen für Services durch, die in Amazon ECS gehostet werden?

Lesedauer: 5 Minute
0

Ich möchte eine Blau/Grün-Bereitstellung für Services durchführen, die in Amazon Elastic Container Service (Amazon ECS) gehostet werden.

Kurzbeschreibung

Bevor du die Schritte zur Durchführung einer Blau/Grün-Bereitstellung ausführst, stelle sicher, dass du über Folgendes verfügst:

Lösung

IAM-Servicerolle erstellen

Bevor du den Blau/Grün-Typ für AWS CodeDeploy mit Amazon ECS bereitstellen kannst, muss der CodeDeploy-Service über Berechtigungen verfügen, um deinen ECS-Service in deinem Namen zu aktualisieren. Führe die folgenden Schritte aus, um diese Berechtigungen zu gewähren:

  1. Öffne die AWS Identity and Access Management (IAM)-Konsole.
  2. Wähle im Navigationsbereich Rollen aus.
  3. Wähle Rolle erstellen aus.
  4. Wähle im Abschnitt Typ der vertrauenswürdigen Entität auswählen die Option AWS-Service und dann CodeDeploy aus.
  5. Wähle im Abschnitt Anwendungsfall auswählen die Option CodeDeploy – ECS und dann Weiter aus.
    Hinweis: Behalte die Standardrichtlinie AWSCodeDeployRoleForECS bei. Diese Richtlinie enthält die Berechtigungen, die CodeDeploy benötigt, um korrekt mit Amazon ECS und anderen Services zu interagieren.
  6. Weiter auswählen
  7. Für Rollenname ecsCodeDeployRole eingeben
  8. (Optional) Tags hinzufügen
  9. Wähle Rolle erstellen aus.

Application Load Balancer erstellen

Führe die folgenden Schritte aus, um den Application Load Balancer zu erstellen:

  1. Öffne die Amazon-EC2-Konsole.
  2. Wähle im Navigationsbereich im Abschnitt Load Balancing die Option Load Balancer aus.
  3. Wähle Load Balancer erstellen.
  4. Wähle im Abschnitt Load Balancer-Typ auswählen für Application Load Balancer die Option Erstellen aus.
  5. Gib für Name einen Namen für den Load Balancer ein.
  6. Wähle im Abschnitt Netzwerkzuordnung die VPC aus, in der dein Amazon ECS-Cluster erstellt wurde. Wähle dann zwei beliebige Subnetze mit Zugriff auf das Internet aus.
  7. Wähle im Abschnitt Sicherheitsgruppen den Hyperlink „Neue Sicherheitsgruppe erstellen“ aus.
  8. Gib für Sicherheitsgruppenname Sample Security-group ein.
  9. Wähle Regel hinzufügen aus.
  10. Gib für Portbereich 8080 ein. Gib für Quelle 0.0.0.0/0 ein.
  11. Wähle Sicherheitsgruppe erstellen aus.
  12. Aktualisiere die Sicherheitsgruppen in der Load Balancer-Seitenansicht und wähle dann die neu erstellte Sicherheitsgruppe aus.
  13. Wähle im Abschnitt Listener und Routing den Hyperlink „Zielgruppe erstellen“ aus.
  14. Wähle als Zieltyp IP-Adressen aus.
  15. Gib für Zielgruppe einen Namen für deine Zielgruppe ein.
  16. Wähle Weiter aus, registriere dann deine Zielgruppe und lege deine IP-Adresse fest.
  17. Wähle Zielgruppe erstellen aus.

Aufgabendefinition erstellen

Führe die folgenden Schritte aus:

  1. Öffne die Amazon-ECS-Konsole.
  2. Wähle im Navigationsbereich Aufgabendefinitionen aus.
  3. Wähle Neue Aufgabendefinition erstellen.
  4. Wähle Fargate und dann Nächster Schritt.
  5. Konfiguriere die Aufgabendefinition und wähle dann Erstellen aus.

Die folgende Beispiel-Aufgabendefinition verwendet den AWS Fargate-Starttyp und ein NGINX-Image von Docker Hub:

Hinweis: Ersetze in diesem und im folgenden Beispiel den Wert account_ID durch deine eigene Kontonummer.

{
  "executionRoleArn": "arn:aws:iam::account_ID:role/ecsTaskExecutionRole",
  "containerDefinitions": [
    {
      "name": "sample-website",
      "image": "nginx:latest",
      "essential": true,
      "portMappings": [
        {
          "hostPort": 80,
          "protocol": "tcp",
          "containerPort": 80
        }
      ]
    }
  ],
  "requiresCompatibilities": [
    "FARGATE"
  ],
  "networkMode": "awsvpc",
  "cpu": "256",
  "memory": "512",
  "family": "sample-website"
}

Amazon-ECS-Service erstellen

Führe die folgenden Schritte aus:

  1. Öffne die Amazon-ECS-Konsole.
  2. Wähle im Navigationsbereich im Abschnitt Amazon ECS die Option Cluster und dann deinen Cluster aus.
  3. Wähle auf der Registerkarte Services die Option Erstellen aus, um einen Service zu erstellen.
  4. Wähle im Abschnitt Umgebung die Option Starttyp und dann FARGATE aus.
  5. Wähle für Aufgabendefinition die Aufgabendefinition aus, die du im vorherigen Abschnitt erstellt hast.
  6. Gib für Service-Name einen Namen für deinen Service ein. Zum Beispiel: Sample-Website.
  7. Gib für Anzahl der Aufgaben die Anzahl der Aufgaben ein, die dein Service ausführen soll.
  8. Wähle im Abschnitt Bereitstellungsoptionen die Option Blau/Grün-Bereitstellung (unterstützt von AWS CodeDeploy) aus.
  9. Wähle für Servicerolle für CodeDeploy die Servicerolle ecsCodeDeployRole aus, die du zuvor erstellt hast.
  10. Wähle im Abschnitt Netzwerk deine Cluster-VPC und Subnetze sowie die Sicherheitsgruppe aus, die du zuvor erstellt hast.
  11. Wähle im Abschnitt Load Balancing für den Load Balancer-Typ die Option Application Load Balancer aus.
  12. Wähle für Load Balancer-Name den Load Balancer aus, den du zuvor erstellt hast.
  13. Wähle im Abschnitt Listener für Produktions-Listener-Port die Option 80:HTTP aus.
  14. Aktiviere das Kontrollkästchen Test-Listener hinzufügen.
  15. Wähle für Test-Listener-Port die Option Neu erstellen aus und gib dann 8080 als Listener-Port ein.
  16. Wähle im Abschnitt Zielgruppen für Name der Zielgruppe 1 die Zielgruppe aus, die du beim Erstellen des Load Balancers erstellt hast.
  17. Erstelle für Name der Zielgruppe 2 in der Amazon ECS-Konsole eine neue Zielgruppe mit dem Namen sample-website-tg-2.
  18. Wähle Erstellen.

Jetzt kannst du den neuen Service sehen, den du mit einer laufenden Aufgabe erstellt hast.

Überprüfen, ob die Amazon ECS-Blau/Grün-Bereitstellung ordnungsgemäß funktioniert

Nachdem du den Blau/Grün-Amazon ECS-Service erstellt hast, erstelle mit den Änderungen eine neue Revision der Aufgabendefinition und aktualisiere dann deinen Amazon ECS-Service. Durch diese Aktion wird eine Bereitstellung in der CodeDeploy-Konsole erstellt.

Führe die folgenden Schritte aus, um zu überprüfen, ob deine Bereitstellung funktioniert:

  1. Öffne die Amazon-ECS-Konsole.

  2. Wähle im Navigationsbereich Aufgabendefinitionen aus.

  3. Wähle deine Aufgabendefinition aus, wähle Neue Revision erstellen aus und wähle dann Erstellen aus.
    Hinweis: Im folgenden Beispiel wird die Eigenschaft image aktualisiert, sodass httpd:2.4 verwendet wird.

    {
      "executionRoleArn": "arn:aws:iam::account_ID:role/ecsTaskExecutionRole",
      "containerDefinitions": [
        {
          "name": "sample-website",
          "image": "httpd:2.4",
          "essential": true,
          "portMappings": [
            {
              "hostPort": 80,
              "protocol": "tcp",
              "containerPort": 80
            }
          ]
        }
      ],
      "requiresCompatibilities": [
        "FARGATE"
      ],
      "networkMode": "awsvpc",
      "cpu": "256",
      "memory": "512",
      "family": "sample-website"
    }
  4. Wähle im Navigationsbereich Cluster aus und wähle dann den Cluster aus, in dem du deinen Amazon ECS-Service bereitgestellt hast.

  5. Wähle auf der Registerkarte Services deinen Amazon ECS-Service aus und wähle dann Aktualisieren aus.

  6. Wähle im Abschnitt Bereitstellungskonfiguration für Aufgabendefinition die neueste Revision aus, die du in Schritt 3 erstellt hast.

  7. Wähle Aktualisieren aus.

  8. Wähle auf der Registerkarte Bereitstellungen in der Spalte Bereitstellungs-ID die Bereitstellungs-ID aus, um deine CodeDeploy-Bereitstellung anzuzeigen.

AWS OFFICIALAktualisiert vor 2 Jahren