Helm — the de facto package manager for Kubernetes (CNCF graduated 2020). A Chart = packaged set of YAML templates + default values, installable via helm install. Solves: template repetition, multi-environment configs (values-prod.yaml vs values-dev.yaml), versioning. Alternatives: Kustomize (simpler but without packaging), raw manifests (early stage).
Below: details, example, related terms, FAQ.
Free online tool — HTTP header checker: instant results, no signup.
# Install chart
helm install my-release bitnami/postgresql \
--set primary.persistence.size=100Gi \
--set auth.postgresPassword=secret
# values-prod.yaml override
helm upgrade my-release bitnami/postgresql \
-f values-prod.yamlHelm Charts are the core component of Helm, serving as a collection of files that describe a related set of Kubernetes resources. A Chart is essentially a directory that contains all the necessary YAML files, including templates and configuration values, to deploy an application on Kubernetes. Each Chart usually includes:
By using Charts, developers can manage complex applications with ease, encapsulating multiple Kubernetes resources within a single package. This encapsulation allows for easier version control and sharing across teams.
Helm provides a command-line interface that simplifies the management of Kubernetes applications. Below are some of the most commonly used Helm commands:
helm repo add REPO_NAME REPO_URL: Adds a new Helm repository to your local configuration.helm search repo KEYWORD: Searches for Charts in the added repositories that match the specified keyword.helm install RELEASE_NAME CHART: Installs a Chart into your Kubernetes cluster, creating a new release.helm upgrade RELEASE_NAME CHART: Upgrades an existing release to a new version of a Chart.helm uninstall RELEASE_NAME: Removes a release from your Kubernetes cluster.For example, to install the popular Nginx Ingress Controller using a Helm Chart, you would run:
helm install my-nginx-ingress ingress-nginx/ingress-nginxThis command will deploy the Nginx Ingress Controller with the release name 'my-nginx-ingress'. You can further customize the installation by providing a custom values.yaml file:
helm install my-nginx-ingress ingress-nginx/ingress-nginx -f custom-values.yamlBy leveraging these commands, you can efficiently manage applications on your Kubernetes cluster.
When evaluating tools for managing Kubernetes configurations, Helm and Kustomize frequently come into play. Both serve distinct purposes and have their strengths and weaknesses.
Helm is primarily a package manager, allowing users to deploy and manage applications as Charts. It simplifies the installation process and offers features like versioning, templating, and dependency management. However, it introduces complexity with templating and requires a learning curve to understand how to create and manage Charts effectively.
Kustomize, on the other hand, focuses on customizing raw Kubernetes manifests. It does not package resources like Helm but instead allows users to overlay configurations on top of existing YAML files. This approach is simpler for straightforward configurations and doesn't require the creation of a package. Kustomize is part of the Kubernetes ecosystem and can be used natively with kubectl apply -k.
Here’s a quick comparison:
Choosing between Helm and Kustomize ultimately depends on your specific needs and the complexity of your Kubernetes applications.
Helm — packaging + templating. Kustomize — overlay-based without templates. For distribution (public charts) — Helm. For simple mono-repo — Kustomize.
Helm 2 had Tiller (server component) — security issues. Helm 3 — tiller-less, RBAC-aware. Everyone uses Helm 3 since 2020.
Artifact Hub (artifacthub.io) — 12k+ charts. Bitnami, Prometheus, Grafana, cert-manager — main maintainers.
Free plan — 10 monitors, checks every 5 min, no card required. Upgrade for 1-minute interval and multi-region monitoring.