Install with Fleet

Prerequisites

  • Your workstation: Install Helm v3.0 or later.
  • Kubernetes cluster:
    • Ensure that each node fulfills the installation requirements.

    • Install Fleet using Helm.

      helm repo add fleet https://rancher.github.io/fleet-helm-charts/
      helm -n cattle-fleet-system install --create-namespace --wait fleet-crd fleet/fleet-crd
      helm -n cattle-fleet-system install --create-namespace --wait fleet fleet/fleet
      

      Allow some time for the deployment of Fleet components in the cattle-fleet-system namespace.

Use this script to check the Longhorn environment for potential issues.

Installing Longhorn

  1. In your GitOps repository, create a fleet.yaml file that includes the following:

    • Parameter for installing Longhorn in the longhorn-system namespace
    defaultNamespace: longhorn-system
    
    diff:
      comparePatches:
      - apiVersion: apiextensions.k8s.io/v1
        kind: CustomResourceDefinition
        name: engineimages.longhorn.io
        operations:
        - {"op": "replace", "path": "/status"}
      - apiVersion: apiextensions.k8s.io/v1
        kind: CustomResourceDefinition
        name: nodes.longhorn.io
        operations:
        - {"op": "replace", "path": "/status"}
      - apiVersion: apiextensions.k8s.io/v1
        kind: CustomResourceDefinition
        name: volumes.longhorn.io
        operations:
        - {"op": "replace", "path": "/status"}
      - apiVersion: apiextensions.k8s.io/v1
        kind: CustomResourceDefinition
        name: engines.longhorn.io
        operations:
        - {"op": "replace", "path": "/status"}
      - apiVersion: apiextensions.k8s.io/v1
        kind: CustomResourceDefinition
        name: instancemanagers.longhorn.io
        operations:
        - {"op": "replace", "path": "/status"}
      - apiVersion: apiextensions.k8s.io/v1
        kind: CustomResourceDefinition
        name: replicas.longhorn.io
        operations:
        - {"op": "replace", "path": "/status"}
      - apiVersion: apiextensions.k8s.io/v1
        kind: CustomResourceDefinition
        name: settings.longhorn.io
        operations:
        - {"op": "replace", "path": "/status"}
    
    • Parameters for specifying the version of the Longhorn Helm chart to be installed
    helm:
      repo: https://charts.longhorn.io
      chart: longhorn
      version: v1.6.0 # Replace with the Longhorn version you'd like to install or upgrade to
      releaseName: longhorn
    

    Example of a complete fleet.yaml file:

    defaultNamespace: longhorn-system
    helm:
      repo: https://charts.longhorn.io
      chart: longhorn
      version: 1.6.0
      releaseName: longhorn
    diff:
      comparePatches:
      - apiVersion: apiextensions.k8s.io/v1
        kind: CustomResourceDefinition
        name: engineimages.longhorn.io
        operations:
        - {"op": "replace", "path": "/status"}
      - apiVersion: apiextensions.k8s.io/v1
        kind: CustomResourceDefinition
        name: nodes.longhorn.io
        operations:
        - {"op": "replace", "path": "/status"}
      - apiVersion: apiextensions.k8s.io/v1
        kind: CustomResourceDefinition
        name: volumes.longhorn.io
        operations:
        - {"op": "replace", "path": "/status"}
    
  2. Create a GitRepo custom resource (CR) that points to your GitOps repository.

    cat > longhorn-gitrepo.yaml << "EOF"
    apiVersion: fleet.cattle.io/v1alpha1
    kind: GitRepo
    metadata:
      name: longhorn
      namespace: fleet-local
    spec:
      repo: https://github.com/your-username/your-gitops-repo.git
      revision: main
      paths:
      - .
    EOF
    
  3. Apply the GitRepo CR.

    kubectl apply -f longhorn-gitrepo.yaml
    
  4. Verify that the GitRepo CR was created and synced successfully.

    kubectl -n fleet-local get fleet -w
    
  5. Verify that Longhorn was installed successfully.

    kubectl -n longhorn-system get pod
    

    Example of a successful Longhorn installation:

    NAME                                                READY   STATUS    RESTARTS   AGE
    longhorn-ui-b7c844b49-w25g5                         1/1     Running   0          2m41s
    longhorn-manager-pzgsp                              1/1     Running   0          2m41s
    longhorn-driver-deployer-6bd59c9f76-lqczw           1/1     Running   0          2m41s
    longhorn-csi-plugin-mbwqz                           2/2     Running   0          100s
    csi-snapshotter-588457fcdf-22bqp                    1/1     Running   0          100s
    csi-snapshotter-588457fcdf-2wd6g                    1/1     Running   0          100s
    csi-provisioner-869bdc4b79-mzrwf                    1/1     Running   0          101s
    csi-provisioner-869bdc4b79-klgfm                    1/1     Running   0          101s
    csi-resizer-6d8cf5f99f-fd2ck                        1/1     Running   0          101s
    csi-provisioner-869bdc4b79-j46rx                    1/1     Running   0          101s
    csi-snapshotter-588457fcdf-bvjdt                    1/1     Running   0          100s
    csi-resizer-6d8cf5f99f-68cw7                        1/1     Running   0          101s
    csi-attacher-7bf4b7f996-df8v6                       1/1     Running   0          101s
    csi-attacher-7bf4b7f996-g9cwc                       1/1     Running   0          101s
    csi-attacher-7bf4b7f996-8l9sw                       1/1     Running   0          101s
    csi-resizer-6d8cf5f99f-smdjw                        1/1     Running   0          101s
    instance-manager-b34d5db1fe1e2d52bcfb308be3166cfc   1/1     Running   0          114s
    engine-image-ei-df38d2e5-cv6nc                      1/1     Running   0          114s
    
  6. Create an NGINX Ingress controller with basic authentication to access the Longhorn UI. Authentication to the Longhorn UI is not enabled by default.

  7. Access the Longhorn UI.


Copyright © 2019-2026 Longhorn a Series of LF Projects, LLC. Documentation Distributed under CC-BY-4.0.


The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page.


For website terms of use, trademark policy and other project policies please see lfprojects.org/policies.