Helm integration

Helm integration is a way to automatically deploy a bunch of helm releases together with kubeone apply. No helm binary is required. Can be used as alternative way (to KubeOne Addons) to deploy for example a CNI plugins with your own customizations, or different Kubernetes workloads that mostly are accessible as Helm Charts.

Example

apiVersion: kubeone.k8c.io/v1beta2
kind: KubeOneCluster

#... irrelevant parts of the manifest are omitted

helmReleases:
    # releaseName can be omitted, in that case it will defaulted to .chart
  - releaseName: ksm

    # chart is a required field, simply a chart name to deploy
    chart: kube-state-metrics

    # where to find the chart, can be a remote server.
    # --repo flag of the `helm upgrade` command.
    repoURL: https://prometheus-community.github.io/helm-charts

    # namespace to deploy helm release to. --namespace flag of the
    # `helm upgrade` command.
    namespace: kube-state-metrics

    # use specific version instead of latest available, which is highly
    # recommended, but version can be omitted. --version flag of the
    # `helm upgrade` command.
    version: 4.22.3

    # Wait is --wait flag of the `helm install` command.
    wait: true

    # Timeout is --timeout flag of the `helm install` command.
    timeout: 5m20s

    # provide optional overrides for chart values, --values flag of the
    # `helm upgrade` command
    values:
      - valuesFile: ksm-values.yaml   # it can be a file
      - inline:                       # or directly specified inline YAML
          replicas: 3

Uninstalling Helm Release

In order to uninstall a helm release just delete it from the helmReleases list

Example:

Initial helmReleases TO INSTALL.

helmReleases:
  - chart: kube-state-metrics
    repoURL: https://prometheus-community.github.io/helm-charts
    namespace: kube-state-metrics
    version: 4.22.3
  - chart: redis
    releaseName: myredis
    repoURL: https://charts.bitnami.com/bitnami
    namespace: cache
    values:
      - inline:
          auth:
            enabled: false
            sentinel: false

Redis is deleted, and on next KubeOne apply it will be uninstalled.

helmReleases:
  - chart: kube-state-metrics
    repoURL: https://prometheus-community.github.io/helm-charts
    namespace: kube-state-metrics
    version: 4.22.3
-  - chart: redis
-    releaseName: myredis
-    repoURL: https://charts.bitnami.com/bitnami
-    namespace: cache
-    values:
-      - inline:
-          auth:
-            enabled: false
-            sentinel: false

Only helm releases deployed by KubeOne will be uninstalled. Helm releases installed outside of the KubeOne (by using helm CLI for example) will not be touched.

API

Full document for autogenerated API is available.