Implementazioni blu/verdi di CodeDeploy per Amazon ECS - Amazon Elastic Container Service

Implementazioni blu/verdi di CodeDeploy per Amazon ECS

Consigliamo di utilizzare l'implementazione blu/verde di Amazon ECS. Per ulteriori informazioni, consultare Creazione di un'implementazione blu/verde di Amazon ECS .

Il tipo di implementazione blu/verde usa il modello di implementazione blu/verde controllato da CodeDeploy. Utilizza questo tipo di implementazione per verificare una nuova implementazione di un servizio prima di inviarvi traffico di produzione. Per ulteriori informazioni, consultare What Is CodeDeploy nella Guida per l'utente di AWS CodeDeploy. Convalidare lo stato di un servizio Amazon ECS prima dell'implementazione

Durante un'implementazione blu/verde, il traffico può essere spostato in tre modi:

  • Canary: il traffico viene trasferito in due incrementi. Puoi scegliere tra opzioni canary predefinite che specificano la percentuale del traffico reinstradato al set di attività aggiornato nel primo incremento e l'intervallo, in minuti, prima che il traffico rimanente venga reinstradato nel secondo incremento.

  • Lineare: il traffico viene spostato in incrementi uguali con lo stesso intervallo di tempo, in minuti, tra ciascun incremento. Puoi scegliere tra opzioni lineari predefinite che specificano la percentuale del traffico reinstradato in ogni incremento e l'intervallo di tempo, in minuti, tra ciascun incremento.

  • Tutto contemporaneamente: tutto il traffico viene spostato contemporaneamente dal set di attività originale a quello aggiornato.

Di seguito sono elencati i componenti di CodeDeploy utilizzati da Amazon ECS quando un servizio usa il tipo di implementazione blu/verde:

Applicazione CodeDeploy

Una raccolta di risorse CodeDeploy. È costituita da uno o più gruppi di implementazione.

Gruppo di implementazione CodeDeploy

Le impostazioni di implementazione. Comprendono:

  • Cluster e servizio Amazon ECS

  • Informazioni listener e gruppo di destinazione del bilanciatore del carico

  • Strategia di rollback dell'implementazione

  • Impostazioni di reinstradamento del traffico

  • Impostazioni di terminazione della revisione originale

  • Configurazione dell'implementazione

  • Configurazione degli allarmi CloudWatch che possono essere configurati per arrestare le implementazioni

  • Impostazioni di SNS o CloudWatch Events per le notifiche

Per ulteriori informazioni, consultare Working with Deployment Groups nella Guida per l'utente di AWS CodeDeploy.

Configurazione dell'implementazione di CodeDeploy

Specifica in che modo CodeDeploy instrada il traffico verso il set di processi di sostituzione durante un'implementazione. Sono disponibili le seguenti configurazioni predefinite di implementazione lineare e canary. È inoltre possibile creare implementazioni lineari e canary personalizzate. Per ulteriori informazioni, consultare Working with Deployment Configurations nella Guida per l'utente di AWS CodeDeploy.

  • CodeDeployDefault.ECSAllAtOnce: trasferisce tutto il traffico al container Amazon ECS aggiornato in una volta sola

  • CodeDeployDefault.ECSLinear10PercentEvery1Minutes: sposta il 10% del traffico ogni minuto fino a quando non viene spostato tutto il traffico.

  • CodeDeployDefault.ECSLinear10PercentEvery3Minutes: sposta il 10% del traffico ogni 3 minuti fino a quando non viene spostato tutto il traffico.

  • CodeDeployDefault.ECSCanary10Percent5Minutes: sposta il 10% del traffico nel primo incremento. Il restante 90% viene reinstradato cinque minuti più tardi.

  • CodeDeployDefault.ECSCanary10Percent15Minutes: sposta il 10% del traffico nel primo incremento. Il restante 90% viene reinstradato 15 minuti più tardi.

Revisione

Una nuova revisione è il file delle specifiche dell'applicazione di CodeDeploy (file AppSpec). Nel file AppSpec, viene specificato l'ARN completo della definizione di attività, nonché il container e la porta del set di operazioni di sostituzione dove deve essere instradato il traffico quando viene creata una nuova implementazione. Il nome del container deve essere uno dei nomi di container cui si fa riferimento nella definizione delle attività. Se la configurazione della rete o la versione della piattaforma sono stati aggiornati nella definizione del servizio, è necessario specificare anche tali dettagli nel file AppSpec. Puoi inoltre specificare le funzioni Lambda da eseguire durante gli eventi del ciclo di vita dell'implementazione. Le funzioni Lambda consentono di eseguire i test e restituire i parametri durante l'implementazione. Per ulteriori informazioni, consultare AppSpec File Reference nella Guida per l'utente di AWS CodeDeploy.

