Ressources d'Application Load Balancer pour les déploiements blue/green - 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.

Ressources d'Application Load Balancer pour les déploiements blue/green

Pour utiliser les équilibreurs de charge d'application avec les blue/green déploiements Amazon ECS, vous devez configurer des ressources spécifiques qui permettent le routage du trafic entre les révisions de service bleues et vertes.

Groupes cibles

Pour les blue/green déploiements avec Elastic Load Balancing, vous devez créer deux groupes cibles :

  • Un groupe cible principal pour la révision du service bleu (trafic de production actuel)

  • Un autre groupe cible pour la révision du service écologique (nouvelle version)

Les deux groupes cibles doivent être configurés avec les paramètres suivants :

  • Type de cible : IP (pour Fargate EC2 ou awsvpc en mode réseau)

  • Protocole : HTTP (ou le protocole utilisé par votre application)

  • Port : port sur lequel votre application écoute (généralement 80 pour le protocole HTTP)

  • VPC : le même VPC que vos tâches Amazon ECS

  • Paramètres de vérification de l'état : configurés pour vérifier correctement l'état de santé de votre application

Au cours d'un blue/green déploiement, Amazon ECS enregistre automatiquement les tâches auprès du groupe cible approprié en fonction de l'étape de déploiement.

Exemple Création de groupes cibles pour un Application Load Balancer

Les commandes CLI suivantes créent deux groupes cibles à utiliser avec un Application Load Balancer dans le cadre d'un blue/green déploiement :

aws elbv2 create-target-group \ --name blue-target-group \ --protocol HTTP \ --port 80 \ --vpc-id vpc-abcd1234 \ --target-type ip \ --health-check-path / \ --health-check-protocol HTTP \ --health-check-interval-seconds 30 \ --health-check-timeout-seconds 5 \ --healthy-threshold-count 2 \ --unhealthy-threshold-count 2 aws elbv2 create-target-group \ --name green-target-group \ --protocol HTTP \ --port 80 \ --vpc-id vpc-abcd1234 \ --target-type ip \ --health-check-path / \ --health-check-protocol HTTP \ --health-check-interval-seconds 30 \ --health-check-timeout-seconds 5 \ --healthy-threshold-count 2 \ --unhealthy-threshold-count 2

Application Load Balancer

Vous devez créer un Application Load Balancer avec la configuration suivante :

  • Schéma : connecté à Internet ou interne, selon vos besoins

  • Type d'adresse IP : IPv4

  • VPC : le même VPC que vos tâches Amazon ECS

  • Sous-réseaux : au moins deux sous-réseaux dans des zones de disponibilité différentes

  • Groupes de sécurité : groupe de sécurité qui autorise le trafic sur les ports de l'écouteur

Le groupe de sécurité attaché à l'Application Load Balancer doit disposer d'une règle sortante qui autorise le trafic vers le groupe de sécurité associé à vos tâches Amazon ECS.

Exemple Création d'un équilibreur de charge Application Load Balancer

La commande CLI suivante crée un Application Load Balancer à utiliser dans un déploiement bleu/vert :

aws elbv2 create-load-balancer \ --name my-application-load-balancer \ --type application \ --security-groups sg-abcd1234 \ --subnets subnet-12345678 subnet-87654321

Écouteurs et règles

Pour les blue/green déploiements, vous devez configurer des écouteurs sur votre Application Load Balancer :

  • Écouteur de production : gère le trafic de production (généralement sur le port 80 ou 443)

    • Transfère initialement le trafic au groupe cible principal (révision du service bleu)

    • Après le déploiement, transfert le trafic vers le groupe cible alternatif (révision du service écologique)

  • Écouteur de test (facultatif) : gère le trafic de test pour valider la révision du service écologique avant de transférer le trafic de production

    • Peut être configuré sur un port différent (par exemple, 8080 ou 8443)

    • Transfère le trafic vers le groupe cible alternatif (révision du service écologique) pendant les tests

Au cours d'un blue/green déploiement, Amazon ECS met automatiquement à jour les règles du récepteur pour acheminer le trafic vers le groupe cible approprié en fonction de la phase de déploiement.

Exemple Création d'un écouteur de production

La commande CLI suivante crée un écouteur de production sur le port 80 qui transmet le trafic au groupe cible principal (bleu) :

aws elbv2 create-listener \ --load-balancer-arn arn:aws:elasticloadbalancing:region:123456789012:loadbalancer/app/my-application-load-balancer/abcdef123456 \ --protocol HTTP \ --port 80 \ --default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:region:123456789012:targetgroup/blue-target-group/abcdef123456
Exemple Création d'un écouteur de test

La commande CLI suivante crée un écouteur de test sur le port 8080 qui transmet le trafic au groupe cible alternatif (vert) :

