View a markdown version of this page

CodeDeploy blue/green déploiements pour Amazon ECS - 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.

CodeDeploy blue/green déploiements pour Amazon ECS

Nous vous recommandons d'utiliser le blue/green déploiement Amazon ECS. Pour de plus amples informations, veuillez consulter Création d'un blue/green déploiement Amazon ECS.

Le type de blue/green déploiement utilise le modèle de blue/green déploiement contrôlé par CodeDeploy. Ce type de déploiement permet de vérifier un nouveau déploiement d'un service avant d'y envoyer du trafic de production. Pour plus d'informations, consultez le contenu du guide CodeDeploy de l'AWS CodeDeploy utilisateur. Validez l'état d'un service Amazon ECS avant le déploiement

Le trafic peut être modifié de trois manières au cours d'un blue/green déploiement :

  • Canary : le trafic est transféré en deux incréments. Vous pouvez choisir parmi les options canary prédéfinies qui définissent le pourcentage de trafic déplacé vers l'ensemble de tâches mises à jour dans le premier incrément, et l'intervalle (en minutes) avant que le trafic restant soit déplacé dans le second incrément.

  • Linéaire : le trafic est transféré en incréments égaux, avec un nombre de minutes égal entre chaque incrément. Vous pouvez choisir parmi les options linéaires prédéfinies qui définissent le pourcentage de trafic déplacé pour chaque incrément et le nombre de minutes entre chaque incrément.

  • All-at-once— Tout le trafic est transféré de l'ensemble de tâches d'origine à l'ensemble de tâches mis à jour en une seule fois.

Amazon ECS utilise CodeDeploy les composants suivants lorsqu'un service utilise le type de blue/green déploiement :

CodeDeploy application

Une collection de CodeDeploy ressources. Comprend un ou plusieurs groupes de déploiement.

CodeDeploy groupe de déploiement

Paramètres de déploiement. Regroupe les éléments suivants :

  • Cluster et service Amazon ECS

  • Groupe cible de l’équilibreur de charge et informations sur l’écouteur

  • Stratégie de restauration du déploiement

  • Paramètres de réacheminement du trafic

  • Paramètres d’arrêt de la révision initiale

  • Configuration de déploiement

  • CloudWatch configuration des alarmes qui peut être configurée pour arrêter les déploiements

  • Paramètres SNS ou CloudWatch Events pour les notifications

Pour de plus amples informations, veuillez consulter Utilisation des groupes de déploiement dans CodeDeploy dans le Guide de l'utilisateur AWS CodeDeploy .

CodeDeploy configuration de déploiement

Spécifie comment CodeDeploy achemine le trafic de production vers votre ensemble de tâches de remplacement lors d'un déploiement. Les configurations de déploiement linéaire et canary prédéfinies suivantes sont disponibles. Vous pouvez également créer des déploiements canary et linéaires personnalisés. Pour obtenir de plus amples informations, consultez Utilisation des configurations de déploiement dans le Guide de l'utilisateur AWS CodeDeploy .

  • CodeDeployDefault.ECSAllAtOnce: déplace tout le trafic vers le conteneur Amazon ECS mis à jour en une seule fois

  • CodeDeployDefault.ECSLinear10PercentEvery1Minutes: déplace 10 % du trafic toutes les minutes jusqu'à ce que tout le trafic soit modifié.

  • CodeDeployDefault.ECSLinear10PercentEvery3Minutes: déplace 10 % du trafic toutes les 3 minutes jusqu'à ce que tout le trafic soit modifié.

  • CodeDeployDefault.ECSCanary10Percent5Minutes: déplace 10 % du trafic lors du premier incrément. Les 90 % restants sont déployés cinq minutes plus tard.

  • CodeDeployDefault.ECSCanary10Percent15Minutes: déplace 10 % du trafic lors du premier incrément. Les 90 % restants sont déployés 15 minutes plus tard.

Révision

Une révision est le fichier de spécification de CodeDeploy l'application (AppSpec fichier). Dans le AppSpec fichier, vous spécifiez l'ARN complet de la définition de tâche ainsi que le conteneur et le port de votre ensemble de tâches de remplacement où le trafic doit être acheminé lors de la création d'un nouveau déploiement. Le nom du conteneur doit être un des noms de conteneur référencés dans votre définition de tâche. Si la configuration réseau ou la version de la plate-forme ont été mises à jour dans la définition du service, vous devez également spécifier ces informations dans le AppSpec fichier. Vous pouvez également spécifier les fonctions Lambda à exécuter au cours des événements de cycle de vie du déploiement. Les fonctions Lambda vous permettent d'exécuter des tests et de renvoyer des métriques pendant le déploiement. Pour plus d'informations, consultez la section Référence des AppSpec fichiers dans le Guide de AWS CodeDeploy l'utilisateur.

Considérations

Lorsque vous utilisez le type de blue/green déploiement, tenez compte des points suivants :

  • Lorsqu'un service Amazon ECS utilisant le type de blue/green déploiement est initialement créé, un ensemble de tâches Amazon ECS est créé.

  • Vous devez configurer le service pour utiliser un équilibreur de charge Application Load Balancer ou un Network Load Balancer. Les exigences de l'équilibreur de charge sont les suivantes :

    • Vous devez ajouter un port d'écoute de production à l'équilibreur de charge, utilisé pour acheminer le trafic de production.

    • Vous pouvez également ajouter à l'équilibreur de charge un port d'écoute de test, utilisé pour acheminer le trafic de test. Si vous spécifiez un écouteur de test, CodeDeploy achemine votre trafic de test vers la tâche de remplacement définie lors d'un déploiement.

    • Les ports d'écoute de production et de test doivent appartenir au même équilibreur de charge.

    • Vous devez définir un groupe cible pour l'équilibreur de charge. Le groupe cible achemine le trafic vers la tâche initiale dans un service via le port d'écoute de production.

    • Lorsqu'un Network Load Balancer est utilisé, seule la configuration de déploiement CodeDeployDefault.ECSAllAtOnce est prise en charge.

  • Pour les services configurés pour utiliser la mise à l'échelle automatique des services et le type de blue/green déploiement, la mise à l'échelle automatique n'est pas bloquée pendant un déploiement, mais celui-ci peut échouer dans certaines circonstances. Ce comportement est décrit plus en détail ci-dessous.

    • Si un service est en cours d'évolutivité et qu'un déploiement démarre, le jeu de tâches vert est créé et CodeDeploy attend jusqu'à une heure pour que le jeu de tâches vert atteigne un état stable. Il ne modifiera pas le trafic tant qu'il ne le sera pas.

    • Si un service est en cours de blue/green déploiement et qu'un événement de dimensionnement se produit, le trafic continuera de changer pendant 5 minutes. Si le service n'atteint pas un état stable dans les 5 minutes, le déploiement CodeDeploy sera arrêté et le marquera comme un échec.

  • Les tâches qui utilisent Fargate ou les types de contrôleur de déploiement CODE_DEPLOY ne prennent pas en charge la stratégie de planification DAEMON.

  • Lorsque vous créez initialement une CodeDeploy application et un groupe de déploiement, vous devez spécifier les éléments suivants :

    • Vous devez définir deux groupes cibles pour l'équilibreur de charge. L'un d'eux doit être le groupe cible initial défini pour l'équilibreur de charge lors de la création du service Amazon ECS service. La seule exigence relative au second groupe cible est qu'il ne peut pas être associé à un autre équilibreur de charge que celui utilisé par le service.

  • Lorsque vous créez un CodeDeploy déploiement pour un service Amazon ECS, CodeDeploy crée un ensemble de tâches de remplacement (ou un ensemble de tâches vert) dans le déploiement. Si vous avez ajouté un écouteur de test à l'équilibreur de charge, CodeDeploy achemine votre trafic de test vers l'ensemble de tâches de remplacement. Cela indique le moment où vous pouvez exécuter les tests de validation. Ensuite, CodeDeploy réachemine le trafic de production depuis l'ensemble de tâches initial vers l'ensemble des tâches de remplacement en fonction des paramètres de redirection du trafic définis pour le groupe de déploiement.

Autorisations IAM requises

Blue/green les déploiements sont rendus possibles par une combinaison d'Amazon ECS et d' CodeDeploy API. Les utilisateurs doivent disposer des autorisations appropriées pour ces services avant de pouvoir utiliser les blue/green déploiements Amazon ECS dans Console de gestion AWS ou avec les AWS CLI kits SDK.

En plus des autorisations IAM standard nécessaires à la création et à la mise à jour de services, Amazon ECS exige les autorisations suivantes. Ces autorisations ont été ajoutées à la politique IAM AmazonECS_FullAccess. Pour de plus amples informations, veuillez consulter 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

Note

Outre les autorisations Amazon ECS standard nécessaires pour exécuter des tâches et des services, les utilisateurs doivent également disposer d'autorisations iam:PassRole pour pouvoir utiliser les rôles IAM dans le cadre des tâches.

CodeDeploy a besoin des autorisations nécessaires pour appeler les API Amazon ECS, modifier votre Elastic Load Balancing, invoquer les fonctions Lambda et décrire les CloudWatch alarmes, ainsi que des autorisations pour modifier le nombre souhaité de votre service en votre nom. Avant de créer un service Amazon ECS qui utilise le type de blue/green déploiement, vous devez créer un rôle IAM (ecsCodeDeployRole). Pour de plus amples informations, veuillez consulter Rôle CodeDeploy IAM d'Amazon ECS.