Helm 2.0 stable release
deis.com
deis.com
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.
Is it useful to package your own applications for deployment into Kubernetes?
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
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.
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.
Think about having a redis cluster. You need 6 redis containers (at minimum), known names to add to your connection settings in your apps, a job container to run redis-trib, etc.
Using helm has let us define a redis cluster configuration that we know works well and anyone at the company can now launch one just by flipping out the pod (container) names, setting a namespace, and configuring memory and CPU limits.
For monolithic applications this stuff won't be super useful (or for simple software applications) but in a modern SOA, it saves us tons of time. Need a HA Postgres setup for your new microservice? Great, just change the name of the database pods to match your service name and run "helm install -f my-service-db.yaml postgres"
For us at Help.com, it's the new Ansible. We run everything in kubernetes and Helm ensures we have consistent deployments of containers for database clusters, redis clusters, message queue clusters, etc.
In addition, the delete feature is amazing when developing your configs. Previously we had to run a ton of kubectl commands to clean up after testing runs or put stuff in a specific namespace which we deleted and recreated. With Helm, we can simply delete a Helm release and it takes care of removing the pods, services, deployments, secrets, etc.