CodeDeploy implementazioni blu/verdi per Amazon ECS - Amazon Elastic Container Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

CodeDeploy implementazioni blu/verdi per Amazon ECS

Ti consigliamo di utilizzare la blue/green distribuzione Amazon ECS. Per ulteriori informazioni, consulta Creazione di una distribuzione Amazon ECS blue/green .

Il tipo di distribuzione blu/verde utilizza il modello di blue/green distribuzione 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, consulta Cosa c'è CodeDeploy nella guida per l'AWS CodeDeploy utente. Convalida lo stato di un servizio Amazon ECS prima della distribuzione

Esistono tre modi in cui il traffico può variare durante una distribuzione: blue/green

  • 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.

  • R ll-at-once — Tutto il traffico viene spostato contemporaneamente dal set di attività originale al set di attività aggiornato.

Di seguito sono riportati CodeDeploy i componenti utilizzati da Amazon ECS quando un servizio utilizza il tipo di blue/green distribuzione:

CodeDeploy applicazione

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

CodeDeploy gruppo di distribuzione

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

  • CloudWatch configurazione degli allarmi che può essere impostata per interrompere le distribuzioni

  • Impostazioni SNS o CloudWatch Events per le notifiche

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

CodeDeploy configurazione della distribuzione

Speciifica in che modo CodeDeploy indirizza il traffico di produzione verso l'attività sostitutiva impostata durante una distribuzione. 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: sposta tutto il traffico verso il contenitore Amazon ECS aggiornato contemporaneamente

  • CodeDeployDefault. ECSLinear10 PercentEvery 1Minuti: Sposta il 10% del traffico ogni minuto fino a quando tutto il traffico non viene spostato.

  • CodeDeployDefault. ECSLinear10 PercentEvery 3 minuti: sposta il 10 percento del traffico ogni 3 minuti fino a quando tutto il traffico non viene spostato.

  • 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 distribuito 15 minuti dopo.

Revisione

Una revisione è il file delle specifiche CodeDeploy dell'applicazione (AppSpec file). Nel AppSpec file, si specifica l'ARN completo della definizione dell'attività e il contenitore e la porta del set di attività sostitutivo in cui il traffico deve essere instradato quando viene creata una nuova distribuzione. Il nome del container deve essere uno dei nomi di container cui si fa riferimento nella definizione delle attività. Se la configurazione di rete o la versione della piattaforma è stata aggiornata nella definizione del servizio, è necessario specificare anche tali dettagli nel AppSpec file. 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, consulta AppSpec File Reference nella Guida AWS CodeDeploy per l'utente.

Considerazioni

Quando utilizzi il tipo di blue/green distribuzione, considera quanto segue:

  • Quando viene inizialmente creato un servizio Amazon ECS che utilizza il tipo di blue/green distribuzione, viene creato un set di attività 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 specifichi un listener di test, CodeDeploy indirizza il traffico di test verso l'attività sostitutiva impostata durante una distribuzione.

    • 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 è scalabile e viene avviata una distribuzione, viene creato il set di attività verde e CodeDeploy aspetterà fino a un'ora prima che il set di attività verde raggiunga lo stato stazionario e non sposterà il traffico finché non lo farà.

    • Se un servizio è in fase di blue/green implementazione e si verifica un evento di scalabilità, il traffico continuerà a variare per 5 minuti. Se il servizio non raggiunge lo stato stazionario entro 5 minuti, CodeDeploy interromperà la distribuzione e la contrassegnerà come fallita.

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

  • Quando si crea inizialmente un' CodeDeploy applicazione e un gruppo di distribuzione, è necessario 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 una CodeDeploy distribuzione per un servizio Amazon ECS, CodeDeploy crea un set di attività sostitutivo (o set di attività verde) nella distribuzione. Se hai aggiunto un listener di test al load balancer, CodeDeploy indirizza il traffico di test verso il set di attività sostitutivo. Questo è il momento in cui è possibile eseguire i test di convalida. Quindi CodeDeploy reindirizza il traffico di produzione dal set di attività originale al set di attività di sostituzione in base alle impostazioni di reinstradamento del traffico per il gruppo di distribuzione.

Autorizzazioni IAM richieste

Blue/green deployments are made possible by a combination of the Amazon ECS and CodeDeploy APIs. Users must have the appropriate permissions for these services before they can use Amazon ECS blue/greendistribuzioni in o con Console di gestione AWS o. AWS CLI SDKs

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 Amazon ECS_ 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 necessita delle autorizzazioni per chiamare Amazon ECS APIs, modificare il tuo ELB, richiamare funzioni Lambda e descrivere gli CloudWatch allarmi, oltre alle autorizzazioni per modificare il conteggio desiderato del servizio per tuo conto. Prima di creare un servizio Amazon ECS che utilizza il tipo di blue/green implementazione, devi creare un ruolo IAM (ecsCodeDeployRole). Per ulteriori informazioni, consulta Ruolo CodeDeploy IAM di Amazon ECS.