Helm is package manager for software applications used in the field of cloud computing. It helps people package, share, and manage applications and their dependencies in a way that makes it easy to deploy and update them on platforms like Kubernetes.
- Manage Complexity
- Easy Updates
- Simple sharing
- Dependency Management
Helm in a deployment flow:
Chart Creation: Developers create a Helm chart that includes Kubernetes manifests and templates for deploying an application. This chart can be customized using placeholders for values.
Chart Repository: The Helm chart is stored in a repository that can be accessed by users and deployment pipelines.
Installation: Users or automated systems use the Helm CLI to install the chart. They can provide custom values to tailor the deployment. Helm renders the templates, substitutes values, and generates Kubernetes manifests.
Kubernetes Deployment: Helm sends the generated manifests to the Kubernetes API server. Kubernetes deploys the application based on the provided manifests.
Upgrade/Rollback: Over time, developers can update the chart to new versions. Users can use Helm to upgrade to a newer version or rollback to a previous version, simplifying application management.
Deletion: When the application is no longer needed, Helm can be used to uninstall the chart. Helm removes all associated Kubernetes resources.
- Helm CLI
- Helm Hub
- Value Files
- Release Management
- Dependency Management
- Docker Compose: Platform - Docker, Language - YAML
- APT: Platform - Debian/Ubuntu Linux, Language - Command Line
- Chocolatey: Platform - Windows, Language - PowerShell
- Composer: Platform - PHP, Language - PHP
- Homebrew: Platform - macOS/Linux, Language - Ruby
my-chart/ ├── charts/ ├── templates/ │ ├── deployment.yaml │ ├── service.yaml │ ├── configmap.yaml ├── values.yaml ├── Chart.yaml ├── README.md
- charts/: This directory is used to store any sub-charts or dependencies that your main chart relies on. Helm can manage dependencies between charts, and they're stored here.
- templates/: The heart of the chart, this directory contains the Kubernetes manifests in the form of template files. These templates use placeholders to be filled in with values from the values.yaml file or provided at installation.
- deployment.yaml: Defines how your application's containers should run in Kubernetes pods.
- service.yaml: Describes how your application is exposed within the Kubernetes cluster.
- configmap.yaml: Contains configurations that can be consumed by your application.
- values.yaml: This file holds default configuration values for your chart. Users can override these values during installation, allowing customization of the deployment.
- Chart.yaml: This file contains metadata about the chart, such as its name, version, description, and other optional information.
- README.md: A readme file providing information about the chart, its purpose, how to use it, and any other relevant details.