Kubernetes Helm: Not Only a Package Manager
According to official definition, Helm is a tool for managing Kubernetes packages called charts.
Helm is a Package Manager for Kubernetes.
Package Manager, What the heck is that..?.
So, breaking it further
Helm is for Kubernetes is what Playstore for Android,
Helm is for K8s is what Appstore for IPhones.
Helm is for K8s is what apt-get
for Ubuntu.
Architecture
Helm packages are referred as Charts.
$ helm create my_chart
It creates a scaffold for a Package.
charts: It is a directory having collection of chart dependencies. Files are generally compressed and are of .tgz
format.
On command, $ helm dependency update
All Dependencies of current Project defined in either Chart.yaml or requirements.yaml gets downloaded into this chart
directory
Chart.yaml : It contains Meta Data of your App Eg. name, version, description etc. Additionally it may contain dependencies that our Chart (package) relies on.
values.yaml: All templates default values, variable values defined here. It may includes Replica count, ClusterIP, defaut image etc.
template/x.yaml: These contains Dynamic Templates whose values get filled during installation. Here variables are used in GoLang templating language which are defined in values.yaml.
_helpers.tpl: Optional file, It defines template functions that can be repeated all over and can be imported in yaml files.
templates/tests/test.yaml: Run Helm tests without installing Chart. Tests like any API availability or database availability can be written here.
Installing Packages
$ helm install my_chart
You can create Helm Charts to deploy your own apps on Kubernetes and as its Graduating Project in CNCF, it will soon be a recommended way to deploy Apps on Kubernetes.
Packaging an app helps you to deploy it in One single command. It is a versioned, hence it enables us to Update or Rollback changes seamlessly.
Other Projects by Helm:
Helm Hub: Share charts with World via Helm hub. Just a pull request on this repository and you are done.
Monocular: Codebase that powers Helm Hub. Self host it and makes Charts availability Internal to Organisation.
ChartMuseum: ChartMuseum is an open-source, easy to deploy,
Helm Chart Repository server. It can be used to Host your own Helm Chart Repository.
ChartTesting: CLI tool for linting and testing Helm charts.
ChartReleaser: Helps Turn GitHub Repositories into Helm Chart Repositories.
Helmfile: Configuration Manager for Helm Charts.
Resources to learn more
Catch me on LinkedIn.