Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Création d'un blue/green déploiement Amazon ECS
En utilisant les blue/green déploiements Amazon ECS, vous pouvez apporter et tester des modifications de service avant de les implémenter dans un environnement de production.
Prérequis
Effectuez les opérations suivantes avant de démarrer un blue/green déploiement.
-
Configurez les autorisations appropriées.
-
Pour plus d'informations sur les autorisations d'Elastic Load Balancing, consultezRôle IAM de l'infrastructure Amazon ECS pour les équilibreurs de charge.
-
Pour plus d'informations sur les autorisations Lambda, voir Autorisations requises pour les fonctions Lambda dans les déploiements Amazon ECS blue/green
-
-
Les blue/green déploiements Amazon ECS nécessitent que votre service utilise l'une des fonctionnalités suivantes : Configurez les ressources appropriées.
-
Application Load Balancer - Pour plus d'informations, consultez. Ressources d'Application Load Balancer pour les déploiements blue/green
-
Network Load Balancer - Pour plus d'informations, consultez. Ressources Network Load Balancer pour les déploiements bleu/vert d'Amazon ECS
-
Service Connect - Pour plus d'informations, consultezRessources Service Connect pour les déploiements bleu/vert d'Amazon ECS.
-
-
Créez une règle pour acheminer le trafic vers votre version de service écologique. Pour plus d'informations, consultez les règles relatives aux écouteurs dans le guide de l'utilisateur du Network Load Balancer.
-
Créez un groupe cible pour la révision de votre service écologique. Lorsque vous utilisez le mode
awsvpc
réseau pour vos tâches, le type de cible doit êtreip
. Pour plus d'informations sur les groupes cibles, consultez la section Groupes cibles dans le guide de l'utilisateur du Network Load Balancer. -
Décidez si vous souhaitez exécuter des fonctions Lambda pour les événements du cycle de vie.
-
Avant de passer à l'échelle supérieure
-
Après la mise à l'échelle
-
Testez le transfert de trafic
-
Après le test, changement de trafic
-
Réorientation du trafic de production
-
Après le transfert du trafic de production
Créez des fonctions Lambda pour chaque événement du cycle de vie. Pour plus d'informations, voir Création d'une fonction Lambda avec la console dans le Guide du AWS Lambda développeur.
-
Procédure
Vous pouvez utiliser la console ou le AWS CLI pour créer un blue/green service Amazon ECS.
- Console
-
Ouvrez la console à la https://console.aws.amazon.com/ecs/version 2
. -
Déterminez la ressource à partir de laquelle vous lancez le service.
Pour démarrer un service à partir de Étapes Clusters
-
Sur la page Clusters, sélectionnez le cluster dans lequel créer le service.
La page de détails du cluster s'affiche.
-
Dans l'onglet Services choisissez Create (Créer).
Définition de tâche -
Sur la page Définitions de tâches, sélectionnez la définition de tâche.
-
Dans le menu Déployer, choisissez Create service.
La page Créer un service s'affiche.
-
-
Sous Détails du service, procédez comme suit :
-
Pour Famille de définitions de tâches, choisissez la définition de tâche à utiliser. Ensuite, pour Révision de la définition des tâches, entrez la révision à utiliser.
-
Pour Service name (Nom du service), saisissez un nom pour votre service.
-
-
Pour exécuter le service dans un cluster existant, dans Cluster existant, sélectionnez le cluster. Pour exécuter le service dans un nouveau cluster, choisissez Create cluster
-
Choisissez la manière dont vos tâches sont réparties dans l'infrastructure de votre cluster. Sous Configuration informatique, choisissez votre option.
Option de calcul Étapes Stratégie de fournisseur de capacité
-
Sous Options de calcul, choisissez Stratégie de fournisseur de capacité.
-
Choisissez une stratégie :
-
Pour utiliser une stratégie de fournisseur de capacité, choisissez Use cluster default (Utiliser la stratégie par défaut du cluster).
-
Si votre cluster ne possède pas de stratégie de fournisseur de capacité par défaut ou si vous souhaitez utiliser une stratégie personnalisée, sélectionnez Utiliser une stratégie personnalisée ou Ajouter une stratégie de fournisseur de capacité et définissez votre stratégie de fournisseur de capacité personnalisée en spécifiant une Base, un Fournisseur de capacité et un Poids.
-
Note
Pour utiliser un fournisseur de capacité dans une stratégie, le fournisseur de capacité doit être associé au cluster.
Type de lancement -
Dans Compute options (Options de calcul), sélectionnez Launch type (Type de lancement).
-
Pour Launch type (Type de lancement), choisissez un type de lancement.
-
(Facultatif) Lorsque le type de lancement Fargate est spécifié, pour Platform version (Version de plateforme), spécifiez la version de plateforme à utiliser. Si vous ne spécifiez aucune version de plateforme, la version
LATEST
est utilisée.
-
-
Sous Configuration du déploiement, procédez comme suit :
-
Pour le type de service, choisissez Replica.
-
Pour Desired tasks (Tâches souhaitées), saisissez le nombre de tâches à lancer et à conserver dans le service.
-
Pour qu'Amazon ECS surveille la répartition des tâches entre les zones de disponibilité et les redistribue en cas de déséquilibre, sous Rééquilibrage du service des zones de disponibilité, sélectionnez Rééquilibrage du service des zones de disponibilité.
-
Pour la période de grâce du bilan de santé, entrez la durée (en secondes) pendant laquelle le planificateur de services ignore les vérifications d'état incorrectes d'Elastic Load Balancing, de VPC Lattice et de l'état des conteneurs après le premier démarrage d'une tâche. Si vous ne spécifiez aucune valeur de période de grâce pour le bilan de santé, la valeur par défaut de 0 est utilisée.
-
-
-
Pour le temps de cuisson, entrez le nombre de minutes pendant lesquelles les révisions du service bleu et vert seront exécutées simultanément avant que la révision bleue ne soit terminée. Cela laisse le temps de procéder à des vérifications et à des tests.
-
(Facultatif) Exécutez les fonctions Lambda à exécuter à des étapes spécifiques du déploiement. Sous Hooks du cycle de vie du déploiement, sélectionnez les étapes pour exécuter les hooks du cycle de vie.
Pour ajouter un crochet de cycle de vie :
-
Choisissez Ajouter.
-
Pour la fonction Lambda, entrez le nom ou l'ARN de la fonction.
-
Pour Rôle, sélectionnez le rôle IAM autorisé à appeler la fonction Lambda.
-
Pour les étapes du cycle de vie, sélectionnez les étapes pendant lesquelles la fonction Lambda doit être exécutée.
-
-
-
Pour configurer la manière dont Amazon ECS détecte et gère les échecs de déploiement, développez Deployment failure detection (Détection des échecs de déploiement), puis choisissez vos options.
-
Pour arrêter un déploiement lorsque les tâches ne peuvent pas démarrer, sélectionnez Use the Amazon ECS deployment circuit breaker (Utiliser le disjoncteur de déploiement Amazon ECS).
Pour que le logiciel annule automatiquement le déploiement au dernier état de déploiement terminé lorsque le disjoncteur de déploiement met le déploiement en état d'échec, sélectionnez Annulation en cas d'échec.
-
Pour arrêter un déploiement en fonction des métriques de l'application, sélectionnez Utiliser une ou plusieurs CloudWatch alarmes. Ensuite, à partir du nom de l'CloudWatch alarme, choisissez les alarmes. Pour créer une nouvelle alarme, rendez-vous sur la CloudWatch console.
Pour que le logiciel annule automatiquement le déploiement au dernier état de déploiement terminé lorsqu'une CloudWatch alarme indique que le déploiement a échoué, sélectionnez Annulation en cas d'échec.
-
-
(Facultatif) Pour interconnecter votre service à l'aide de Service Connect, étendez Service Connect, puis spécifiez les éléments suivants :
-
Sélectionnez Activer Service Connect.
-
Sous Service Connect configuration (Configuration de Service Connect), spécifiez le mode client.
-
Si votre service exécute une application client réseau qui doit uniquement se connecter aux autres services de l'espace de noms, choisissez Client side only.
-
Si votre service exécute une application réseau ou un service Web et doit fournir des points de terminaison pour ce service, et se connecte à d'autres services dans l'espace de noms, choisissez Client and server (Client et serveur).
-
-
Pour utiliser un espace de noms qui n'est pas l'espace de noms de cluster par défaut, dans Namespace (Espace de noms), choisissez l'espace de noms du service.
-
(Facultatif) Configurez les règles d'en-tête du trafic de test pour les blue/green déploiements. Sous Tester le routage du trafic, spécifiez les éléments suivants :
-
Sélectionnez Activer les règles d'en-tête du trafic de test pour acheminer des demandes spécifiques vers la révision du service vert pendant les tests.
-
Pour les règles de correspondance des en-têtes, configurez les critères de routage du trafic de test :
-
Nom de l'en-tête : entrez le nom de l'en-tête HTTP correspondant (par exemple,
X-Test-Version
ouUser-Agent
). -
Type de correspondance : Choisissez les critères de correspondance :
-
Correspondance exacte : demandes de routage dont la valeur d'en-tête correspond exactement à la valeur spécifiée
-
En-tête présent : Router les demandes contenant l'en-tête spécifié, quelle que soit sa valeur
-
Correspondance de modèle : demandes de routage dont la valeur d'en-tête correspond à un modèle spécifié
-
-
Valeur d'en-tête (si vous utilisez une correspondance exacte ou une correspondance de modèle) : entrez la valeur ou le modèle à comparer.
Vous pouvez ajouter plusieurs règles de correspondance d'en-têtes pour créer une logique de routage complexe. Les demandes correspondant à l'une des règles configurées seront acheminées vers la version verte du service à des fins de test.
-
-
Choisissez Ajouter une règle d'en-tête pour configurer des conditions de correspondance d'en-tête supplémentaires.
Note
Les règles d'en-tête du trafic de test vous permettent de valider les nouvelles fonctionnalités avec un trafic contrôlé avant de terminer le déploiement complet. Cela vous permet de tester la révision du service vert avec des demandes spécifiques (telles que celles provenant d'outils de test internes ou d'utilisateurs bêta) tout en maintenant un flux de trafic normal vers la révision du service bleu.
-
-
(Facultatif) Spécifiez une configuration de journal. Sélectionnez Utiliser la collecte de journaux. L'option par défaut envoie les journaux du conteneur à CloudWatch Logs. Les autres options du pilote de journal sont configurées à l'aide de AWS FireLens. Pour de plus amples informations, veuillez consulter Envoyer les journaux Amazon ECS à un AWS service ou AWS Partner.
Voici une description plus détaillée de chaque destination de journal de conteneur.
-
Amazon CloudWatch — Configurez la tâche pour envoyer les journaux des conteneurs à CloudWatch Logs. Les options du pilote de journal par défaut sont fournies, ce qui permet de créer un groupe de CloudWatch journaux en votre nom. Pour spécifier un autre nom de groupe de journaux, modifiez les valeurs des options de pilote.
-
Amazon Data Firehose : configurez la tâche pour envoyer les journaux des conteneurs à Firehose. Les options du pilote de journal par défaut sont fournies, qui envoient les journaux à un flux de diffusion Firehose. Pour spécifier un autre nom de flux de diffusion, modifiez les valeurs des options de pilote.
-
Amazon Kinesis Data Streams : configurez la tâche pour envoyer les journaux des conteneurs à Kinesis Data Streams. Les options du pilote de journal par défaut sont fournies, qui envoient les journaux vers un flux Kinesis Data Streams. Pour spécifier un autre nom de flux, modifiez les valeurs des options de pilote.
-
Amazon OpenSearch Service — Configurez la tâche pour envoyer les journaux des conteneurs vers un domaine OpenSearch de service. Les options de pilote de journal doivent être fournies.
-
Amazon S3 — Configurez la tâche pour envoyer les journaux des conteneurs vers un compartiment Amazon S3. Les options du pilote de journal par défaut sont fournies, mais vous devez spécifier un nom de compartiment Amazon S3 valide.
-
-
-
(Facultatif) Configurez l'équilibrage de charge pour un déploiement bleu/vert.
Type d'Elastic Load Balancing Étapes Application Load Balancer
-
Pour le type d'équilibreur de charge, choisissez Application Load Balancer.
-
Choisissez Create a new load balancer (Créer un équilibreur de charge) pour créer un équilibreur de charge Application Load Balancer ou Use an existing load balancer (Utiliser un équilibreur de charge existant) pour sélectionner un équilibreur de charge Application Load Balancer existant.
-
Pour Container, choisissez le conteneur qui héberge le service.
-
Pour Load balancer name (nom d'équilibreur de charge), saisissez un nom unique.
-
Pour Listener (Écouteur), saisissez un port et un protocole sur lesquels Application Load Balancer doit écouter les demandes de connexion. Par défaut, l'équilibreur de charge est configuré pour utiliser le port 80 et HTTP.
-
Pour Règle de production, entrez l'ordre d'évaluation et le modèle de chemin de la règle.
Cette règle concerne le trafic de révision de votre service de production (bleu).
-
Pour Règle de test, entrez l'ordre d'évaluation et le modèle de chemin de la règle.
Cette règle s'applique au trafic de révision de votre service de test (vert).
-
-
Pour le groupe cible, configurez les éléments suivants :
-
Pour Target group name (Nom du groupe cible), saisissez un nom et un protocole pour le groupe cible vers lequel Application Load Balancer achemine les requêtes.
-
Pour Protocol, choisissez le protocole pour le groupe cible vers lequel l'Application Load Balancer achemine les demandes. Par défaut, le groupe cible achemine les requêtes vers le premier conteneur défini dans votre définition de tâche.
-
Pour le délai de désenregistrement, entrez le nombre de secondes pendant lequel l'équilibreur de charge doit passer à l'état cible.
UNUSED
La durée par défaut est 300 secondes. -
Pour Health check path (Chemin de surveillance de l'état), saisissez un chemin qui existe dans votre conteneur où Application Load Balancer doit envoyer périodiquement des requêtes pour vérifier l'état de la connexion entre Application Load Balancer et le conteneur. Le répertoire par défaut est le répertoire racine (
/
). -
Dans Nom de groupe alternatif, entrez le nom du groupe cible pour votre révision de service de test (vert).
-
Network Load Balancer -
Pour Load balancer type (Type d'équilibreur de charge), sélectionnez Network Load Balancer.
-
Dans le champ Load Balancer (Équilibreur de charge), choisissez Attacher à un Network Load Balancer existant.
-
Pour Choose container to load balance (Choisissez le conteneur pour équilibrer la charge), choisissez le conteneur qui héberge le service.
-
Pour Écouteur de production, choisissez le port d'écouteur de production et le protocole d'écouteur de production.
Il s'agit de l'écouteur pour le trafic de révision de votre service de production (bleu).
-
Pour Test listener, choisissez le port Test listener et le protocole Test listener.
Il s'agit de l'écouteur pour le trafic de révision de votre service de test (vert).
-
Pour le groupe cible, configurez les éléments suivants :
-
Pour Target group name (Nom du groupe cible), saisissez un nom et un protocole pour le groupe cible vers lequel Network Load Balancer achemine les requêtes.
-
Pour Protocol, choisissez le protocole pour le groupe cible vers lequel le Network Load Balancer achemine les demandes. Par défaut, le groupe cible achemine les requêtes vers le premier conteneur défini dans votre définition de tâche.
-
Pour le délai de désenregistrement, entrez le nombre de secondes pendant lequel l'équilibreur de charge doit passer à l'état cible.
UNUSED
La durée par défaut est 300 secondes. -
Pour Health check path (Chemin de surveillance de l'état), saisissez un chemin qui existe dans votre conteneur où Application Load Balancer doit envoyer périodiquement des requêtes pour vérifier l'état de la connexion entre Application Load Balancer et le conteneur. Le répertoire par défaut est le répertoire racine (
/
). -
Dans Nom de groupe alternatif, entrez le nom du groupe cible pour votre révision de service de test (vert).
-
-
-
(Facultatif) Pour vous aider à identifier votre service et vos tâches, développez Tags (balises), puis configurez vos balises.
Pour qu'Amazon ECS balise automatiquement toutes les tâches nouvellement lancées avec le nom du cluster et les balises de définition des tâches, sélectionnez Activer les balises gérées Amazon ECS, puis pour Propager des balises à partir de, choisissez Définitions de tâches.
Pour qu'Amazon ECS balise automatiquement toutes les tâches nouvellement lancées avec le nom du cluster et les balises d'un service, sélectionnez Activer les balises gérées Amazon ECS, puis pour Propager des balises à partir de, choisissez Service.
Ajoutez ou supprimez une balise.
-
[Ajouter une balise] Choisissez Add tag (Ajouter une balise), puis procédez comme suit :
-
Pour Clé, saisissez le nom de la clé.
-
Pour Valeur, saisissez la valeur de clé.
-
-
[Supprimer une balise] En regard de la balise, choisissez Supprimer la balise.
-
-
Choisissez Créer.
- AWS CLI
-
-
Créez un fichier nommé
service-definition.json
avec le contenu suivant.Remplacez le
user-input
par vos valeurs.{ "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
" } } ] } -
Exécutez
create-service
.Remplacez le
user-input
par vos valeurs.aws ecs create-service --cli-input-json file://service-definition.json
Vous pouvez également utiliser l'exemple suivant qui crée un service de blue/green déploiement avec une configuration d'équilibreur de charge :
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
}"
-
Étapes suivantes
Mettez à jour le service pour démarrer le déploiement. Pour de plus amples informations, veuillez consulter Mettre à jour un service Amazon ECS.
-
Surveillez le processus de déploiement pour vous assurer qu'il suit le blue/green modèle :
-
La révision du service écologique est créée et étendue
-
Le trafic de test est acheminé vers la version verte (si elle est configurée)
-
Le trafic de production passe à la version verte
-
Après le temps de cuisson, la révision bleue est terminée
-