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.
Migrer les CodeDeploy blue/green deployments to Amazon ECS blue/green déploiements
CodeDeploy blue/green and Amazon ECS blue/greenles déploiements fournissent des fonctionnalités similaires, mais ils diffèrent dans la façon dont vous les configurez et les gérez.
CodeDeploy aperçu du déploiement bleu/vert
Lorsque vous créez un service Amazon ECS à l'aide de CodeDeploy, vous :
-
créez un équilibreur de charge avec un écouteur de production et (éventuellement) un écouteur de test. Chaque écouteur est configuré avec une seule règle (par défaut) qui achemine tout le trafic vers un seul groupe cible (le groupe cible principal) ;
-
créez un service Amazon ECS, configuré pour utiliser l’écouteur et le groupe cible, avec
deploymentControllertype défini surCODE_DEPLOY. La création d’un service entraîne la création d’un jeu de tâches (bleu) enregistré auprès du groupe cible spécifié ; -
Créez un groupe de CodeDeploy déploiement (dans le cadre d'une CodeDeploy application) et configurez-le avec les détails du cluster Amazon ECS, le nom du service, les écouteurs d'équilibrage de charge, deux groupes cibles (le groupe cible principal utilisé dans la règle d'écoute de production et un groupe cible secondaire à utiliser pour les tâches de remplacement), un rôle de service (pour accorder des CodeDeploy autorisations pour manipuler les ressources Amazon ECS et Elastic Load Balancing) et divers paramètres qui contrôlent le comportement de déploiement.
Avec CodeDeploy, les nouvelles versions d'un service sont déployées à l'aide CreateDeployment() du nom de l' CodeDeploy application, du nom du groupe de déploiement et d'un AppSpec fichier fournissant les détails de la nouvelle révision et des hooks de cycle de vie facultatifs. Le CodeDeploy déploiement crée un ensemble de tâches de remplacement (vert) et enregistre ses tâches auprès du groupe cible secondaire. Lorsque celui-ci est opérationnel, il est disponible pour les tests (facultatif) et pour la production. Dans les deux cas, le réacheminement est réalisé en modifiant la règle d’écoute correspondante pour qu’elle pointe vers le groupe cible secondaire associé à le jeu de tâches vert. La restauration s’effectue en ramenant la règle d’écouteur de production au groupe cible principal.
Présentation du blue/green déploiement d'Amazon ECS
Dans le cas des blue/green déploiements Amazon ECS, la configuration du déploiement fait partie du service Amazon ECS lui-même :
-
Vous devez préconfigurer l’écouteur de production de l’équilibreur de charge avec une règle qui inclut deux groupes cibles avec des pondérations de 1 et 0.
-
Vous devez spécifier les ressources suivantes ou mettre à jour les ressources du service :
-
L’ARN de cette règle d’écoute
-
Les deux groupes cibles
-
Un rôle IAM pour autoriser Amazon ECS à appeler Elastic Load Balancing APIs
-
Un rôle IAM facultatif pour exécuter les fonctions Lambda
-
Définissez le type
deploymentControllersurECSetdeploymentConfiguration.strategysurBLUE_GREEN. Cela entraîne la création d’un déploiement de service (bleu) dont les tâches sont enregistrées auprès du groupe cible principal.
-
Avec le déploiement bleu/vert Amazon ECS, une nouvelle révision de service est créée en appelant Amazon ECS UpdateService(), en transmettant les détails de la nouvelle révision. Le déploiement de service crée des tâches de révision de service (vertes) et les enregistre auprès du groupe cible secondaire. Amazon ECS gère les opérations de réacheminement et de restauration en modifiant les pondérations selon la règle d’écoute.
Principales différences de mise en œuvre
Bien que les deux approches aboutissent à la création d’un jeu de tâches initial, la mise en œuvre sous-jacente est différente :
-
CodeDeploy utilise un ensemble de tâches, tandis qu'Amazon ECS utilise une révision de service. Les jeux de tâches Amazon ECS sont une ancienne structure qui a été remplacée par les révisions et les déploiements de service Amazon ECS. Ces derniers offrent une meilleure visibilité sur le processus de déploiement, ainsi que sur l’historique des déploiements et des révisions de service.
-
Avec CodeDeploy, les hooks du cycle de vie sont spécifiés dans le cadre du AppSpec fichier fourni à
CreateDeployment(). Cela signifie que les hooks peuvent être modifiés d’un déploiement à l’autre. Avec Amazon ECS bleu/vert, les hooks sont spécifiés dans le cadre de la configuration du service, et toute mise à jour nécessite un appel àUpdateService(). -
Amazon ECS CodeDeploy et Amazon ECS blue/green utilisent Lambda pour implémenter le hook, mais les entrées et sorties attendues sont différentes.
Avec CodeDeploy, la fonction doit appeler
PutLifecycleEventHookExecutionStatus()pour renvoyer le statut du hook, qui peut êtreSUCCEEDEDouFAILED. Avec Amazon ECS, la réponse Lambda est utilisée pour indiquer l’état du hook. -
CodeDeploy invoque chaque hook en tant qu'appel ponctuel et s'attend à ce qu'un statut d'exécution final soit renvoyé dans un délai d'une heure. Les hooks Amazon ECS sont plus flexibles dans la mesure où ils peuvent renvoyer un indicateur
IN_PROGRESS, qui spécifie que le hook doit être réinvoqué à plusieurs reprises jusqu’à ce qu’il aboutisse àSUCCEEDEDouFAILED. Pour de plus amples informations, veuillez consulter Hooks de cycle de vie pour les déploiements de service Amazon ECS.
Approches de migration
Il existe trois approches principales pour migrer à partir de CodeDeploy blue/green to Amazon ECS blue/green déploiements. Chaque approche présente des caractéristiques différentes en termes de complexité, de risque, de capacité de restauration et de durée d’indisponibilité potentielle.
Réutilisez les mêmes ressources Elastic Load Balancing que celles utilisées pour CodeDeploy
Vous mettez à jour le service Amazon ECS existant pour utiliser le contrôleur de déploiement Amazon ECS avec une stratégie de blue/green déploiement au lieu du contrôleur de CodeDeploy déploiement. Tenez compte des éléments suivants lorsque vous adoptez cette approche :
-
La procédure de migration est plus simple, car vous mettez à jour le contrôleur de déploiement de service Amazon ECS et la stratégie de déploiement existants.
-
Il n’y a aucune durée d’indisponibilité lorsque la configuration et la migration sont correctement effectuées.
-
Une restauration nécessite que vous rétablissiez la révision de service.
-
Le risque est élevé, car il n’existe pas de configuration parallèle bleu/vert.
Vous utilisez le même écouteur d'équilibrage de charge et les mêmes groupes cibles que ceux utilisés pour. CodeDeploy Si vous utilisez CloudFormation, consultezMigration d'un modèle CloudFormation CodeDeploy blue/green deployment template to an Amazon ECS blue/green CloudFormation.
-
Modifiez la règle par défaut des production/test auditeurs pour inclure le groupe cible alternatif et définissez le poids du groupe cible principal sur 1 et du groupe cible alternatif sur 0.
En CodeDeploy effet, les écouteurs de l'équilibreur de charge rattachés au service sont configurés avec une règle unique (par défaut) qui achemine tout le trafic vers un seul groupe cible. Pour le déploiement bleu/vert Amazon ECS, les écouteurs de l’équilibreur de charge doivent être préconfigurés avec une règle qui inclut les deux groupes cibles avec des pondérations. Le groupe cible principal doit être pondéré à 1 et le groupe cible alternatif doit être pondéré à 0.
-
Mettez à jour le service Amazon ECS existant en appelant l’API
UpdateServiceet en définissant le paramètredeploymentControllersurECSet le paramètredeploymentStrategysurBLUE_GREEN. Spécifiez le ARNs groupe cible, le groupe cible alternatif, l'écouteur de production et un écouteur de test facultatif. -
Vérifiez que le service fonctionne comme prévu.
-
Supprimez la CodeDeploy configuration de ce service Amazon ECS car vous utilisez désormais Amazon ECS bleu/vert.
Nouveau service avec équilibreur de charge existant
Cette approche utilise la blue/green stratégie de migration.
Tenez compte des éléments suivants lorsque vous adoptez cette approche :
-
La perturbation est minime. Elle ne se produit que pendant le changement de port Elastic Load Balancing.
-
Une restauration nécessite que vous rétablissiez l’échange de ports Elastic Load Balancing.
-
Le risque est faible, car il existe des configurations parallèles. Vous pouvez donc effectuer un test avant le changement de trafic.
-
Laissez les écouteurs, les groupes cibles et le service Amazon ECS intacts pour la CodeDeploy configuration afin de pouvoir facilement revenir à cette configuration si nécessaire.
-
Créez des groupes cibles et des écouteurs (avec des ports différents de ceux des écouteurs d’origine) sous l’équilibreur de charge existant. Créez ensuite un nouveau service Amazon ECS qui correspond au service Amazon ECS existant, sauf que vous l'utilisez
ECScomme contrôleur de déploiement,BLUE_GREENcomme stratégie de déploiement, et transmettez les règles ARNs pour les nouveaux groupes cibles et les nouveaux auditeurs. -
Vérifiez la nouvelle configuration en envoyant manuellement le trafic HTTP au service. Si tout se passe bien, échangez les ports des écouteurs d’origine et des nouveaux écouteurs pour acheminer le trafic vers la nouvelle configuration.
-
Vérifiez la nouvelle configuration et, si tout continue de fonctionner comme prévu, CodeDeploy supprimez-la.
Nouveau service avec un équilibreur de charge
Comme l'approche précédente, cette approche utilise la blue/green stratégie de migration. La principale différence est que le passage de la CodeDeploy configuration à la configuration Amazon ECS s'effectue au niveau blue/green d'une couche proxy inverse située au-dessus de l'équilibreur de charge. Des exemples d'implémentations pour la couche proxy inverse sont Route 53 et CloudFront.
Cette approche convient aux clients qui disposent déjà de cette couche proxy inverse, et si toutes les communications avec le service passent par cette couche (par exemple, aucune communication directe au niveau de l’équilibreur de charge).
Tenez compte des éléments suivants lorsque vous adoptez cette approche :
-
Elle nécessite une couche proxy inverse.
-
La procédure de migration est plus complexe, car vous devez mettre à jour le contrôleur de déploiement de service Amazon ECS et la stratégie de déploiement existants.
-
La perturbation est minime. Elle ne se produit que pendant le changement de port Elastic Load Balancing.
-
Pour effectuer une restauration, vous devez annuler les modifications apportées à la configuration du proxy.
-
Le risque est faible, car il existe des configurations parallèles. Vous pouvez donc effectuer un test avant le changement de trafic.
-
Ne modifiez pas la CodeDeploy configuration existante intacte (équilibreur de charge, écouteurs, groupes cibles, service Amazon ECS et groupe de CodeDeploy déploiement).
-
Créez un nouvel équilibreur de charge, des groupes cibles et des écouteurs configurés pour les déploiements Amazon ECS. blue/green
Configurez les ressources appropriées.
-
Application Load Balancer : pour plus d’informations, consultez la section Ressources d'Application Load Balancer pour les déploiements bleu/vert, linéaires et Canary.
-
Network Load Balancer : pour plus d’informations, consultez la section Ressources Network Load Balancer pour les déploiements d'Amazon ECS blue/green .
-
-
Créez un service avec
ECSen tant que contrôleur de déploiement etBLUE_GREENen tant que stratégie de déploiement, en pointant vers les nouvelles ressources de l’équilibreur de charge. -
Vérifiez la nouvelle configuration en la testant via le nouvel équilibreur de charge.
-
Mettez à jour la configuration du proxy inverse pour acheminer le trafic vers le nouvel équilibreur de charge.
-
Observez la nouvelle révision du service et, si tout continue de fonctionner comme prévu, supprimez la CodeDeploy configuration.
Étapes suivantes
Après la migration vers les blue/green déploiements Amazon ECS :
-
Mettez à jour vos scripts et CI/CD pipelines de déploiement pour utiliser l'
UpdateServiceAPI Amazon ECS au lieu de l' CodeDeployCreateDeploymentAPI. -
Mettez à jour votre surveillance et vos alertes pour suivre les déploiements de services Amazon ECS plutôt que les déploiements. CodeDeploy
-
Envisagez de mettre en œuvre des tests automatisés de votre nouveau processus de déploiement pour vous assurer qu’il fonctionne comme prévu.