Helm on k3s

Helm installs pre-packaged apps as charts, and k3s can even manage charts for you.

Helm is the Kubernetes package manager. A chart bundles all the manifests for an app so you can install it with one command. Helm works on k3s just like anywhere else.

Two ways to use Helm with k3s

  • The helm CLI — the normal way: helm install from your machine.
  • HelmChart custom resource — k3s ships a controller that can install a chart when you apply a small YAML file, no helm binary needed.

Example

Example · yaml
# k3s HelmChart resource: drop this in and k3s installs the chart
apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
  name: my-app
  namespace: kube-system
spec:
  chart: nginx
  repo: https://charts.bitnami.com/bitnami
  targetNamespace: default
  set:
    service.type: ClusterIP

When to use it

  • An operator installs cert-manager on k3s using a single helm install command instead of managing 30+ raw YAML files.
  • A team uses a HelmChart custom resource to let k3s automatically pull and install a chart when the cluster boots, ensuring day-1 tooling is always present.
  • A developer overrides chart values at install time with --set flags to configure a specific ingress class for the Traefik-backed k3s cluster.

More examples

Install a chart with Helm

Adds the Bitnami repo and installs Redis into a dedicated namespace with auth disabled for development.

Example · bash
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
helm install my-redis bitnami/redis \
  --set auth.enabled=false \
  --namespace cache --create-namespace

Use k3s HelmChart CRD

Drops a HelmChart manifest into the auto-deploy directory so k3s installs and manages cert-manager automatically.

Example · yaml
apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
  name: cert-manager
  namespace: kube-system
spec:
  repo: https://charts.jetstack.io
  chart: cert-manager
  targetNamespace: cert-manager
  set:
    installCRDs: "true"

Upgrade and rollback a release

Upgrades the Redis chart to add replicas, shows revision history, then rolls back to the previous version.

Example · bash
helm upgrade my-redis bitnami/redis --set replica.replicaCount=3
helm history my-redis
helm rollback my-redis 1

Discussion

  • Be the first to comment on this lesson.