Helm Chart

 


  

What is Helm and Helm Charts?

Helm is a package manager for Kubernetes that simplifies the deployment and management of applications on Kubernetes clusters. Helm uses "charts" to define, install, and upgrade even the most complex Kubernetes applications.

Helm Components

  1. Helm Client: The command-line tool that users interact with.
  2. Tiller (Helm v2): The server-side component that interacts with the Kubernetes API server. Note: Tiller has been removed in Helm v3.
  3. Chart: A package of pre-configured Kubernetes resources.
  4. Release: An instance of a chart running in a Kubernetes cluster.

Helm Charts

A Helm chart is a collection of files that describe a related set of Kubernetes resources. It includes templates for Kubernetes manifests and configuration files that can be customized during deployment.

Helm Chart Structure

A typical Helm chart directory structure looks like this:


mychart/ Chart.yaml # Metadata about the chart values.yaml # Default configuration values for the chart charts/ # Directory containing any dependencies templates/ # Directory containing Kubernetes manifest templates README.md # Optional: Detailed information about the chart .helmignore # Optional: Patterns to ignore when packaging the chart

Key Files

  • Chart.yaml: Contains metadata about the chart such as the name, version, and description.
  • values.yaml: Default configuration values that can be overridden during deployment.
  • templates/: Contains template files that Helm uses to generate Kubernetes manifests. These files use the Go templating language.

Steps to Deploy an Application Using Helm

1. Install Helm

First, you need to install Helm on your local machine. You can download and install Helm from the official Helm website.

For example, on macOS using Homebrew:


brew install helm

2. Add a Helm Repository

Helm repositories are collections of Helm charts. By default, Helm comes configured with the stable repository. You can add additional repositories as needed.


helm repo add stable https://charts.helm.sh/stable helm repo update

3. Search for a Chart

You can search for a specific chart using the helm search command.


helm search repo nginx

4. Install a Chart

To deploy an application, you use the helm install command followed by a release name and the chart name.


helm install my-release stable/nginx

In this command:

  • my-release is the name of the release.
  • stable/nginx is the chart to install from the stable repository.

Helm will download the chart, render the templates using the values in values.yaml and any overrides you provide, and then install the resulting resources into your Kubernetes cluster.

5. Check the Deployment

After installation, you can check the status of the deployment using the helm list and kubectl commands.


helm list kubectl get all

6. Customizing the Installation

You can customize the deployment by providing your own values to override the defaults in values.yaml. This is done using the --set flag or by providing a custom values file.

Using --set:


helm install my-release stable/nginx --set service.type=NodePort

Using a custom values file:


helm install my-release -f my-values.yaml stable/nginx

7. Upgrading a Release

To upgrade an existing release, use the helm upgrade command:


helm upgrade my-release stable/nginx

You can also provide updated values during an upgrade:


helm upgrade my-release -f updated-values.yaml stable/nginx

8. Uninstalling a Release

To uninstall a release and delete the associated resources, use the helm uninstall command:

helm uninstall my-release

Comments