Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

direct support for blue / green deployment pattern in helm #3518

Closed
burnettk opened this issue Feb 15, 2018 · 3 comments
Closed

direct support for blue / green deployment pattern in helm #3518

burnettk opened this issue Feb 15, 2018 · 3 comments

Comments

@burnettk
Copy link

The blue / green deployment pattern as described at http://container-solutions.com/kubernetes-deployment-strategies is not supported natively in kubernetes or helm. If it belonged anywhere, would it be helm or kubernetes? Would the helm maintainers potentially accept a blue/green pull request?

@bacongobbler
Copy link
Member

This actually happens to be something service meshes handle really well. I highly suggest taking a look at tools like istio if you require the need to perform blue/green deployments for your application as they are able to handle gradual roll-ins and roll-outs because they control the flow of traffic coming into your application.

Helm works more in the sense of a traditional package manager, upgrading charts from one version to the next in a graceful manner (thanks to pod liveness/readiness probes and deployment update strategies), much like how one expects something like apt upgrade to work. Blue/green deployments are a very different beast compared to the package manager style of upgrade workflows; blue/green sits at a level higher in the toolchain because the use cases around these deployments require step-in/step-out policies, gradual traffic migrations and rollbacks. Because of that, we decided that blue/green deployments are something out of scope for Helm, though a tool that utilizes Helm under the covers (or something parallel like istio) could more than likely be able to handle that use case.

For more context, see the discussion in these threads/blog posts:

Hope this helps!

@bacongobbler
Copy link
Member

Closing as answered but please re-open if there are further questions about b/g deployments. Thanks!

@ofersadgat
Copy link

@bacongobbler I understand where you are coming from, but I think that istio is the low level way of implementing what we would like. What I mean to say is that (at least to me) I describe my entire server deployment with helm charts. If I change a chart from one version to the next, its helm that reads the helm files and deploys all the changes. Now, it does this by interfacing with lower level components described in the chart, but nonetheless I'm not running kubectl or other commands myself directly to change things. Furthermore, I think it would be incorrect to do so because it means that the state of the world isnt within the realm of any one tool which will lead to errors when these tools dont work together. Or am I missing something?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants