Creazione di un'implementazione blu/verde di Amazon ECS
Con le implementazioni blu/verdi di Amazon ECS, è possibile apportare e testare le modifiche del servizio di test prima di implementarle in un ambiente di produzione.
Prerequisiti
Eseguire le seguenti operazioni prima di avviare un'implementazione blu/verde.
-
Configurazione delle autorizzazioni appropriate.
-
Per informazioni sulle autorizzazioni di bilanciamento del carico elastico, consultare Ruolo IAM dell'infrastruttura Amazon ECS per i bilanciatori del carico.
-
Per informazioni sulle autorizzazioni Lambda, consultare Autorizzazioni richieste per le funzioni Lambda nelle implementazioni blu/verdi di Amazon ECS
-
-
Le implementazioni blu/verdi di Amazon ECS richiedono che il servizio utilizzi una delle seguenti funzionalità: Configurare le risorse appropriate.
-
Application Load Balancer: per ulteriori informazioni, consultare Risorse di Application Load Balancer per le implementazioni blu/verdi.
-
Network Load Balancer: per ulteriori informazioni, consultare Risorse di Network Load Balancer per le implementazioni blu/verdi di Amazon ECS.
-
Service Connect: per ulteriori informazioni, consultare Risorse Service Connect per le implementazioni blu/verdi di Amazon ECS.
-
-
Creare una regola per instradare il traffico verso la revisione del servizio verde. Per ulteriori informazioni, consultare Listener rules nella Guida per l'utente di Network Load Balancer.
-
Creazione di un gruppo di destinazione per la revisione del servizio verde. Quando si usa la modalità di rete
awsvpcper le attività, il tipo di destinazione deve essereip. Per informazioni sui gruppi di destinazione, consultare Target groups nella Guida per l'utente di Network Load Balancer. -
Decidere se eseguire le funzioni Lambda per gli eventi del ciclo di vita.
-
Prima dell'aumento verticale
-
Dopo l'aumento verticale
-
Spostamento del traffico di test
-
Dopo lo spostamento del traffico di test
-
Spostamento del traffico di produzione
-
Dopo lo spostamento del traffico di produzione
Creare funzioni Lambda per ogni evento del ciclo di vita. Per ulteriori informazioni, consultare Create a Lambda function with the console nella Guida per gli sviluppatori di AWS Lambda.
-
Procedura
È possibile utilizzare la console o la AWS CLI per creare un servizio Amazon ECS blu/verde.
- Console
-
Apri la console all'indirizzo https://console.aws.amazon.com/ecs/v2
. -
Determina la risorsa da cui avviare il servizio.
Per avviare un servizio da Fasi Cluster
-
Nella pagina Cluster, seleziona il cluster in cui creare il servizio.
Si apre la pagina dei dettagli del cluster.
-
Nella scheda Servizi, scegli Crea.
Definizione di attività -
Nella pagina Definizioni di attività, selezionare la definizione di attività.
-
Dal menu Implementa, scegliere Crea servizio.
Si apre la pagina Crea servizio.
-
-
In Dettagli del servizio, effettuare le seguenti operazioni:
-
Per Famiglia di definizione di attività, scegliere la definizione di attività da utilizzare. Poi, per Revisione della definizione di attività, inserire la revisione da utilizzare.
-
In Nome servizio, specificare un nome per il servizio.
-
-
Per eseguire il servizio in un cluster esistente, per Cluster esistente, scegliere il cluster. Per eseguire il servizio in un nuovo cluster, scegliere Crea cluster
-
Scegliere come vengono distribuite le attività nell'infrastruttura cluster. In Configurazione di calcolo, scegliere l'opzione.
Opzione di calcolo Fasi Strategia del provider di capacità
-
In Opzioni di calcolo, scegli Strategia del provider di capacità.
-
Scegli una strategia:
-
Per utilizzare una strategia del provider di capacità predefinita del cluster, scegli Use cluster default (Usa impostazione predefinita del cluster.
-
Se il cluster non dispone di una strategia del provider di capacità predefinita o per utilizzare una strategia personalizzata, scegli Usa personalizzato, Aggiungi strategia del provider di capacità e definisci la strategia personalizzata specificando Base, Provider di capacità e Peso.
-
Nota
Per utilizzare un provider di capacità in una strategia, il provider di capacità deve essere associato al cluster.
Tipo di avvio -
Nella sezione Compute option (Opzioni di calcolo), seleziona Launch type (Tipo di avvio).
-
Per Tipo di avvio, selezionare un tipo di avvio.
-
(Facoltativo) Quando viene specificato Fargate, per Versione della piattaforma, specificare la versione della piattaforma da utilizzare. Se non è specificata, di default viene utilizzata la versione della piattaforma
LATEST.
-
-
Nella sezione Configurazione implementazione, procedere come segue.
-
Per Tipo di servizio, scegliere Replica.
-
Per Attività desiderate, immettere il numero di attività da avviare e gestire nel servizio.
-
Per consentire ad Amazon ECS di monitorare la distribuzione delle attività tra le zone di disponibilità e ridistribuirle in caso di squilibrio, in Ribilanciamento del servizio delle zone di disponibilità, selezionare Ribilanciamento del servizio della zona di disponibilità.
-
Per Periodo di tolleranza dei controlli di integrità, inserire il periodo di tempo (in secondi) durante il quale il pianificatore di servizi ignora i controlli dell'integrità dei container, di bilanciamento dei carichi elastici e di VPC Lattice non integri dopo che è stata avviata un'attività. Se non si specifica un valore per il periodo di tolleranza per il controllo dell'integrità, viene utilizzato il valore predefinito di 0.
-
-
-
Per Tempo di incorporamento, inserire il numero di minuti in cui entrambe le revisioni del servizio blu e verde verranno eseguite contemporaneamente prima che la revisione blu venga terminata. Ciò consente di avere tempo per la verifica e il test.
-
(Facoltativo) Eseguire le funzioni Lambda in fasi specifiche dell'implementazione. In Hook del ciclo di vita di implementazione, selezionare le fasi per eseguire gli hook del ciclo di vita.
Per aggiungere un hook del ciclo di vita:
-
Scegliere Aggiungi.
-
Per Funzione Lambda, immettere il nome della funzione o ARN.
-
Per Ruolo, selezionare il ruolo IAM che ha il permesso di invocare la funzione Lambda.
-
Per Fasi del ciclo di vita, selezionare le fasi in cui deve essere eseguita la funzione Lambda.
-
-
-
Per configurare il modo in cui Amazon ECS rileva e gestisce gli errori di implementazione, espandi Deployment failure detection (Rilevamento degli errori di implementazione), quindi scegli le tue opzioni.
-
Per interrompere un'implementazione quando le attività non possono essere avviate, seleziona Use the Amazon ECS deployment circuit breaker (Usa l'interruttore automatico di implementazione di Amazon ECS).
Per fare in modo che il software ripristini automaticamente l'implementazione all'ultimo stato di implementazione completata quando l'interruttore automatico di implementazione imposta l'implementazione su uno stato di errore, selezionare Rollback in caso di errore.
-
Per interrompere un'implementazione in base ai parametri dell'applicazione, selezionare Usa gli allarmi di CloudWatch. Quindi, da Nomi degli allarmi di CloudWatch, scegliere gli allarmi. Per creare un nuovo allarme, andare sulla console CloudWatch.
Per fare in modo che il software ripristini automaticamente l'implementazione allo stato dell'ultima implementazione completata quando un allarme CloudWatch imposta l'implementazione su uno stato di errore, selezionare Rollback in caso di errore.
-
-
(Facoltativo) Per connettere il servizio usando Service Connect, espandere Service Connect, quindi specificare quanto segue:
-
Selezionare Attiva Service Connect.
-
In Service Connect configuration (Configurazione Service Connect), specifica la modalità client.
-
Se il servizio esegue un'applicazione client di rete che deve connettersi solo ad altri servizi nel namespace, scegliere Solo lato client.
-
Se il servizio esegue un'applicazione di rete o di servizio Web, deve fornire endpoint per questo servizio e si connette ad altri servizi nel namespace, scegliere Client e server.
-
-
Per utilizzare un namespace differente da quello del cluster predefinito, per Namespace, scegliere quello del servizio. Può trattarsi di un namespace creato separatamente nello stesso Regione AWS nel Account AWS o di un namespace nella stessa regione condiviso con il proprio account utilizzando AWS Resource Access Manager (AWS RAM). Per ulteriori informazioni sui namespace AWS Cloud Map condivisi, consultare Cross-account AWS Cloud Map namespace sharing nella Guida per gli sviluppatori AWS Cloud Map.
-
(Facoltativo) Configurare le regole dell'intestazione del traffico di test per implementazioni blu/verdi. In Instradamento del traffico di test, specificare quanto segue:
-
Selezionare Abilita le regole di intestazione del traffico di test per instradare richieste specifiche alla revisione del servizio verde durante il test.
-
Per Regole di corrispondenza di intestazione, configurare i criteri per l'instradamento del traffico di test:
-
Nome dell'intestazione: inserire il nome dell'intestazione HTTP per la corrispondenza (ad esempio,
X-Test-VersionoUser-Agent). -
Tipo di corrispondenza: scegliere i criteri di corrispondenza:
-
Corrispondenza esatta: richieste di instradamento in cui il valore dell'intestazione corrisponde esattamente al valore specificato
-
Intestazione presente: richieste di instradamento che contengono l'intestazione specificata, indipendentemente dal valore
-
Corrispondenza di schema: richieste di instradamento in cui il valore dell'intestazione corrisponde a uno schema specificato
-
-
Valore dell'intestazione (se si utilizza la corrispondenza esatta o la corrispondenza di schema): inserire il valore o lo schema a cui far corrispondere l'intestazione.
È possibile aggiungere più regole di corrispondenza dell'intestazione per creare una logica di instradamento complessa. Le richieste che corrispondono a una qualsiasi delle regole configurate verranno instradate alla revisione del servizio verde per essere testate.
-
-
Scegliere Aggiungi regola di intestazione per configurare condizioni aggiuntive di corrispondenza dell'intestazione.
Nota
Le regole di intestazione del traffico di test consentono di convalidare nuove funzionalità con traffico controllato prima di portare a termine l'implementazione completa. Ciò consente di testare la revisione del servizio verde con richieste specifiche (come quelle provenienti da strumenti di test interni o utenti beta) mantenendo al contempo il normale flusso di traffico verso la revisione del servizio blu.
-
-
(Facoltativo) Specificare una configurazione del log. Selezionare Usa la raccolta di log. L'opzione di default invia i log dei container a CloudWatch Logs. Le altre opzioni del driver di log sono configurate utilizzando AWS FireLens. Per ulteriori informazioni, consultare Inviare i log di Amazon ECS a un servizio AWS o AWS Partner.
Di seguito sono riportate descrizioni più dettagliate per ogni destinazione di log di container.
-
Amazon CloudWatch: configurare il processo per inviare log di container a CloudWatch Logs. Vengono fornite le opzioni di driver di log predefinite, che creano un gruppo di log CloudWatch per conto dell'utente. Per specificare un nome del gruppo di log diverso, modifica i valori dell'opzione del driver.
-
Amazon Data Firehose: configura l'attività per inviare i log del container a Firehose. Vengono fornite le opzioni di driver di log predefinite che inviano i log a un flusso di consegna Firehose. Per specificare un nome del flusso di consegna diverso, modifica i valori dell'opzione del driver.
-
Flusso di dati Amazon Kinesis: configura il processo per inviare log di container a Kinesis Data Streams. Vengono fornite le opzioni di driver di log predefinite che inviano i log a un flusso di consegna Kinesis Data Streams. Per specificare un nome del flusso diverso, modifica i valori dell'opzione del driver.
-
Servizio OpenSearch di Amazon: configura il processo per l'invio di log dei container a un dominio OpenSearch Service. Devono essere fornite le opzioni del driver di log.
-
Amazon S3: configura l'attività per inviare log di container a un bucket Amazon S3. Vengono fornite le opzioni del driver di log predefinito, ma è necessario specificare un nome del bucket Amazon S3 valido.
-
-
-
(Facoltativo) Configurare il Bilanciamento del carico per l'implementazione blu/verde.
Tipo di bilanciamento del carico elastico Fasi Application Load Balancer
-
Per Tipo di bilanciatore del carico, scegliere Application Load Balancer.
-
Scegli Creazione di un nuovo load balancer per creare un nuovo servizio di Application Load Balancer o Utilizzo di un load balancer esistente per selezionare un Application Load Balancer esistente.
-
Per Container, scegliere il container che ospita il servizio.
-
Per Nome del bilanciatore del carico, inserire un nome univoco.
-
Per Listener, specifica una porta e un protocollo per l'Application Load Balancer su cui ascoltare le richieste di connessione. Di default, il load balancer sarà configurato per utilizzare la porta 80 e HTTP.
-
Per Regola di produzione, inserire l'Ordine di valutazione e lo Schema di percorso per la regola.
Questa regola riguarda il traffico di revisione del servizio di produzione (blu).
-
Per Regola di test, inserire l'Ordine di valutazione e lo Schema di percorso per la regola.
Questa regola riguarda il traffico di revisione del servizio di test (verde).
-
-
Per Gruppo di destinazione, configurare quanto segue:
-
Per Nome del gruppo di destinazione, specificare un nome e un protocollo per il gruppo di destinazione a cui l'Application Load Balancer instraderà le richieste.
-
Per Protocollo, scegliere il protocollo per il gruppo di destinazione a cui l'Application Load Balancer instraderà le richieste. Per impostazione predefinita, il gruppo di destinazione instraderà le richieste al primo container definito nella definizione di attività.
-
Per Ritardo di annullamento della registrazione, inserire il numero di secondi in cui il bilanciatore del carico può modificare lo stato di destinazione in
UNUSED. Il valore predefinito è 300 secondi. -
Per Health check path (Percorso del controllo dell'integrità), specifica un percorso esistente all'interno del container in cui l'Application Load Balancer deve inviare periodicamente le richieste per verificare l'integrità della connessione tra l'Application Load Balancer e il container. L'opzione predefinita è la directory root (
/). -
Per Nome del gruppo alternativo, inserire il nome del gruppo di destinazione per la revisione del servizio di test (verde).
-
Network Load Balancer -
Per Load balancer type (Tipo di load balancer), scegli Network Load Balancer.
-
Per Load Balancer, scegli un Network Load Balancer esistente.
-
Per Choose container to load balance (Scegli il container per il bilanciamento del carico), scegli il container che ospita il servizio.
-
Per Listener di produzione, scegliere la Porta di listener di produzione e il Protocollo di listener di produzione.
Questo è il listener per il traffico di revisione del servizio di produzione (blu).
-
Per Listener di test, scegliere la Porta di listener di test e il Protocollo di listener di test.
Questo è il listener per il traffico di revisione del servizio di test (verde).
-
Per Gruppo di destinazione, configurare quanto segue:
-
Per Nome del gruppo di destinazione, specificare un nome e un protocollo per il gruppo di destinazione a cui il Network Load Balancer instraderà le richieste.
-
Per Protocollo, scegliere il protocollo per il gruppo di destinazione a cui il Network Load Balancer instraderà le richieste. Per impostazione predefinita, il gruppo di destinazione instraderà le richieste al primo container definito nella definizione di attività.
-
Per Ritardo di annullamento della registrazione, inserire il numero di secondi in cui il bilanciatore del carico può modificare lo stato di destinazione in
UNUSED. Il valore predefinito è 300 secondi. -
Per Health check path (Percorso del controllo dell'integrità), specifica un percorso esistente all'interno del container in cui l'Application Load Balancer deve inviare periodicamente le richieste per verificare l'integrità della connessione tra l'Application Load Balancer e il container. L'opzione predefinita è la directory root (
/). -
Per Nome del gruppo alternativo, inserire il nome del gruppo di destinazione per la revisione del servizio di test (verde).
-
-
-
(Facoltativo) Per identificare il servizio e le attività, espandi la sezione Tags (Tag), quindi configura i tag.
Per fare in modo che Amazon ECS contrassegni automaticamente tutte le attività appena avviate con il nome del cluster e i tag di definizione delle attività, seleziona Attiva i tag gestiti di Amazon ECS, quindi in Propaga i tag da, scegli Definizioni di attività.
Per fare in modo che Amazon ECS contrassegni automaticamente tutte le attività appena avviate con il nome del cluster e i tag del servizio, seleziona Attiva i tag gestiti di Amazon ECS, quindi in Propaga i tag da, scegli Servizio.
Aggiungi o rimuovi un tag.
-
[Aggiungi un tag] Scegli Add tag (Aggiungi tag), quindi effettuare le seguenti operazioni:
-
In Chiave, immetti il nome della chiave.
-
In Valore, immetti il valore della chiave.
-
-
[Rimuovere un tag] Accanto al tag, scegliere Remove tag (Rimuovi tag).
-
-
Scegli Create (Crea).
- AWS CLI
-
-
Creare un archivio denominato
service-definition.jsoncon i seguenti contenuti.Sostituire
user-inputcon i propri valori.{ "serviceName": "myBlueGreenService", "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": "BLUE_GREEN", "maximumPercent": 200, "minimumHealthyPercent": 100, "bakeTimeInMinutes": 2, "alarms": { "alarmNames": [ "myAlarm" ], "rollback": true, "enable": true }, "lifecycleHooks": [ { "hookTargetArn": "arn:aws:lambda:us-west-2:7123456789012:function:checkExample", "roleArn": "arn:aws:iam::123456789012:role/ECSLifecycleHookInvoke", "lifecycleStages": [ "PRE_SCALE_UP" ] } ] }, "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-blue-green-demo/32e0e4f946c3c05b/9cfa8c482e204f7d/831dbaf72edb911", "roleArn": "arn:aws:iam::123456789012:role/LoadBalancerManagementforECS" } } ] } -
Esegui
create-service.Sostituire
user-inputcon i propri valori.aws ecs create-service --cli-input-json file://service-definition.jsonIn alternativa, è possibile utilizzare il seguente esempio che crea un servizio di implementazione blu/verde con una configurazione di bilanciatore del carico:
aws ecs create-service \ --cluster "arn:aws:ecs:us-west-2:123456789012:cluster/MyCluster" \ --service-name "blue-green-example-service" \ --task-definition "nginxServer:1" \ --launch-type "FARGATE" \ --network-configuration "awsvpcConfiguration={subnets=[subnet-12345,subnet-67890,subnet-abcdef,subnet-fedcba],securityGroups=[sg-12345],assignPublicIp=ENABLED}" \ --desired-count 3 \ --deployment-controller "type=ECS" \ --deployment-configuration "strategy=BLUE_GREEN,maximumPercent=200,minimumHealthyPercent=100,bakeTimeInMinutes=0" \ --load-balancers "targetGroupArn=arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/MyBGtg1/abcdef1234567890,containerName=nginx,containerPort=80,advancedConfiguration={alternateTargetGroupArn=arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/MyBGtg2/0987654321fedcba,productionListenerRule=arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/MyLB/1234567890abcdef/1234567890abcdef,roleArn=arn:aws:iam::123456789012:role/ELBManagementRole}"
-
Passaggi successivi
Aggiornare il servizio per avviare l'implementazione. Per ulteriori informazioni, consultare Aggiornamento di un servizio Amazon ECS.
-
Monitorare il processo di implementazione per assicurarsi che segua lo schema blu/verde:
-
La revisione del servizio verde viene creata e aumentata verticalmente
-
Il traffico di test viene instradato alla revisione verde (se configurata)
-
Il traffico di produzione viene spostato alla revisione del servizio verde
-
Dopo il tempo di incorporamento, la revisione blu viene interrotta
-