Add NFS and iSCSI Storage Classes
This commit is contained in:
2
go.mod
2
go.mod
@@ -3,7 +3,7 @@ module danicos.dev/daniel/homelab
|
||||
go 1.26.2
|
||||
|
||||
require (
|
||||
danicos.dev/daniel/go-kube v1.9.0
|
||||
danicos.dev/daniel/go-kube v1.10.0
|
||||
github.com/fatih/color v1.19.0
|
||||
github.com/fluxcd/helm-controller/api v1.5.4
|
||||
github.com/fluxcd/kustomize-controller/api v1.8.3
|
||||
|
||||
4
go.sum
4
go.sum
@@ -1,5 +1,5 @@
|
||||
danicos.dev/daniel/go-kube v1.9.0 h1:agofABwT1oa/gaxV4Q/KvUvxz1iVr8aiAB+X41WSv8s=
|
||||
danicos.dev/daniel/go-kube v1.9.0/go.mod h1:MBGwFBrGyqkEQ55mK0PP2TdKO1oQSih4hLiPjye+8Gg=
|
||||
danicos.dev/daniel/go-kube v1.10.0 h1:woCiANl8hSEXZYkDXWNeei+JYlls322EoIVekUF4hZs=
|
||||
danicos.dev/daniel/go-kube v1.10.0/go.mod h1:MBGwFBrGyqkEQ55mK0PP2TdKO1oQSih4hLiPjye+8Gg=
|
||||
github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0=
|
||||
github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM=
|
||||
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
apiVersion: storage.k8s.io/v1
|
||||
kind: CSIDriver
|
||||
metadata:
|
||||
name: csi.truenas.io
|
||||
name: cis.truenas.io
|
||||
spec:
|
||||
attachRequired: true
|
||||
fsGroupPolicy: File
|
||||
|
||||
13
infrastructure/hydra/truenas-csi/iscsi-storage-class.yaml
Normal file
13
infrastructure/hydra/truenas-csi/iscsi-storage-class.yaml
Normal file
@@ -0,0 +1,13 @@
|
||||
allowVolumeExpansion: true
|
||||
apiVersion: storage.k8s.io/v1
|
||||
kind: StorageClass
|
||||
metadata:
|
||||
name: truenas-iscsi
|
||||
parameters:
|
||||
compression: LZ4
|
||||
iscsi.blocksize: "4096"
|
||||
protocol: iscsi
|
||||
volblocksize: 16K
|
||||
provisioner: cis.truenas.io
|
||||
reclaimPolicy: Delete
|
||||
volumeBindingMode: Immediate
|
||||
@@ -4,14 +4,16 @@ metadata:
|
||||
name: truenas-csi
|
||||
namespace: truenas-csi
|
||||
resources:
|
||||
- CSIDriver.yaml
|
||||
- nfs-storage-class.yaml
|
||||
- namespace.yaml
|
||||
- controller-deployment.yaml
|
||||
- controller-service-account.yaml
|
||||
- controller-cluster-role.yaml
|
||||
- node-cluster-role.yaml
|
||||
- node-deamonset.yaml
|
||||
- config.yaml
|
||||
- iscsi-storage-class.yaml
|
||||
- controller-deployment.yaml
|
||||
- controller-binding.yaml
|
||||
- node-service-account.yaml
|
||||
- node-cluster-role.yaml
|
||||
- controller-service-account.yaml
|
||||
- node-binding.yaml
|
||||
- node-deamonset.yaml
|
||||
- CSIDriver.yaml
|
||||
- config.yaml
|
||||
|
||||
11
infrastructure/hydra/truenas-csi/nfs-storage-class.yaml
Normal file
11
infrastructure/hydra/truenas-csi/nfs-storage-class.yaml
Normal file
@@ -0,0 +1,11 @@
|
||||
allowVolumeExpansion: true
|
||||
apiVersion: storage.k8s.io/v1
|
||||
kind: StorageClass
|
||||
metadata:
|
||||
name: truenas-nfs
|
||||
parameters:
|
||||
compression: LZ4
|
||||
protocol: nfs
|
||||
provisioner: cis.truenas.io
|
||||
reclaimPolicy: Retain
|
||||
volumeBindingMode: Immediate
|
||||
@@ -17,8 +17,14 @@ var Linkding = Service{
|
||||
}
|
||||
|
||||
var (
|
||||
Longhorn = "longhorn"
|
||||
Monitoring = "monitoring"
|
||||
TrueNAS_CSI = "truenas-csi"
|
||||
TrueNASURL = "apex-truenas.orca-uaru.ts.net"
|
||||
Longhorn = "longhorn"
|
||||
Monitoring = "monitoring"
|
||||
)
|
||||
|
||||
var (
|
||||
TrueNAS_CSI = "truenas-csi"
|
||||
TrueNASURL = "apex-truenas.orca-uaru.ts.net"
|
||||
TrueNASProvisioner = "cis.truenas.io"
|
||||
TrueNASSTorageClassNFS = "truenas-nfs"
|
||||
TrueNASSTorageClass_iSCSI = "truenas-iscsi"
|
||||
)
|
||||
|
||||
56
pkg/truenas/storageclass.go
Normal file
56
pkg/truenas/storageclass.go
Normal file
@@ -0,0 +1,56 @@
|
||||
package truenas
|
||||
|
||||
import (
|
||||
"danicos.dev/daniel/go-kube/pkg/kube"
|
||||
"danicos.dev/daniel/homelab/pkg/root"
|
||||
core "k8s.io/api/core/v1"
|
||||
storage "k8s.io/api/storage/v1"
|
||||
)
|
||||
|
||||
var NFSStorageClass storage.StorageClass
|
||||
var iSCSIStorageClass storage.StorageClass
|
||||
|
||||
func init() {
|
||||
/*
|
||||
From: https://github.com/truenas/truenas-csi
|
||||
*/
|
||||
NFSStorageClass = storage.StorageClass{
|
||||
TypeMeta: kube.StorageClassMeta,
|
||||
ObjectMeta: kube.ObjectMeta(root.TrueNASSTorageClassNFS, ""),
|
||||
Provisioner: root.TrueNASProvisioner,
|
||||
Parameters: map[string]string{
|
||||
"protocol": "nfs",
|
||||
"compression": "LZ4",
|
||||
// Custom NFS mount options passed to clients
|
||||
// "nfs.mountOptions": "hard,nfsvers=4.1",
|
||||
},
|
||||
ReclaimPolicy: new(core.PersistentVolumeReclaimRetain),
|
||||
VolumeBindingMode: new(storage.VolumeBindingImmediate),
|
||||
AllowVolumeExpansion: new(true),
|
||||
}
|
||||
iSCSIStorageClass = storage.StorageClass{
|
||||
TypeMeta: kube.StorageClassMeta,
|
||||
ObjectMeta: kube.ObjectMeta(root.TrueNASSTorageClass_iSCSI, ""),
|
||||
Provisioner: root.TrueNASProvisioner,
|
||||
Parameters: map[string]string{
|
||||
"protocol": "iscsi",
|
||||
"compression": "LZ4",
|
||||
"volblocksize": "16K",
|
||||
"iscsi.blocksize": "4096",
|
||||
},
|
||||
ReclaimPolicy: new(core.PersistentVolumeReclaimDelete),
|
||||
VolumeBindingMode: new(storage.VolumeBindingImmediate),
|
||||
AllowVolumeExpansion: new(true),
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
NFS Parameters
|
||||
Parameter Description Example
|
||||
|
||||
nfs.hosts Allowed hosts 10.0.0.0/8,192.168.1.0/24
|
||||
nfs.networks Allowed networks 10.0.0.0/8
|
||||
nfs.mountOptions Client mount options hard,nfsvers=4.1
|
||||
nfs.mapAllUser NFS user mapping (default: root) postgres
|
||||
nfs.mapAllGroup NFS group mapping (default: wheel) postgres
|
||||
*/
|
||||
@@ -83,8 +83,10 @@ func Stack() stack.Stack {
|
||||
"node-cluster-role": nodeRole,
|
||||
"node-binding": kube.ClusterRoleBinding(nodeRole.Name+"-binding", nodeSA, nodeRole),
|
||||
"node-deamonset": nodeCSI(),
|
||||
"CSIDriver": CSIDriver("csi.truenas.io"),
|
||||
"CSIDriver": CSIDriver(root.TrueNASProvisioner),
|
||||
"config": config,
|
||||
"nfs-storage-class": NFSStorageClass,
|
||||
"iscsi-storage-class": iSCSIStorageClass,
|
||||
},
|
||||
)
|
||||
return kz.Stack(root.TrueNAS_CSI)
|
||||
|
||||
Reference in New Issue
Block a user