The Life Cycle of Helm Charts: A Guide to Kubernetes Package Management

Jimin
3 min readOct 2, 2023

--

Introduction

  • Brief overview of Kubernetes and the challenges of deploying complex applications.
  • Introduction to Helm as a solution for managing the life cycle of applications on Kubernetes.

Helm: The Kubernetes Package Manager

  • What it is: Helm is a tool or application. Think of it like a package manager for Kubernetes, similar to how apt or yum are for Linux operating system.
  • Purpose: Its primary role is to streamline the process of defining, deploying, and upgrading applications on Kubernetes.
  • Functions: Helm can manage repositories (where charts are stored), handle releases (versions of applications you deploy), and maange the lifecycle of applications on a Kubernetes cluster.

Helm Chart: The Heart of Helm

  • What it is: A Helm chart is a package or a template. It’s like the .deb (for Debian-based systems) or .rpm (for Red Hat-based systems) in the Linux world.
  • Purpose: Helm charts define how an application should be deployed on Kubernetes. They bundle necessary configurations and resource definitions.
  • Components
    - Templates:
    These are Kubernetes manifest files (like pods, services, etc.), but with a twist. They have placeholders that can be filled based on your specific configurations.
    - Values: This is where you define the specific configurations you want. Think of it like a settings or configuration file for a software.
    - Chart.yaml: Think of this as the ID card of your Helm chart. It provides essential information about the chart such as its name, version, and a brief description.
    Dependencies are described in the Chart.yaml file. This keeps track of other charts that the main application depends on, ensuring they’re installed together.
    - values.yaml: This is the default configuration file. If you don’t specify certain settings when you use a Helm chart, this file determines the defaults.
    - README and NOTES: A well-crafted chart will often have a README.md for documentation and a NOTES.txt which provides user-specific notes to be displayed after installation.
<chart-name>/

├── charts/

├── templates/
│ ├── deployment.yaml
│ ├── _helpers.tpl
│ ├── hpa.yaml
│ ├── ingress.yaml
│ ├── NOTES.txt
│ ├── serviceaccount.yaml
│ ├── service.yaml
│ └── tests/
│ └── test-connection.yaml

├── values.yaml

└── Chart.yaml

Life Cycle of a Helm Chart:

  1. Creation: Developers can create a new Helm chart using helm create <chart-name>. This scaffolds a basic structure which can then be customized for specific needs.
  2. Packaging: Once the chart is defined and tested, it can be packaged for distribution using the helm package <chart-directory> command. This produces a .tgz archive that contains the chart’s files.
  3. Distribution: The packaged chart can then be shared with others. Most commonly, this involves pushing the chart to a Helm repository (this of this as a ‘chart store’). From a repository, charts cna be searched, inspected, and installed by any Helm user with access.
  4. Installation: Users can deploy an application defined by a Helm chart using the helm install command. They can provide specific configurations that override the default values, tailoring the application to their environment.
  5. Updates and Management: After installation, Helm tracks the application’s state and allows for updates helm upgrade, rollbacks helm rollback, and removal helm uninstall.

Conclusion

Helm Charts encapsulate the complexity of defining, configuring, and managing Kubernetes applications. By adhering to a structured format and leveraging powerful templating, they ensure applications are reproducible, shareable, and maintainable across different environments and teams.

--

--

Jimin
Jimin

Written by Jimin

DevOps engineer and tech enthusiast. Sharing tech insights to simplify the complex. Let's connect on LinkedIn! https://www.linkedin.com/in/byun-jimin/

No responses yet