32 lines
1.3 KiB
Markdown
32 lines
1.3 KiB
Markdown
|
### Persistent Storage
|
||
|
Manifest for [Longhorn](https://github.com/longhorn/longhorn):
|
||
|
```
|
||
|
curl -Ls https://raw.githubusercontent.com/longhorn/longhorn/master/deploy/longhorn.yaml -o storage/Longhorn/deploy-Longhorn.yaml
|
||
|
sed -e 's/LoadBalancer/ClusterIP/' -i storage/Longhorn/deploy-Longhorn.yaml
|
||
|
kubectl apply -f storage/Longhorn/deploy-Longhorn.yaml
|
||
|
```
|
||
|
##### `IngressRoute` for Longhorn's dashboard:
|
||
|
```
|
||
|
kubectl apply -f storage/Longhorn/ingressRoute-Longhorn.yaml
|
||
|
```
|
||
|
##### `storageClass` with backup schedule:
|
||
|
After specifying a NFS backup target (syntax: `nfs://servername:/path/to/share`) through Longhorn's dashboard, create a new `storageClass` with backup schedule:
|
||
|
```
|
||
|
kind: StorageClass
|
||
|
apiVersion: storage.k8s.io/v1
|
||
|
metadata:
|
||
|
name: longhorn-dailybackup
|
||
|
provisioner: driver.longhorn.io
|
||
|
allowVolumeExpansion: true
|
||
|
parameters:
|
||
|
numberOfReplicas: "3"
|
||
|
staleReplicaTimeout: "2880"
|
||
|
fromBackup: ""
|
||
|
recurringJobs: '[{"name":"backup", "task":"backup", "cron":"0 0 * * *", "retain":14}]'
|
||
|
```
|
||
|
Then make this the new default `storageClass`:
|
||
|
```
|
||
|
kubectl patch storageclass longhorn-dailybackup -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
|
||
|
kubectl patch storageclass local-path -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
|
||
|
kubectl delete storageclass longhorn
|
||
|
```
|