Install with Helm Controller

In this section, you will learn how to install Longhorn with the HelmChart controller built into RKE2 and K3s.

Prerequisites

This script can be used to check the Longhorn environment for potential issues.

Installing Longhorn

Note:

  1. Create a HelmChart yaml file similar to this:

    1. apiVersion: helm.cattle.io/v1
    2. kind: HelmChart
    3. metadata:
    4. annotations:
    5. helmcharts.cattle.io/managed-by: helm-controller
    6. finalizers:
    7. - wrangler.cattle.io/on-helm-chart-remove
    8. generation: 1
    9. name: longhorn-install
    10. namespace: default
    11. spec:
    12. version: v1.7.2
    13. chart: longhorn
    14. repo: https://charts.longhorn.io
    15. failurePolicy: abort
    16. targetNamespace: longhorn-system
    17. createNamespace: true

    IMPORTANT! Ensure that spec.failurePolicy is set to “abort”. The only other value is the default: “reinstall”, which performs an uninstall of Longhorn. With “abort”, it retries periodically, giving the user a chance to fix the problem.

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

    1. spec:
    2. 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:

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

    Note: Deleting the helmchart CR will initiate an uninstall of Longhorn.

  3. To show the created resources:

    1. $ kubectl get jobs
    2. NAME COMPLETIONS DURATION AGE
    3. helm-install-longhorn-install 0/1 8s 8s
    4. $ kubectl get pods
    5. NAME READY STATUS RESTARTS AGE
    6. helm-install-longhorn-install-lngm8 0/1 Completed 0 25s
    7. $ kubectl get helmcharts
    8. NAME JOB CHART TARGETNAMESPACE VERSION REPO HELMVERSION BOOTSTRAP
    9. longhorn-install helm-install-longhorn longhorn longhorn-system v1.7.2 https://charts.longhorn.io
  4. To confirm that the deployment succeeded, run:

    1. kubectl -n longhorn-system get pod

    The result should look like the following:

    1. NAME READY STATUS RESTARTS AGE
    2. csi-attacher-85c7684cfd-67kqc 1/1 Running 0 29m
    3. csi-attacher-85c7684cfd-jbddj 1/1 Running 0 29m
    4. csi-attacher-85c7684cfd-t85bw 1/1 Running 0 29m
    5. csi-provisioner-68cdb8b96-46d9q 1/1 Running 0 29m
    6. csi-provisioner-68cdb8b96-dgf5f 1/1 Running 0 29m
    7. csi-provisioner-68cdb8b96-mh8q7 1/1 Running 0 29m
    8. csi-resizer-86dd765b9-d27cs 1/1 Running 0 29m
    9. csi-resizer-86dd765b9-scqxm 1/1 Running 0 29m
    10. csi-resizer-86dd765b9-zpcv7 1/1 Running 0 29m
    11. csi-snapshotter-65b46b8749-dtvh2 1/1 Running 0 29m
    12. csi-snapshotter-65b46b8749-g67fn 1/1 Running 0 29m
    13. csi-snapshotter-65b46b8749-nfgzm 1/1 Running 0 29m
    14. engine-image-ei-221c9c21-gd5d6 1/1 Running 0 29m
    15. engine-image-ei-221c9c21-v6clp 1/1 Running 0 29m
    16. engine-image-ei-221c9c21-zzdrt 1/1 Running 0 29m
    17. instance-manager-77d11dda6091967f9b30011c9876341b 1/1 Running 0 29m
    18. instance-manager-870c250b69a4fe01382ed46156d33f47 1/1 Running 0 29m
    19. instance-manager-a4099c5ce28b423c3cc2667906f4b0b4 1/1 Running 0 29m
    20. longhorn-csi-plugin-jfbh5 3/3 Running 0 29m
    21. longhorn-csi-plugin-w768w 3/3 Running 0 29m
    22. longhorn-csi-plugin-xcghm 3/3 Running 0 29m
    23. longhorn-driver-deployer-586bc86bf9-bkwk6 1/1 Running 0 30m
    24. longhorn-manager-c4xtv 1/1 Running 1 (30m ago) 30m
    25. longhorn-manager-kgqts 1/1 Running 0 30m
    26. longhorn-manager-n8xdr 1/1 Running 0 30m
    27. longhorn-ui-69667f9678-2lvxn 1/1 Running 0 30m
    28. longhorn-ui-69667f9678-2xmc9 1/1 Running 0 30m
  5. To enable access to the Longhorn UI, you need to set up an Ingress controller. Authentication to the Longhorn UI is not enabled by default. For information on creating an NGINX Ingress controller with basic authentication, refer to this section.

  6. Access the Longhorn UI using these steps.