Longhorn Prerequisites This guide assumes you have the following prerequisites in place:
FluxCD Cert-Manager Additional packages may be required depending on your Kubernetes environment. Please refer to the Longhorn documentation for specific prerequisites related to your setup. Ensure the dm_crypt kernel module is loaded: You also need to install these packages:sudo apt install cryptsetup dmsetup nfs-common open-iscsi Ingress will be protected with Authelia, so you need to have Authelia installed and configured in your cluster. Please refer to the Authelia guide for installation and configuration instructions. Longhorn Longhorn is a cloud-native distributed block storage solution for Kubernetes. It provides highly available and persistent storage for your applications running in Kubernetes clusters.
Installation Create the following directory structure for Longhorn:
longhorn/
├── longhorn/
│ ├── helmrelease.yml
│ ├── helmrepository.yml
│ └── ingress.yml
└── namespace.ymlAdd the following content to longhorn/namespace.yml:
---
kind : Namespace
apiVersion : v1
metadata :
name : longhorn-system
labels :
name : longhorn-system Add the following content to longhorn/helmrepository.yml:
---
apiVersion : source.toolkit.fluxcd.io/v1
kind : HelmRepository
metadata :
name : longhorn
namespace : flux-system
spec :
interval : 6h
url : https://charts.longhorn.io Add the following content to longhorn/helmrelease.yml:
---
apiVersion : helm.toolkit.fluxcd.io/v2
kind : HelmRelease
metadata :
name : longhorn
namespace : longhorn-system
spec :
interval : 6h
chart :
spec :
chart : longhorn
version : "1.10.1"
sourceRef :
kind : HelmRepository
name : longhorn
namespace : flux-system
interval : 6h
install :
createNamespace : true
upgrade :
remediation :
remediateLastFailure : true
values :
persistence :
defaultClass : false
reclaimPolicy : Retain
ingress :
enabled : false
service :
ui :
type : ClusterIP Add the following content to longhorn/ingress.yml:
---
apiVersion : networking.k8s.io/v1
kind : Ingress
metadata :
name : longhorn-ingress
namespace : longhorn-system
annotations :
cert-manager.io/cluster-issuer : letsencrypt-cloudflare
traefik.ingress.kubernetes.io/router.middlewares : tools-authelia@kubernetescrd
traefik.ingress.kubernetes.io/router.entrypoints : websecure
spec :
ingressClassName : traefik
tls :
- hosts :
- longhorn.example.com
secretName : longhorn-tls
rules :
- host : longhorn.example.com
http :
paths :
- path : /
pathType : Prefix
backend :
service :
name : longhorn-frontend
port :
number : 80 Commit and push the changes to your Git repository. FluxCD will automatically detect the changes and deploy Longhorn to your Kubernetes cluster.