Considerazioni

Quando si utilizza il tipo di implementazione blu/verde, tenere di quanto segue:

  • Quando crei per la prima volta un servizio Amazon ECS che utilizza il tipo di implementazione blu/verde, viene creato anche un set di processi Amazon ECS.

  • Il servizio deve essere configurato per utilizzare un sistema Application Load Balancer o un Network Load Balancer. Di seguito sono elencati i requisiti del load balancer:

    • È necessario aggiungere al load balancer un listener di produzione che viene utilizzato per instradare il traffico di produzione.

    • Al load balancer può essere aggiunto un test opzionale che viene utilizzato per instradare il traffico di test. Se viene specificato un listener di test, CodeDeploy instrada il traffico di test al set di processi di sostituzione durante un'implementazione.

    • I listener di produzione e di test devono appartenere entrambi allo stesso load balancer.

    • È necessario definire un gruppo di destinazione per il bilanciatore del carico. Il gruppo di destinazione instrada il traffico verso l'attività originale impostata in un servizio attraverso il listener di produzione.

    • Quando viene utilizzato un Network Load Balancer, è supportata solo la configurazione dell'implementazione CodeDeployDefault.ECSAllAtOnce.

  • Per i servizi configurati per utilizzare la scalabilità automatica del servizio e il tipo di implementazione blu/verde, la scalabilità automatica non viene bloccata durante un'implementazione, ma l'implementazione potrebbe non riuscire in alcune circostanze. Di seguito viene descritto questo comportamento in modo più dettagliato.

    • Se un servizio è in fase di dimensionamento e viene avviata un'implementazione, viene creato il set di processi verde e CodeDeploy attenderà al massimo un'ora affinché il set di processi verde raggiunga lo stato stazionario e non sposterà il traffico finché non lo farà.

    • Se un servizio è in fase di implementazione blu/verde e si verifica un evento di dimensionamento, il traffico continuerà a spostarsi per 5 minuti. Se il servizio non raggiunge lo stato stazionario entro 5 minuti, CodeDeploy interromperà l'implementazione e la contrassegnerà come non riuscita.

  • Le attività che utilizzano Fargate oppure i tipi di controller di implementazione CODE_DEPLOY non supportano la strategia di pianificazione DAEMON.

  • Quando viene creato per la prima volta un'applicazione CodeDeploy e un gruppo di implementazione, occorre specificare quanto segue:

    • È necessario definire due gruppi di destinazione per il bilanciatore del carico. Un gruppo di destinazione deve essere il gruppo di destinazione iniziale definito per il bilanciatore del carico quando il servizio Amazon ECS è stato creato. L'unico requisito del secondo gruppo di destinazione è che non può essere associato a un bilanciatore del carico diverso rispetto a quello utilizzato dal servizio.

  • Quando crei un'implementazione CodeDeploy per un servizio Amazon ECS, CodeDeploy crea un set di processi di sostituzione (o set di processi verdi) nell'implementazione. Se al bilanciatore del carico è stato aggiunto un listener di test, CodeDeploy instrada il traffico di test al set di processi di sostituzione. Questo è il momento in cui è possibile eseguire i test di convalida. Quindi CodeDeploy reindirizza il traffico di produzione dal set di processi originale al set di processi di sostituzione in base alle impostazioni di reinstradamento del traffico per il gruppo di implementazione.

Autorizzazioni IAM richieste

Le implementazioni blu/verdi sono rese possibili da una combinazione di API di Amazon ECS e CodeDeploy. Prima di poter utilizzare le implementazioni blu/verdi di Amazon ECS nella AWS Management Console, con la AWS CLI o li SDK, gli utenti devono disporre delle autorizzazioni appropriate per questi servizi.

Oltre alle autorizzazioni IAM standard per la creazione e l'aggiornamento dei servizi, Amazon ECS richiede le seguenti autorizzazioni. Queste autorizzazioni sono state aggiunte alla policy IAM AmazonECS_FullAccess. Per ulteriori informazioni, consultare AmazonECS_FullAccess.

  • 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

Nota

Oltre alle autorizzazioni Amazon ECS standard necessarie per eseguire processi e servizi, gli utenti hanno bisogno anche delle autorizzazioni iam:PassRole per utilizzare i ruoli IAM per le attività.

CodeDeploy richiede le autorizzazioni per chiamare le API Amazon ECS, modificare l'Elastic Load Balancing, invocare funzioni Lambda e descrivere allarmi CloudWatch, nonché le autorizzazioni per modificare il numero desiderato del servizio per tuo conto. Prima di creare un servizio Amazon ECS che usa il tipo di implementazione blu/verde, occorre creare un ruolo IAM (ecsCodeDeployRole). Per ulteriori informazioni, consultare Ruolo IAM CodeDeploy di Amazon ECS.