Kubernetes Helm: Not Only a Package Manager

Deepak Sharma
tech_vichaar
3 min readMay 13, 2020

--

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.

Helm Chart

charts: It is a directory having collection of chart dependencies. Files are generally compressed and are of .tgzformat.

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

Helm Deployment Flow

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.

--

--

Deepak Sharma
tech_vichaar

Software Engineer @RedHat. Loves R&D, DevOps, and Engineering. Football and Chess are Love. https://finddeepak.com