Install SUSE Storage Using Helm Controller

You can install SUSE Storage using the Helm chart controller built into RKE2 and K3s.

Prerequisites

  • Kubernetes cluster: Ensure that each node fulfills the installation requirements. The cluster should be running RKE2 or K3s.

Use this script to check the environment for potential issues.

Installation

  • The initial settings can be [customized using Helm options or by editing the deployment configuration file.](../../../advanced-resources/deploy/customizing-default-settings/#using-helm)

  • For Kubernetes v1.25 or earlier, if your cluster still enables Pod Security Policy admission controller, set the helm value enablePSP to true to install longhorn-psp PodSecurityPolicy resource which allows privileged Longhorn pods to start.

  1. Create a HelmChart yaml file similar to the following:

    apiVersion: helm.cattle.io/v1
      kind: HelmChart
      metadata:
        annotations:
          helmcharts.cattle.io/managed-by: helm-controller
        finalizers:
        - wrangler.cattle.io/on-helm-chart-remove
        generation: 1
        name: longhorn-install
        namespace: default
      spec:
        version: v{{< current-version >}}
        chart: longhorn
        repo: https://charts.longhorn.io
        failurePolicy: abort
        targetNamespace: longhorn-system
        createNamespace: true
    • Ensure that spec.failurePolicy is set to "abort". The only other value is the default: "reinstall", which uninstalls SUSE Storage. With "abort", it retries periodically, giving the user a chance to fix the problem.

    • Rather than specify the repo, version, and chart name, the yaml can also use an image of the charts themselves:

    spec:
      chartContent:  <tarball of chart directory | base64 -w 0>

    For full details see the HelmChart controller docs: https://docs.rke2.io/helm or https://docs.k3s.io/helm.

  2. Apply it to create the HelmChart CR and an installation job:

    $ kubectl apply -f helmchart_repo_install.yaml
    helmchart.helm.cattle.io/longhorn-install created

    Deleting the helmchart CR will initiate uninstallation of SUSE Storage.

  3. Check the created resources.

    $ kubectl get jobs
    NAME                            COMPLETIONS   DURATION   AGE
    helm-install-longhorn-install   0/1           8s         8s
    $ kubectl get pods
    NAME                                  READY   STATUS      RESTARTS   AGE
    helm-install-longhorn-install-lngm8   0/1     Completed   0          25s
    $ kubectl get helmcharts
    NAME               JOB                     CHART      TARGETNAMESPACE   VERSION   REPO                         HELMVERSION   BOOTSTRAP
    longhorn-install   helm-install-longhorn   longhorn   longhorn-system   v{{< current-version >}}    https://charts.longhorn.io
  4. Verify that the deployment succeeded.

    kubectl -n longhorn-system get pod

    Example of result:

    NAME                                                READY   STATUS    RESTARTS      AGE
    csi-attacher-85c7684cfd-67kqc                       1/1     Running   0             29m
    csi-attacher-85c7684cfd-jbddj                       1/1     Running   0             29m
    csi-attacher-85c7684cfd-t85bw                       1/1     Running   0             29m
    csi-provisioner-68cdb8b96-46d9q                     1/1     Running   0             29m
    csi-provisioner-68cdb8b96-dgf5f                     1/1     Running   0             29m
    csi-provisioner-68cdb8b96-mh8q7                     1/1     Running   0             29m
    csi-resizer-86dd765b9-d27cs                         1/1     Running   0             29m
    csi-resizer-86dd765b9-scqxm                         1/1     Running   0             29m
    csi-resizer-86dd765b9-zpcv7                         1/1     Running   0             29m
    csi-snapshotter-65b46b8749-dtvh2                    1/1     Running   0             29m
    csi-snapshotter-65b46b8749-g67fn                    1/1     Running   0             29m
    csi-snapshotter-65b46b8749-nfgzm                    1/1     Running   0             29m
    engine-image-ei-221c9c21-gd5d6                      1/1     Running   0             29m
    engine-image-ei-221c9c21-v6clp                      1/1     Running   0             29m
    engine-image-ei-221c9c21-zzdrt                      1/1     Running   0             29m
    instance-manager-77d11dda6091967f9b30011c9876341b   1/1     Running   0             29m
    instance-manager-870c250b69a4fe01382ed46156d33f47   1/1     Running   0             29m
    instance-manager-a4099c5ce28b423c3cc2667906f4b0b4   1/1     Running   0             29m
    longhorn-csi-plugin-jfbh5                           3/3     Running   0             29m
    longhorn-csi-plugin-w768w                           3/3     Running   0             29m
    longhorn-csi-plugin-xcghm                           3/3     Running   0             29m
    longhorn-driver-deployer-586bc86bf9-bkwk6           1/1     Running   0             30m
    longhorn-manager-c4xtv                              1/1     Running   1 (30m ago)   30m
    longhorn-manager-kgqts                              1/1     Running   0             30m
    longhorn-manager-n8xdr                              1/1     Running   0             30m
    longhorn-ui-69667f9678-2lvxn                        1/1     Running   0             30m
    longhorn-ui-69667f9678-2xmc9                        1/1     Running   0             30m
  5. Create an NGINX Ingress controller with basic authentication to access the UI. Authentication to the UI is not enabled by default.

  6. Access the UI.