aws / containers-roadmap

This is the public roadmap for AWS container services (ECS, ECR, Fargate, and EKS).
https://aws.amazon.com/about-aws/whats-new/containers/
Other
5.21k stars 320 forks source link

Feature Request: Blue/Green Deployments #702

Open gdowmont opened 4 years ago

gdowmont commented 4 years ago

Tell us about your request Support for blue/green deployments of ECS/Fargate in AppMesh

Which integration(s) is this request for? Fargate, ECS

Tell us about the problem you're trying to solve. What are you trying to do, and why is it hard? We need to implement blue/green deployment for our containers running inside AppMesh. Recently support has been added in CodeDeploy to perform blue/green in ECS/Fargate (link). This however is based around Load Balancers and Target Groups. We would like this support to include AppMesh routing as well.

Are you currently working around this issue? Using custom scripts to perform deployments.

shubharao commented 4 years ago

Integration with CodeDeploy is on our radar as a customer ask but we do not have a clear path to get this resourced/prioritized in the near term. However, we are evaluating how to provide a more native deployment experience with ECS.

shubharao commented 4 years ago

@gdowmont Are you using CodeDeploy? App mesh has started adding more deployment integrations - we worked with Weaveworks on a Flagger integration and plan to evaluate Spinnaker and Jenkins work this year. Would like to hear more from you (and other customers who are reading this thread) on what would be most helpful.

siamaksym commented 4 years ago

@shubharao Integration with Spinnaker would be very attractive as it would allow customers to keep their Spinnaker pipeline structure the same and more easily migrate to App Mesh.

Ritesh007 commented 4 years ago

@shubharao Codedeploy blue-green does the old task set termination after the waiting period or after any set of conditions. Appmesh on the other side routes traffic conditionally b/w multiple task definitions. Is there a way to integrate them together as a pipeline?

awsiv commented 4 years ago

@shubharao integration with Spinnaker would definitely be helpful... we are already using it for ecs/fargate and appmesh is being evaluated.. with this integration there is one less thing to worry about :)

gdowmont commented 4 years ago

@shubharao I have started implementing CodeDeploy this week as we are currently using ALB with target group/listener for each service as our ingress (until virtual gateway goes to GA). It works very well for adding new Fargate containers to new target group and shifting the traffic across.

However this does not work with app mesh. New instances are added to the same virtual node as existing version so the traffic inside the mesh is receiving both versions at the same time.

Also, when we switch from ALB to use virtual gateway, we will lose the ability to use Codedeploy since it depends on target groups. You have mentioned Flagger and Spinnaker, but we are interesting in using native tool that works really well for all other use cases.

dhartford commented 3 years ago

Has there been any more momentum on this? This request seems specific to ECS/fargate, which is also the ask I have around using as AWS-native capability as possible. Optionally, using AWS CodeDeploy native capability to manage blue-green deployments with the phases seems like a good fit (such as allowing something like the AfterAllowTraffic for controlled validation testing before promotion needed in more regulatory or consistency required solutions - similar to the linked solution for ALB) -- but I'm simply looking for some form of solution regardless of CodeDeploy or not that is as 'aws native' as possible without relying on specific infrastructure-as-code mechanics.

I personally do not need eks/e2/etc blue green support for appmesh, so if an initial pass works for AWS's own ECS with appmesh, great start!

If there is a 'stock' AWS design pattern with example github....step function with two appmesh-gateways (blue and green) and using lambdas within the step functions to deploy and rollback on failed automated/scripted testing, or promote after success...just something as 'AWS native' as possible would be the desire regardless of Infrastructure-as-code solution used (my usecase is terraform).

jsteinberg-rbi commented 1 year ago

Shocked neither this nor canaries are offered out of the box.