Migrer les CodeDeploy blue/green deployments to Amazon ECS blue/green déploiements - Amazon Elastic Container Service

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 :

  1. Créez un équilibreur de charge avec un écouteur de production et (éventuellement) un écouteur de test. Chaque écouteur est configuré avec une règle unique (par défaut) qui achemine tout le trafic vers un seul groupe cible (le groupe cible principal).

  2. Créez un service Amazon ECS, configuré pour utiliser l'écouteur et le groupe cible, avec le deploymentController type défini sur. CODE_DEPLOY La création d'un service entraîne la création d'un ensemble de tâches (bleu) enregistré auprès du groupe cible spécifié.

  3. 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 cela devient sain, 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é à l'ensemble de tâches vert. Le rollback est obtenu en redéfinissant la règle de l'écouteur de production pour la ramener 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 :

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

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

    • Rôle IAM facultatif pour exécuter les fonctions Lambda

    • Définissez deploymentController le type sur ECS et deploymentConfiguration.strategy surBLUE_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 Amazon ECS bleu/vert, une nouvelle révision de service est créée en appelant Amazon ECS et en transmettant UpdateService() les détails de la nouvelle révision. Le déploiement du service crée de nouvelles 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 rollback en modifiant les pondérations selon la règle de l'écouteur.

Principales différences de mise en œuvre

Bien que les deux approches aboutissent à la création d'un ensemble initial de tâches, 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 ensembles de tâches Amazon ECS sont une ancienne structure qui a été remplacée par les révisions et les déploiements des services 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 des services.

  • Avec CodeDeploy, les hooks du cycle de vie sont spécifiés dans le cadre du AppSpec fichier fourni àCreateDeployment(). Cela signifie que les crochets 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 UpdateService() appel.

  • 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 être SUCCEEDED ouFAILED. 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 IN_PROGRESS indicateur, qui indique que le hook doit être réinvoqué à plusieurs reprises jusqu'à ce qu'il aboutisse à SUCCEEDED ouFAILED. Pour de plus amples informations, veuillez consulter Hooks relatifs au cycle de vie pour les déploiements de services 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 réduction et de temps d'arrêt potentiel.

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. Lorsque vous utilisez cette approche, tenez compte des points suivants :

  • La procédure de migration est plus simple car vous mettez à jour le contrôleur de déploiement du service Amazon ECS et la stratégie de déploiement existants.

  • Il n'y a aucun temps d'arrêt lorsque la configuration et la migration sont correctes.

  • Pour effectuer une annulation, vous devez annuler la révision du 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 AWS CloudFormation, consultezMigration d'un modèle AWS CloudFormation CodeDeploy blue/green deployment template to an Amazon ECS blue/green AWS CloudFormation.

  1. 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 Amazon ECS bleu/vert, 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.

  2. Mettez à jour le service Amazon ECS existant en appelant l'UpdateServiceAPI et en définissant le paramètre deploymentController sur et le paramètre deploymentStrategy surBLUE_GREEN. ECS Spécifiez le ARNs groupe cible, le groupe cible alternatif, l'écouteur de production et un écouteur de test facultatif.

  3. Vérifiez que le service fonctionne comme prévu.

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

Lorsque vous utilisez cette approche, tenez compte des points suivants :

  • Les perturbations sont minimes. Cela se produit uniquement lors du changement de port d'Elastic Load Balancing.

  • Pour effectuer un rollback, vous devez annuler le changement de port d'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.

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

  2. Créez de nouveaux groupes cibles et de nouveaux é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 ECS comme contrôleur de déploiement, BLUE_GREEN comme stratégie de déploiement, et transmettez les règles ARNs pour les nouveaux groupes cibles et les nouveaux auditeurs.

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

  4. Vérifiez la nouvelle configuration et, si tout continue de fonctionner comme prévu, CodeDeploy supprimez-la.

Nouveau service avec un nouvel é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).

Lorsque vous utilisez cette approche, tenez compte des points suivants :

  • Cela 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 du service Amazon ECS et la stratégie de déploiement existants.

  • Les perturbations sont minimes. Cela se produit uniquement lors du changement de port d'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.

  1. Ne modifiez pas la CodeDeploy configuration existante intacte (équilibreur de charge, écouteurs, groupes cibles, service Amazon ECS et groupe de CodeDeploy déploiement).

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

  3. Créez un nouveau service en ECS tant que contrôleur de déploiement et en BLUE_GREEN tant que stratégie de déploiement, en pointant vers les nouvelles ressources de l'équilibreur de charge.

  4. Vérifiez la nouvelle configuration en la testant via le nouvel équilibreur de charge.

  5. Mettez à jour la configuration du proxy inverse pour acheminer le trafic vers le nouvel équilibreur de charge.

  6. 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' CodeDeploy CreateDeploymentAPI.

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