Debug School

Sai Akash
Sai Akash

Posted on

Helm Basic Concepts

What is Helm?

Helm is a package manager for kubernetes. It helps you to manage kubernetes applications with helm charts which help you define, install and upgrade even the most complex kubernetes.
Enter fullscreen mode Exit fullscreen mode

Write write 5 reason why we need helm?


1. Writing and maintaining k8s yaml manifest for all the required kubernetes object can be a time consuming and tedious task.
2. For simplest of deployments, you would need at least 3 yaml manifests with duplicated and hardcoded values.
3. It simplifies this process and create a single package that can be advertised to your cluster.
4. Helm automatically maintains a date base of all versions of your releases. so whenever something goes wrong during deployment, rolling back to previous version is just one command away.
5. Ability to re-use Helm charts across multiple environments.
Enter fullscreen mode Exit fullscreen mode

How Helm works?

Charts are used by the Helm application library to specify, produce, set up, and upgrade Kubernetes applications. Without utilizing the Kubernetes command-line interface (CLI) or having to memorize complex Kubernetes commands to control the cluster, Helm charts let you manage Kubernetes manifests.
Enter fullscreen mode Exit fullscreen mode

What are the components of helm eco systems?

The components of helm eco systems are
- Chart: It is a package of pre-configured Kubernetes resources.
- Release: It is a specific instance of a chart which has been deployed to the Kubernetes cluster using Helm.
- Repository: A repository is a storage environment where various charts of various applications can be stored and shared with other team members or across the teams.
Enter fullscreen mode Exit fullscreen mode

What are parallel tools of helm for another platform and programming Language?

Package Managers for Other Languages: 
Node.js (JavaScript/TypeScript): npm (Node Package Manager) 
Python: pip 
alpine: apk
debian/ubuntu : apt
Enter fullscreen mode Exit fullscreen mode

Explained a Diretory structure of helm

my-chart/
├── charts/
│   ├── dependency-chart1/
│   ├── dependency-chart2/
├── templates/
│   ├── deployment.yaml
│   ├── service.yaml
│   ├── configmap.yaml
├── values.yaml
├── Chart.yaml
├── README.md

Let's know about each of these directories and files:

- my-chart/: This is the root directory of your Helm chart. The name of this directory corresponds to the name of your chart.

- charts/: This directory contains sub-charts, which are other Helm charts that your main chart depends on. This is used for managing complex applications where you have multiple interconnected components. Each sub-directory under charts/ represents a separate Helm chart.

- templates/: This is a crucial directory that holds the template files for Kubernetes resources you want to deploy. These templates are written using the Go template language and allow you to parameterize and customize your resources. For example, you might have YAML files for deployments, services, config maps, etc.

- values.yaml: This file contains default configuration values for your chart. It's a way to provide default settings that can be overridden when the chart is installed or upgraded. These values can then be used in your template files to dynamically generate Kubernetes resources.

- Chart.yaml: This file contains metadata about your Helm chart. It includes information like the chart name, version, description, maintainers, and other relevant details. It's used by Helm to understand the properties of your chart.

- README.md: This is an optional file that provides documentation and instructions for using the Helm chart. It's a good place to explain how to install, configure, and use your application with the provided chart.
Enter fullscreen mode Exit fullscreen mode

Top comments (0)