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.


© 2019-2024 Longhorn Authors | Documentation Distributed under CC-BY-4.0


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