Using Helm at Giant Swarm

We use Helm to deploy our App Platform. This page is for local setup and tips and tricks.


  • All actions in Helm are scoped to a namespace.
  • You can check all namespaces with the -A flag e.g. helm ls -A.
  • But these aliases based on Vaclav’s awesome kubectl aliases may help.
alias helmg="helm -n giantswarm"
alias helmk="helm -n kube-system"
alias helmm="helm -n monitoring"


  • Our Giant Swarm App Platform is built on Helm chart repositories.
  • app-operator gets the repository URL from the catalog CR but you can also use it locally.
$ helm repo add control-plane-catalog
  • Example installing app-operator in KIND.
helm install -n giantswarm app-operator control-plane-catalog/app-operator
  • :caution: Be careful when installing charts manually in test MCs and remove them after. Don’t do this in prod MCs unless there is no alternative.

Helm 3: Three Way Merge

  • This is one of the major changes in Helm 3. Now the current state of the cluster is included when the strategic merge patch is generated.
  • For example if a deployment is scaled down the merge will scale it back up.
  • This means manual changes are higher risk with Helm 3.
  • To prevent app-operator making changes you can cordon the app CR.
  • See the Helm docs for more detail on three way merge.


Coding Standards

Tips & Tricks

Help with common templating issues.

Is a chart deployed with Helm 2 or Helm 3?

  • You can use the Release.Service built-in object.
  • On Helm 3 it is always Helm.
  • On Helm 2 it is always Tiller.


Tools, tips and tricks for working with Helm values.

helm-diff plugin

This plugin is useful for comparing values changes. It can also do other comparisions. See the docs.

helm plugin install

helm -n giantswarm diff revision release-operator-unique 18 19

helm get values –all

By default helm get values only returns the overrides for the chart. In our case the config specified in the app CR.

The --all flag shows all the computed values including those in values.yaml in the chart.

Removed API versions

If an apiVersion has been removed then chart-operator will fail to update the helm release. e.g.

current release manifest contains removed kubernetes api(s) for this kubernetes version and it is therefore unable to build the kubernetes objects for performing the diff. error from kubernetes: [unable to recognize \"\": no matches for kind \"Role\" in version \"\", unable to recognize \"\": no matches for kind \"RoleBinding\" in version \"\

The apiVersion in the helm release secret needs to be updated to a supported value. This can be done with the plugin.

It can remap both deprecated and removed API versions.

mapkubeapis plugin

Install the plugin.

helm plugin install

Scale down chart-operator.

kubectl -n giantswarm scale deploy chart-operator --replicas 0
helm mapkubeapis -n efk-stack-app efk-stack-app

2022/04/12 13:03:39 Release 'efk-stack-app' will be checked for deprecated or removed Kubernetes APIs and will be updated if necessary to supported API versions.
2022/04/12 13:03:39 Get release 'efk-stack-app' latest version.
2022/04/12 13:03:39 Check release 'efk-stack-app' for deprecated or removed APIs...
2022/04/12 13:03:40 Found 3 instances of deprecated or removed Kubernetes API:
kind: Role
Supported API equivalent:
kind: Role
2022/04/12 13:03:40 Found 1 instances of deprecated or removed Kubernetes API:
kind: RoleBinding
Supported API equivalent:
kind: RoleBinding
2022/04/12 13:03:40 Finished checking release 'efk-stack-app' for deprecated or removed APIs.
2022/04/12 13:03:40 Deprecated or removed APIs exist, updating release: efk-stack-app.
2022/04/12 13:03:40 Set status of release version 'efk-stack-app.v76' to 'superseded'.
2022/04/12 13:03:40 Release version 'efk-stack-app.v76' updated successfully.
2022/04/12 13:03:40 Add release version 'efk-stack-app.v77' with updated supported APIs.
2022/04/12 13:03:40 Release version 'efk-stack-app.v77' added successfully.
2022/04/12 13:03:40 Release 'efk-stack-app' with deprecated or removed APIs updated successfully to new version.
2022/04/12 13:03:40 Map of release 'efk-stack-app' deprecated or removed APIs to supported versions, completed successfully.

Scale up chart-operator.

kubectl -n giantswarm scale deploy chart-operator --replicas 1