What is Helm in Kubernetes? Helm and Helm Charts explained  | Kubernetes Tutorial 23

What is Helm in Kubernetes? Helm and Helm Charts explained | Kubernetes Tutorial 23

Introduction to Helm

In this section, the speaker introduces the main concepts of Helm and explains its use cases and benefits.

What is Helm?

  • Helm is a package manager for Kubernetes.
  • It allows packaging collections of Kubernetes YAML files into bundles called Helm charts.
  • Helm charts can be distributed in public and private repositories.
  • Using Helm, you can create your own charts or download and use existing ones from repositories.

Use Cases of Helm

  • Helm is commonly used for deploying complex applications like databases (e.g., Elasticsearch, MongoDB) and monitoring tools (e.g., Prometheus).
  • Charts for these common deployments are available in public repositories.
  • Companies also create private repositories to share charts internally within their organizations.

Benefits of Using Helm

  • Simplifies the deployment process by providing pre-packaged configurations.
  • Saves time by avoiding manual searching and collecting of YAML files from the internet.
  • Allows easy sharing and reuse of configurations through public and private repositories.

Templating Engine in Helm

This section explains how Helm acts as a templating engine, allowing the creation of reusable templates for deploying microservices in Kubernetes.

Templating Engine Functionality

  • With multiple microservices deployed in a Kubernetes cluster, each with similar deployment and service configurations, writing separate YAML files for each service becomes repetitive.
  • Using Helm's templating engine, a common blueprint can be defined with dynamic values replaced by placeholders.
  • The template file references an external configuration file called values.yaml, where specific values are defined.

Conclusion

The speaker concludes by summarizing the main points discussed about Helm's features and benefits.

Summary

  • Helm is a package manager for Kubernetes that simplifies the deployment process.
  • Helm charts are bundles of Kubernetes YAML files that can be shared and reused.
  • Helm acts as a templating engine, allowing the creation of reusable templates for deploying microservices.
  • Using Helm saves time and effort by providing pre-packaged configurations and avoiding manual searching for YAML files.

The transcript is already in English, so there is no need to respond in a different language.

Using Helm Charts for Dynamic Value Configuration

In this section, the speaker discusses how Helm charts can be used to define and configure values dynamically in template files. This allows for easier management of values across multiple microservices and different Kubernetes clusters.

Structure of a Helm Chart

  • A Helm chart is made up of several directories and files.
  • The top-level directory is the name of the chart.
  • Inside the chart directory, there are:
  • Chart.yaml: Contains meta information about the chart such as name and version.
  • values.yaml: Configures values for the template files. These can be overridden later.
  • charts/: Stores dependencies if the chart depends on other charts.
  • templates/: Contains the template files that will be filled with values during deployment.

Injecting Values into Helm Templates

  • Values defined in values.yaml serve as default configurations that can be overridden.
  • Values can be overridden by providing an alternative values file using the --values flag when executing helm install.
  • Alternatively, individual values can be provided using the --set flag on the command line.

Release Management with Helm

  • In Helm version 2, there is a client-server setup where Tiller (the server) runs in a Kubernetes cluster.
  • Tiller stores a copy of each configuration for future reference, creating a history of chart executions.
  • When upgrading a chart, changes are applied to the existing deployment instead of removing it and creating a new one.
  • If an upgrade goes wrong, it can be rolled back using the helm rollback command.

Differences Between Helm Versions 2 & 3

This section highlights some differences between Helm versions 2 and 3 regarding release management.

Tiller in Helm Version 2

  • In Helm version 2, the client-server setup includes Tiller as the server component.
  • Tiller receives the YAML files from the Helm client and creates components in the Kubernetes cluster based on those files.
  • Tiller stores a copy of each configuration for future reference, enabling release management.

Security Concerns with Tiller

  • The presence of Tiller in Helm version 2 poses security concerns.
  • Tiller has excessive permissions within the Kubernetes cluster, allowing it to create, update, and delete components.
  • This architecture raises security issues due to the level of access granted to Tiller.

Removal of Tiller in Helm Version 3

  • In Helm version 3, the architecture was simplified by removing Tiller.
  • Helm is now a simple binary without a separate server component.
  • This change addresses the security concerns associated with Tiller's excessive permissions.
Video description

What is Helm and Helm Charts? When to use Helm and how to use it. Using Helm in practice 🙅🏼‍♀️ ► https://youtu.be/JGtJj_nAA2s Probably you already heard of Helm and Helm Charts when using or learning Kubernetes. But what is Helm and a Helm Chart exactly? When and how to use it? And why it's so popular? In this Kubernetes Tutorial I explain exactly that - the main concepts and features of Helm, the package manager of Kubernetes. This Helm Tutorial covers the following topics. ▬▬▬▬▬▬ T I M E S T A M P S ⏰ ▬▬▬▬▬▬ 0:00 - Intro 0:37 - Package Manager and Helm Charts 4:45 - Templating Engine 7:13 - Use Cases for Helm 8:14 - Helm Chart Structure 9:57 - Values injection into template files 11:24 - Release Management / Tiller (Helm Version 2!) 13:08 - Downsides of Helm ▬▬▬▬▬▬ Useful Links 🔗 ▬▬▬▬▬▬ - Helm hub: https://hub.helm.sh/ - Helm charts GitHub Project: https://github.com/helm/charts - Installing Helm: https://helm.sh/docs/intro/install/ - Helm v3 release notes: https://helm.sh/blog/helm-3-released/ ▬▬▬▬▬▬ Want to learn more? 🚀 ▬▬▬▬▬▬ Full Kubernetes and Docker tutorial ► https://bit.ly/2YGeRp9 DevOps Tools, like Ansible ► https://bit.ly/2W9UEq6 Complete K8s Application Setup ► https://youtu.be/EQNO_kM96Mo Complete Jenkins Pipeline Tutorial ► https://youtu.be/7KCS70sCoK0 #kubernetes #kubernetestutorial #devops #techworldwithnana #helm ▬▬▬▬▬▬ Courses & Bootcamp & Ebooks 🚀 ▬▬▬▬▬▬ ► Become a DevOps Engineer - full educational program 👉🏼 https://bit.ly/45mXaer ► High-Quality and Hands-On Courses 👉🏼 https://bit.ly/3BNS8Kv ► Kubernetes 101 - compact and easy-to-read ebook bundle 👉🏼 https://bit.ly/3Ozl28x ▬▬▬▬▬▬ Connect with me 👋 ▬▬▬▬▬▬ Join private Facebook group ► https://bit.ly/32UVSZP DEV ► https://bit.ly/3h2fqiO INSTAGRAM ► https://bit.ly/2F3LXYJ TWITTER ► https://bit.ly/3i54PUB LINKEDIN ► https://bit.ly/3hWOLVT Legal Notice: Kubernetes and the Kubernetes logo are trademarks or registered trademarks of The Linux Foundation in the United States and/or other countries. The Linux Foundation and other parties may also have trademark rights in other terms used herein. This video is not accredited, certified, affiliated with, nor endorsed by Kubernetes or The Linux Foundation.