dvallin / spacegun

Version controlled multi-cluster deployment manager
MIT License
11 stars 3 forks source link

Canary Deployments #84

Open dvallin opened 5 years ago

dvallin commented 5 years ago

Is your feature request related to a problem? Please describe. It is not clear what is needed to do canary releases. Perhaps it is already possible with the current feature set. Perhaps we need finer control for that.

Describe the solution you'd like A example setup for canary deployment. Perhaps additional pipeline steps.

dvallin commented 5 years ago

Possibly close to an actual solution: First you would need a load balancer that distributes traffic to your canary pods and your stable pods that are getting most of the load. This would be done outside Spacegun (we use Terraform for that). Then you would create two deployments with some labels for the load balancer. In Spacegun, you would write one deployment pipeline that deploys your newest version to the canary deployment. Then in a second deployment pipeline, you would add a cluster probe to the pipeline (see 'Deploy only working clusters' in the readme) and deploy the image from the canary to your service that runs with higher replication. You would need an endpoint that returns a 200 response if your canary is still fine (perhaps by looking at some monitoring data) for the cluster probe step to call. But as I said, I have never tried something like that before. Perhaps I am missing something here?

dvallin commented 5 years ago

We also need a way to make this gradual and roll back in case of error. So this feature seems to be a bit more than just putting together what is already there!

stefansedich commented 5 years ago

@dvallin we use Ambassador for canary deployments so we can have the ability to send 10% of traffic to the canary and then gradually dial it up. Could also could use Istio here, but went with Ambassador for a simpler setup.