Helm
Helm is package manager for K8s application. It can be compare with YUM and APT in Linux or Homebrew for Mac. We can install K8s application by add repository and then install. If we want to package own application the deploy in K8s which might have complex K8s component setup. Helm can help us by organized it using template.
Why we need Helm
When we deploy appliaction in K8s, usually we have to deploy Deployment, Service, ConfigMap and so on, depends on application design which is hard to do manually. Helm helps to simplify those step by provide template and ability to inject variable(value) to template.
Terminology
- Chart : It is packaging format. Including a set of k8s definition depends on application and Chart definition file.
Chart file structure (only important)
1
2
3
4
5
6
7
8
helm/
Chart.yaml # Contain metadata of Chart. Eg. Chart name, version
values.yaml # default configuration
templates/ # K8s manifest
deployment.yaml
service.yaml
ingress.yaml
...
Helm dependencies
In case that we want to add another Helm application as dependency, we can add its information in Chart.yaml. For example, Create own ELK Chart that consist of Kinaba, ElasticSearch and Logstash by declear them as dependencies. Value can pass down to subchart by add prefix to value.
Install
1
2
3
4
When install parameter in template will be replaced by value in values.yaml
templates/
+ => Kubernetes manifest => Go into K8s
values.yaml