Kennisbank › Kubernetes › helm (Kubernetes)
kubernetes starter 27 August 2026

helm (Kubernetes)

Helm (Kubernetes): Package Management for Kubernetes

For macOS with Homebrew:

brew install helm

2. Add a Helm repository

helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update

Bitnami maintains a catalog of tested and production-ready charts for databases, CMS systems, and monitoring tools.

3. Search for a chart

helm search repo bitnami | grep nginx

This command shows all available nginx charts in the Bitnami repository.

4. Install a chart

helm install mijn-nginx bitnami/nginx --namespace productie --create-namespace

This command installs the nginx chart in the `productie` namespace. Helm automatically creates the namespace and deploys all Kubernetes manifests from the chart.

5. Configure a chart with values

Create a file `values-prod.yaml`:

replicaCount: 3
image:
  tag: "1.25.3"
service:
  type: LoadBalancer
resources:
  requests:
    memory: "256Mi"
    cpu: "250m"
  limits:
    memory: "512Mi"
    cpu: "500m"

Install with custom configuration:

helm install mijn-app ./helm-chart --values values-prod.yaml

The same chart now works in development, test, and production environments with different configurations via the `values.yaml` file.

6. Upgrade a release

helm upgrade mijn-nginx bitnami/nginx --namespace productie --atomic

The `--atomic` flag automatically rolls back the upgrade on failure, which increases the reliability of deployments.

7. Use OCI registries

Helm 3.14 and higher supports OCI artifacts. Store charts in container registries:

helm registry login registry-1.docker.io --username jouw-gebruikersnaam
helm package ./mijn-chart
helm push mijn-chart-1.0.0.tgz oci://registry-1.docker.io/bitnamicharts

OCI support means charts are managed alongside container images in the same secure ecosystem. Docker Hardened Images offer charts with SLSA Level 3 compliance, SBOMs, and signed attestations via Sigstore tooling such as Cosign.

8. Remove a release

helm uninstall mijn-nginx --namespace productie

This command removes all Kubernetes resources associated with the release.

Verification

Check whether the installation was performed correctly:

helm list --namespace productie
kubectl get pods --namespace productie
kubectl get svc --namespace productie

The `helm list` command shows all active releases. `kubectl get pods` and `kubectl get svc` confirm that the pods are running and services are available.

Common problems

1. Helm cannot connect to the cluster

Check your kubeconfig:

kubectl config current-context
kubectl cluster-info

If kubectl works but Helm does not, check the Helm environment variables:

echo $KUBECONFIG
helm version --client

2. Upgrade fails and the release is in "failed" status

helm rollback mijn-nginx 1 --namespace productie

This rolls the release back to revision 1. Use `helm history mijn-nginx --namespace productie` to view all revisions.

3. Chart installation fails with "manifest is not valid"

Validate the chart syntax:

helm lint ./mijn-chart
helm template ./mijn-chart --debug

`helm template` renders the manifests locally without deploying them, which helps in detecting errors in templates.

Helm 3 versus Helm 2

Helm 3, announced on November 13, 2019, removed Tiller, the server-side component from Helm 2. This simplified the architecture and improved security because a long-running service with extensive privileges was no longer needed in the cluster. Helm 3 introduced better RBAC support, improved upgrade and rollback mechanisms, and a more robust templating engine.

Helm as a CNCF project

Helm began in 2015 at Deis, a startup that built developer tools for cloud platforms. The first commit in the Git repository dates to October 19, 2015. Helm Classic was published during the inaugural KubeCon in November 2015. In January 2016, Helm Classic merged with Google's Kubernetes Deployment Manager and became part of the Kubernetes ecosystem. After Microsoft acquired Deis in 2017, the project continued to develop with a focus on stability and security.

In June 2018, Helm was promoted from a subproject to a full CNCF project, with the same status as Prometheus, Envoy, and etcd. On April 30, 2020, Helm became a "graduate" project — the tenth project to achieve this status. Helm v4.0.0 was released on November 12, 2025, during KubeCon + CloudNativeCon North America.

Helm chart structure

A chart contains all Kubernetes manifests needed for an application: deployments, services, ingresses, configmaps, and secrets. Charts are built hierarchically and can contain other charts as dependencies. The directory structure of a chart:

mijn-chart/
├── Chart.yaml
├── values.yaml
├── templates/
│   ├── deployment.yaml
│   ├── service.yaml
│   └── _helpers.tpl
└── charts/
    └── afhankelijkheid-1.0.0.tgz

`Chart.yaml` contains metadata such as name and version. `values.yaml` defines default configuration. Templates in the `templates/` folder use Go templating and can be customized with values.

Helm and software supply chain

Helm charts as OCI artifacts support modern security practices. Docker Hardened Images contain charts that meet SLSA Level 3, with extensive SBOMs and signed attestations via Cosign. These attestations verify what is in the chart, how it was built, and whether it meets security policies. Docker Hub stores charts via the `config` property in the image manifest.

Docker Compose Bridge converts compose files to Kubernetes manifests or Helm charts, allowing applications to migrate from local Docker environments to Kubernetes. Compose Bridge automatically configures model endpoints for LLMs and Docker Model Runner.

Freelens, a community-based Kubernetes IDE, offers graphical support for Helm. Users install, upgrade, and manage charts through a dashboard without using the CLI, with real-time cluster status and built-in terminal access.

Helm continues to evolve within the CNCF, and integration with OCI registries, security tooling, and graphical interfaces is steadily growing—the question is which new workflows the next major version will enable.

← Back to knowledge base
← Terug naar kennisbank