Salta al contenuto

Come posso eseguire implementazioni blu/verdi per servizi ospitati in Amazon ECS?

6 minuti di lettura
0

Desidero eseguire un'implementazione blu/verde per i servizi ospitati in Amazon Elastic Container Service (Amazon ECS).

Breve descrizione

Prima di effettuare i passaggi per eseguire un'implementazione blu/verde, assicurati di disporre di quanto segue:

Risoluzione

Crea un ruolo di servizio IAM

Prima di poter implementare il tipo blu/verde per AWS CodeDeploy con Amazon ECS, il servizio CodeDeploy deve avere le autorizzazioni per aggiornare il servizio ECS per tuo conto. Per concedere queste autorizzazioni, completa i seguenti passaggi:

  1. Apri la console AWS Identity and Access Management (AWS IAM).
  2. Nel pannello di navigazione, scegli Ruoli.
  3. Scegli Crea ruolo.
  4. Nella sezione Select type of trusted entity (Seleziona il tipo di entità attendibile), seleziona Servizio AWS, quindi scegli CodeDeploy.
  5. Nella sezione Seleziona il tuo caso d'uso, seleziona CodeDeploy - ECS, quindi scegli Avanti.
    Nota: mantieni la policy AWSCodeDeployRoleForECS predefinita. Questa policy include le autorizzazioni richieste da CodeDeploy per interagire correttamente con Amazon ECS e altri servizi.
  6. Scegli Avanti.
  7. In Ruolo del ruolo, inserisci ecsCodeDeployRole.
  8. (Facoltativo) Aggiungi tag
  9. Scegli Crea ruolo.

Crea l'Application Load Balancer

Per creare un Application Load Balancer, completa i seguenti passaggi:

  1. Apri la console Amazon EC2.
  2. Nel pannello di navigazione, all’interno della sezione Bilanciamento del carico, scegli Bilanciatori del carico.
  3. Scegli Crea bilanciatore del carico.
  4. Nella sezione Seleziona un tipo di bilanciatore del carico, per Application Load Balancer scegli Crea.
  5. In Nome, inserisci un nome per il bilanciatore del carico.
  6. Nella sezione Mappatura di rete, seleziona il VPC in cui è stato creato il cluster Amazon ECS. Quindi seleziona due sottoreti qualsiasi con accesso a Internet.
  7. Nella sezione Gruppi di sicurezza, seleziona il collegamento ipertestuale "Crea un nuovo gruppo di sicurezza".
  8. In Nome del gruppo di sicurezza, inserisci Sample Security-group.
  9. Scegli Aggiungi regola.
  10. In Intervallo porte, inserisci 8080. In Origine, inserisci 0.0.0.0/0.
  11. Scegli Crea gruppo di sicurezza.
  12. Aggiorna i gruppi di sicurezza nella visualizzazione della pagina Bilanciatore del carico, quindi seleziona il gruppo di sicurezza appena creato.
  13. Nella sezione Listener e routing, seleziona il collegamento ipertestuale "Crea gruppo di destinazionet".
  14. Per Tipo di destinazione, scegli Indirizzi IP.
  15. In Gruppo di destinazione, inserisci un nome per il gruppo di destinazione.
  16. Scegli Avanti, quindi registra il gruppo di destinazione e imposta l'IP.
  17. Scegli Crea gruppo di destinazione.

Crea una definizione di attività

Completa i seguenti passaggi:

  1. Apri la console Amazon ECS.
  2. Nel pannello di navigazione, scegli Definizioni di attività.
  3. Scegli Crea nuova definizione di attività.
  4. Seleziona Fargate, quindi scegli Fase successiva.
  5. Configura la definizione dell'attività, quindi scegli Crea.

Il seguente esempio di definizione dell'attività utilizza il tipo di avvio AWS Fargate e un'immagine NGINX da Docker Hub:

Nota: sostituisci il valore account_ID con il tuo numero di account in questo esempio e nel seguente.

{
  "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"
}

Crea un servizio Amazon ECS

Completa i seguenti passaggi:

  1. Apri la console Amazon ECS.
  2. Nella sezione Amazon ECS del pannello di navigazione, seleziona Cluster, quindi scegli il cluster.
  3. Nella scheda Servizi, scegli Crea per creare un servizio.
  4. Nella sezione Ambiente, seleziona Tipo di avvio, quindi scegli FARGATE.
  5. Per Definizione dell'attività, seleziona la definizione dell'attività creata nella sezione precedente.
  6. In Nome del servizio, inserisci un nome per il servizio. Ad esempio: Sample-Website.
  7. In Numero di attività, inserisci il numero di attività che desideri che il servizio esegua.
  8. Nella sezione Opzioni di implementazione, seleziona Blue/green deployment (powered by AWS CodeDeploy) (Implementazione blu/verde (con AWS CodeDeploy).
  9. Per Ruolo di servizio per CodeDeploy, scegli il ruolo ecsCodeDeployRole che hai creato in precedenza.
  10. Nella sezione Rete, scegli il cluster VPC e le sottoreti, nonché il gruppo di sicurezza che hai creato in precedenza.
  11. Nella sezione Bilanciamento del carico, per Bilanciatore del carico, scegli Application Load Balancer.
  12. Per Nome del bilanciatore del carico, seleziona il bilanciatore del carico creato in precedenza.
  13. Nella sezione Listener, per Porta listener di produzione, seleziona 80:HTTP.
  14. Seleziona la casella di controllo Aggiungi un listener di test.
  15. Per Porta listener di test, scegli Crea nuovo, quindi inserisci 8080 come porta listener.
  16. Nella sezione Gruppi di destinazione, per Target group 1 name (Nome gruppo di destinazione 1), scegli il gruppo di destinazione che hai creato quando hai creato il bilanciatore del carico.
  17. Per Target group 2 name (Nome gruppo di destinazione 2), crea un nuovo gruppo di destinazione nella console Amazon ECS con il nome sample-website-tg-2.
  18. Scegli Crea.

Ora puoi vedere il nuovo servizio che hai creato con un'attività in esecuzione.

Verifica che l'implementazione blu/verde di Amazon ECS funzioni correttamente

Dopo aver creato il servizio Amazon ECS blu/verde, crea una nuova revisione della definizione dell'attività con le modifiche, quindi aggiorna il servizio Amazon ECS. Questa azione crea un'implementazione nella console CodeDeploy.

Completa i passaggi seguenti per verificare che l'implementazione funzioni:

  1. Apri la console Amazon ECS.

  2. Nel pannello di navigazione, seleziona Definizioni di attività.

  3. Scegli la definizione dell'attività, seleziona Crea nuova revisione, quindi scegli Crea.
    Nota: nell'esempio seguente, la proprietà image viene aggiornata per utilizzare httpd:2.4.

    {
      "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. Nel pannello di navigazione, seleziona Cluster, quindi scegli il cluster in cui hai implementato il servizio Amazon ECS.

  5. Nella scheda Servizi, seleziona il servizio Amazon ECS, quindi scegli Aggiorna.

  6. Nella sezione Configurazione dell'implementazione, per Definizione dell'attività, scegli l'ultima revisione creata nel passaggio 3.

  7. Scegli Aggiorna.

  8. Nella colonna ID implementazione della scheda Implementazioni, scegli l'ID dell'implementazione per visualizzare l'implementazione CodeDeploy.