4 ms·
Helm 2.0 stable release
- wstrange 10y agoFor those wondering what helm is all about: Helm is a package manager for Kubernetes. It allows you to search for and install "charts" - which are pre-packaged applications that can be deployed on Kubernetes. I have been using it for the past month - and am really enjoying it. Congrats to the helm team.
- bryanlarsen 10y agoIt sounds really useful to install other people's stuff into Kubernetes. Is it useful to package your own applications for deployment into Kubernetes?
- slack 10y agoLots of folks have started integrating helm into their own internal deployment pipelines. Describing your own software as a helm chart gives you all the benefits of versioning, upgrades, rollbacks, lifecycle hooks, and release tracking. Also drastically cuts down on all the `kubectl {create,apply} -f ...` hacks that folks are using today. To get a sense of what that might look like, check out Lachlan Evenson's demo of a helm-based ci/cd pipline: https://www.youtube.com/watch?v=NVoln4HdZOY https://www.youtube.com/watch?v=NVoln4HdZOY
- charlieegan3 10y agoWhile this is a little light on the Helm specific details it's a good example. Thanks for sharing this.
- swozey 10y agoSay your application contained 5 nodejs containers, 5 postgres containers, 10 load balancers and 10 sets of secrets. You'd put those into a helm repo (git) and do a helm install and you'd have the app running and deployed as a named and versioned helm deployment, like wandering-goat. I plan on incorporating it into my CI/CD pipelines at some point but not quite there yet.
- AlexB138 10y agoI don't currently use K8s, but am planning to get into it soon. Could you clarify the difference or advantage between using a Kubernetes specific package manager like Helm vs using a container repository? Isn't part of the point of containers to use prebuilt immutable containers?
- swozey 10y agoI use Helm to deploy containers to various environments and clusters in k8s using its gotepl/sprig template system. The last thing that I want to do with my containers is to lock my environment variables inside of them, then I'm going to need multiple sets of containers per microservice (prod, staging, yaddayadda) and have to go through the process of docker commit, push, etc. Beyond that there are also a lot of Kubernetes specific variables that you want to be able to define before you launch pods. You often need to set namespaces, resource limits, labels, persistentDisks, etc, things that would not be defined in any docker container at all. I also use Helm to template that out. With Helm you can package the network config (load balancers, services), volumes, secrets, etc very easily. These are things that have nothing to do with the actual docker container lifecycle. There are a lot of kubernetes objects that need to be configured for an actual deployment.
- AlexB138 10y agoThanks for the answer. So, again, coming from a place of having done a couple passes of the basics, but otherwise completely ignorant. What is the advantage of having that kind of config info baked into a package vs having it in etcd? Again, I really appreciate it.
- joseph 10y agoWhen you deploy with Kubernetes, you need some yaml or json files to define the configuration of your stack. Depending on the complexity of the stack, this could grow to a significant number of files. Helm allows this collection of files to be put into a single shareable package. Then, rather than calling the 'kubectl' command a number of times to deploy each individual component, you'd make one call to Helm to do it all at once.
- deleted 10y ago[deleted]
- steveeq1 10y agoArrggh, I got all excited because I thought they were talking about "Helm for emacs"
- bitforger 10y agoSame