Valider l'état d'un ECS service Amazon avant le déploiement - 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.

Valider l'état d'un ECS service Amazon avant le déploiement

Le type de déploiement bleu/vert utilise le modèle de déploiement bleu/vert 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. Valider l'état d'un ECS service Amazon avant le déploiement

Le trafic peut être modifié de trois manières lors d'un déploiement bleu/vert :

  • Canary — Le trafic est décalé en deux étapes. 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 décalé par incréments égaux, avec un nombre égal de minutes 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.

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

Les composants suivants sont utilisés par Amazon lorsqu'un service ECS utilise le type de déploiement bleu/vert : CodeDeploy

CodeDeploy candidature

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 :

  • ECSCluster et service Amazon

  • Groupe cible de l'équilibreur de charge et informations sur le port d'écoute

  • 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 pouvant être configurée pour arrêter les déploiements

  • SNSou Paramètres CloudWatch des événements 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: Transfère immédiatement tout le trafic vers le ECS conteneur Amazon mis à jour

  • CodeDeployDefault. ECSLinear10 PercentEvery 1Minutes : déplace 10 % du trafic toutes les minutes jusqu'à ce que tout le trafic soit transféré.

  • CodeDeployDefault. ECSLinear10 à PercentEvery 3 minutes : déplace 10 % du trafic toutes les 3 minutes jusqu'à ce que tout le trafic soit transféré.

  • CodeDeployDefault. ECSCanary10 % 5 minutes : déplace 10 % du trafic dès le premier incrément. Les 90 % restants sont déployés 5 minutes plus tard.

  • CodeDeployDefault. ECSCanary10 % 15 minutes : déplace 10 % du trafic dès le 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 la définition complète ARN de la 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 plate-forme a été mise à jour dans la définition du service, vous devez également spécifier ces détails 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

Tenez compte des éléments suivants lorsque vous utilisez le type de déploiement bleu/vert :

  • Lorsqu'un ECS service Amazon utilisant le type de déploiement bleu/vert est initialement créé, un ensemble de ECS tâches Amazon 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, votre trafic de test est CodeDeploy acheminé vers l'ensemble de tâches de remplacement 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 Service Auto Scaling et le type de déploiement bleu/vert, la scalabilité automatique n'est pas bloquée pendant un déploiement, mais le déploiement peut échouer dans certaines circonstances. Ce comportement est décrit plus en détail ci-dessous.

    • Si un service évolue et qu'un déploiement démarre, l'ensemble de tâches vertes est créé et CodeDeploy attendra jusqu'à une heure pour qu'il atteigne un état stable et ne transférera aucun trafic tant que ce n'est pas le cas.

    • Si un service est en cours de déploiement bleu/vert et qu'un événement de mise à l'échelle se produit, le trafic continue d'être déplacé pendant 5 minutes. Si le service n'atteint pas son état stable dans les 5 minutes, il CodeDeploy arrêtera le déploiement et le marquera comme un échec.

    • Si un service est en cours de déploiement bleu/vert et qu'un événement de mise à l'échelle se produit, le nombre de tâches souhaité peut être défini sur une valeur inattendue. Cela est dû au fait que la scalabilité automatique considère le nombre de tâches en cours comme la capacité actuelle, ce qui représente le double du nombre approprié de tâches utilisées dans le calcul du nombre de tâches souhaité.

  • Les tâches qui utilisent le type de lancement 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 des groupes cibles doit être le groupe cible initial défini pour l'équilibreur de charge lors de la création du ECS service Amazon. 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 ECS service Amazon, CodeDeploy un ensemble de tâches de remplacement (ou ensemble de tâches vertes) est créé dans le déploiement. Si vous avez ajouté un écouteur de test à l'équilibreur de charge, votre trafic de test est CodeDeploy acheminé vers l'ensemble de tâches de remplacement. Cela indique le moment où vous pouvez exécuter les tests de validation. CodeDeployRedirige ensuite le trafic de production de l'ensemble de tâches d'origine vers l'ensemble de tâches de remplacement en fonction des paramètres de réacheminement du trafic pour le groupe de déploiement.

IAMAutorisations requises

Les déploiements bleu/vert sont rendus possibles grâce à la combinaison d'Amazon et. ECS CodeDeploy APIs Les utilisateurs doivent disposer des autorisations appropriées pour accéder à ces services avant de pouvoir utiliser les déploiements ECS bleu/vert d'Amazon dans AWS Management Console ou avec le ou. AWS CLI SDKs

Outre les IAM autorisations standard pour créer et mettre à jour des services, Amazon a ECS besoin des autorisations suivantes. Ces autorisations ont été ajoutées à la AmazonECS_FullAccess IAM politique. Pour de plus amples informations, veuillez consulter Amazon ECS _ FullAccess.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "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" ], "Resource": ["*"] } ] }
Note

Outre les ECS autorisations Amazon standard requises pour exécuter des tâches et des services, les utilisateurs ont également besoin d'iam:PassRoleautorisations pour utiliser IAM des rôles pour les tâches.

CodeDeploy nécessite des autorisations pour appeler Amazon ECSAPIs, modifier votre Elastic Load Balancing, invoquer des fonctions Lambda et décrire les CloudWatch alarmes, ainsi que des autorisations pour modifier le nombre souhaité pour votre service en votre nom. Avant de créer un ECS service Amazon utilisant le type de déploiement bleu/vert, vous devez créer un IAM rôle ()ecsCodeDeployRole. Pour de plus amples informations, veuillez consulter ECS CodeDeploy IAMRôle Amazon.

Les exemples Exemple de mise à jour ECS du service Amazon IAM de politiques Créer un exemple ECS de service Amazon et de politiques indiquent les autorisations requises pour que les utilisateurs puissent utiliser les déploiements ECS bleu/vert d'Amazon sur le. AWS Management Console