aws elbv2 create-listener \ --load-balancer-arn arn:aws:elasticloadbalancing:region:123456789012:loadbalancer/app/my-application-load-balancer/abcdef123456 \ --protocol HTTP \ --port 8080 \ --default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:region:123456789012:targetgroup/green-target-group/ghijkl789012
Exemple Création d'une règle d'écoute pour le routage basé sur le chemin

La commande CLI suivante crée une règle qui transmet le trafic d'un chemin spécifique au groupe cible vert à des fins de test :

aws elbv2 create-rule \ --listener-arn arn:aws:elasticloadbalancing:region:123456789012:listener/app/my-application-load-balancer/abcdef123456/ghijkl789012 \ --priority 10 \ --conditions Field=path-pattern,Values='/test/*' \ --actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:region:123456789012:targetgroup/green-target-group/ghijkl789012
Exemple Création d'une règle d'écoute pour le routage basé sur les en-têtes

La commande CLI suivante crée une règle qui transmet le trafic avec un en-tête spécifique au groupe cible vert à des fins de test :

aws elbv2 create-rule \ --listener-arn arn:aws:elasticloadbalancing:region:123456789012:listener/app/my-application-load-balancer/abcdef123456/ghijkl789012 \ --priority 20 \ --conditions Field=http-header,HttpHeaderConfig='{Name=X-Environment,Values=[test]}' \ --actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:region:123456789012:targetgroup/green-target-group/ghijkl789012

Configuration du service

Vous devez disposer des autorisations nécessaires pour autoriser Amazon ECS à gérer les ressources de l'équilibreur de charge dans vos clusters en votre nom. Pour de plus amples informations, veuillez consulter Rôle IAM de l'infrastructure Amazon ECS pour les équilibreurs de charge.

Lorsque vous créez ou mettez à jour un service Amazon ECS pour blue/green des déploiements avec Elastic Load Balancing, vous devez spécifier la configuration suivante.

Remplacez le user-input par vos valeurs.

Les principaux composants de cette configuration sont les suivants :

  • targetGroupArn: ARN du groupe cible principal (révision du service bleu).

  • alternateTargetGroupArn: ARN du groupe cible alternatif (révision du service vert).

  • productionListenerRule: l'ARN de la règle d'écoute pour le trafic de production.

  • roleArn: ARN du rôle qui permet à Amazon ECS de gérer les ressources Elastic Load Balancing.

  • strategy: défini sur pour activer BLUE_GREEN les déploiements bleu/vert.

  • bakeTimeInMinutes: durée pendant laquelle les révisions du service bleu et vert sont exécutées simultanément après le déplacement du trafic de production.

  • TestListenerRule: l'ARN de la règle d'écoute pour le trafic de test. Ce paramètre est facultatif.

{ "loadBalancers": [ { "targetGroupArn": "arn:aws:elasticloadbalancing:region:123456789012:targetgroup/primary-target-group/abcdef123456", "containerName": "container-name", "containerPort": 80, "advancedConfiguration": { "alternateTargetGroupArn": "arn:aws:elasticloadbalancing:region:account-id:targetgroup/alternate-target-group/ghijkl789012", "productionListenerRule": "arn:aws:elasticloadbalancing:region:account-id:listener-rule/app/load-balancer-name/abcdef123456/listener/ghijkl789012/rule/mnopqr345678", "roleArn": "arn:aws:iam::123456789012:role/ecs-elb-role" } } ], "deploymentConfiguration": { "strategy": "BLUE_GREEN", "maximumPercent": 200, "minimumHealthyPercent": 100, "bakeTimeInMinutes": 5 } }

Flux de trafic pendant le déploiement

Lors d'un blue/green déploiement avec Elastic Load Balancing, le trafic circule dans le système comme suit :

  1. État initial : tout le trafic de production est acheminé vers le groupe cible principal (révision du service bleu).

  2. Déploiement de la révision du service écologique : Amazon ECS déploie les nouvelles tâches et les enregistre auprès du groupe cible alternatif.

  3. Trafic de test : si un écouteur de test est configuré, le trafic de test est acheminé vers le groupe cible alternatif pour valider la révision du service vert.

  4. Transfert du trafic de production : Amazon ECS met à jour la règle du récepteur de production pour acheminer le trafic vers le groupe cible alternatif (révision du service vert).

  5. Temps de cuisson : durée pendant laquelle les révisions du service bleu et vert sont exécutées simultanément après le déplacement du trafic de production.

  6. Achèvement : Après un déploiement réussi, la révision du service bleu est interrompue.

Si des problèmes sont détectés lors du déploiement, Amazon ECS peut automatiquement revenir en arrière en redirigeant le trafic vers le groupe cible principal (révision du service bleu).