176 lines
4.2 KiB
YAML
176 lines
4.2 KiB
YAML
apiVersion: v1
|
|
kind: Namespace
|
|
metadata:
|
|
name: longhorn-system
|
|
---
|
|
apiVersion: source.toolkit.fluxcd.io/v1
|
|
kind: HelmRepository
|
|
metadata:
|
|
name: longhorn
|
|
namespace: longhorn-system
|
|
spec:
|
|
interval: "24h"
|
|
url: "https://charts.longhorn.io"
|
|
---
|
|
apiVersion: helm.toolkit.fluxcd.io/v2
|
|
kind: HelmRelease
|
|
metadata:
|
|
name: longhorn
|
|
namespace: longhorn-system
|
|
spec:
|
|
interval: 10m
|
|
dependsOn:
|
|
- name: tailscale
|
|
namespace: tailscale
|
|
- name: kyverno
|
|
namespace: kyverno-system
|
|
chart:
|
|
spec:
|
|
chart: longhorn
|
|
version: "1.11.1"
|
|
sourceRef:
|
|
kind: HelmRepository
|
|
name: longhorn
|
|
interval: "1h"
|
|
values:
|
|
defaultSettings:
|
|
createDefaultDiskLabeledNodes: true
|
|
replicaSoftAntiAffinity: true
|
|
replicaAutoBalance: "best-effort"
|
|
persistence:
|
|
# This should go back to 3 when I have more cluster
|
|
defaultClassReplicaCount: 3
|
|
---
|
|
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: longhorn-custom-path
|
|
namespace: longhorn-system
|
|
data:
|
|
# yamllint disable-line rule:line-length
|
|
PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/run/wrappers/bin:/nix/var/nix/profiles/default/bin:/run/current-system/sw/bin
|
|
---
|
|
apiVersion: kyverno.io/v1
|
|
kind: ClusterPolicy
|
|
metadata:
|
|
name: add-host-path-to-longhorn
|
|
annotations:
|
|
policies.kyverno.io/title: Add Environment Variables from ConfigMap
|
|
policies.kyverno.io/subject: Pod
|
|
policies.kyverno.io/category: Other
|
|
policies.kyverno.io/description: >-
|
|
Longhorn invokes executables on the host system, and needs
|
|
to be aware of the host systems PATH. This modifies all
|
|
deployments such that the PATH is explicitly set to support
|
|
NixOS based systems.
|
|
spec:
|
|
rules:
|
|
- name: add-env-vars
|
|
match:
|
|
resources:
|
|
kinds:
|
|
- Pod
|
|
namespaces:
|
|
- longhorn-system
|
|
mutate:
|
|
patchStrategicMerge:
|
|
spec:
|
|
initContainers:
|
|
- (name): "*"
|
|
envFrom:
|
|
- configMapRef:
|
|
name: longhorn-custom-path
|
|
containers:
|
|
- (name): "*"
|
|
envFrom:
|
|
- configMapRef:
|
|
name: longhorn-custom-path
|
|
---
|
|
apiVersion: traefik.io/v1alpha1
|
|
kind: Middleware
|
|
metadata:
|
|
namespace: longhorn-system
|
|
name: basic-auth
|
|
spec:
|
|
basicAuth:
|
|
realm: Traefik
|
|
secret: longhorn-ui
|
|
---
|
|
apiVersion: networking.k8s.io/v1
|
|
kind: Ingress
|
|
metadata:
|
|
name: longhorn-ingress-tailscale
|
|
namespace: longhorn-system
|
|
spec:
|
|
ingressClassName: tailscale
|
|
defaultBackend:
|
|
service:
|
|
name: longhorn-frontend
|
|
port:
|
|
number: 80
|
|
tls:
|
|
- hosts:
|
|
- longhorn
|
|
---
|
|
apiVersion: networking.k8s.io/v1
|
|
kind: Ingress
|
|
metadata:
|
|
name: longhorn-ingress
|
|
namespace: longhorn-system
|
|
annotations:
|
|
ingressClassName: traefik
|
|
# yamllint disable-line rule:line-length
|
|
traefik.ingress.kubernetes.io/router.middlewares: longhorn-system-basic-auth@kubernetescrd
|
|
# Set body size to 10G to allow uploading large things
|
|
traefik.ingress.kubernetes.io/buffering: |
|
|
maxrequestbodybytes: 10000000000
|
|
memrequestbodybytes: 20000000000
|
|
spec:
|
|
ingressClassName: traefik
|
|
rules:
|
|
- &host
|
|
host: longhorn.cluster
|
|
http:
|
|
paths:
|
|
- pathType: Prefix
|
|
path: "/"
|
|
backend:
|
|
service:
|
|
name: longhorn-frontend
|
|
port:
|
|
number: 80
|
|
- <<: *host
|
|
host: longhorn.kubernetes
|
|
---
|
|
apiVersion: storage.k8s.io/v1
|
|
kind: StorageClass
|
|
metadata:
|
|
name: longhorn-default
|
|
provisioner: driver.longhorn.io
|
|
allowVolumeExpansion: true
|
|
reclaimPolicy: Delete
|
|
volumeBindingMode: Immediate
|
|
parameters:
|
|
backupTargetName: default
|
|
numberOfReplicas: "2"
|
|
staleReplicaTimeout: "2880"
|
|
fromBackup: ""
|
|
fsType: ext4
|
|
diskSelector: "hdd,large"
|
|
---
|
|
apiVersion: storage.k8s.io/v1
|
|
kind: StorageClass
|
|
metadata:
|
|
name: longhorn-3
|
|
provisioner: driver.longhorn.io
|
|
allowVolumeExpansion: true
|
|
reclaimPolicy: Delete
|
|
volumeBindingMode: Immediate
|
|
parameters:
|
|
backupTargetName: default
|
|
numberOfReplicas: "3"
|
|
staleReplicaTimeout: "2880"
|
|
fromBackup: ""
|
|
fsType: ext4
|
|
diskSelector: "hdd,large"
|