From 18df11e4a438ca713cb813dd8a8ba735854bdaba Mon Sep 17 00:00:00 2001 From: JJGadgets Date: Sat, 12 Aug 2023 04:01:05 +0800 Subject: [PATCH] feat(democratic-csi): add nas-zfs-local --- kube/clusters/nuclear/flux/kustomization.yaml | 1 + .../nas-zfs-local/app/dataset.yaml | 78 +++++++++++++++++++ .../nas-zfs-local/app/zvol.yaml | 76 ++++++++++++++++++ .../democratic-csi/nas-zfs-local/ks.yaml | 9 +++ .../nas-zfs-local/kustomization.yaml | 5 ++ 5 files changed, 169 insertions(+) create mode 100644 kube/deploy/core/storage/democratic-csi/nas-zfs-local/app/dataset.yaml create mode 100644 kube/deploy/core/storage/democratic-csi/nas-zfs-local/app/zvol.yaml create mode 100644 kube/deploy/core/storage/democratic-csi/nas-zfs-local/ks.yaml create mode 100644 kube/deploy/core/storage/democratic-csi/nas-zfs-local/kustomization.yaml diff --git a/kube/clusters/nuclear/flux/kustomization.yaml b/kube/clusters/nuclear/flux/kustomization.yaml index ec0bd7d4..f39b009f 100644 --- a/kube/clusters/nuclear/flux/kustomization.yaml +++ b/kube/clusters/nuclear/flux/kustomization.yaml @@ -14,6 +14,7 @@ resources: - ../../../deploy/core/storage/rook-ceph/cluster/ - ../../../deploy/core/storage/democratic-csi/_deps/ - ../../../deploy/core/storage/democratic-csi/local-hostpath/ + - ../../../deploy/core/storage/democratic-csi/nas-zfs-local/ - ../../../deploy/core/storage/volsync/ - ../../../deploy/core/tls/cert-manager/ - ../../../deploy/core/dns/internal/_deps/ diff --git a/kube/deploy/core/storage/democratic-csi/nas-zfs-local/app/dataset.yaml b/kube/deploy/core/storage/democratic-csi/nas-zfs-local/app/dataset.yaml new file mode 100644 index 00000000..57739ff9 --- /dev/null +++ b/kube/deploy/core/storage/democratic-csi/nas-zfs-local/app/dataset.yaml @@ -0,0 +1,78 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2beta1 +kind: HelmRelease +metadata: + name: nas-zfs-local-dataset + namespace: democratic-csi +spec: + chart: + spec: + chart: democratic-csi + version: 0.13.7 + sourceRef: + name: democratic-csi + kind: HelmRepository + namespace: flux-system + values: + csiDriver: + name: "nas-zfs-local-dataset.democratic-csi.${CLUSTER_NAME}.home.arpa" + attachRequired: false + storageCapacity: true + fsGroupPolicy: File + + storageClasses: + - name: nas-zfs-local-dataset + defaultClass: false + reclaimPolicy: Retain + # distributed support is not yet ready for expansion + allowVolumeExpansion: false + parameters: + fsType: zfs + mountOptions: ["noatime"] + # below selects node(s) for this storageClass + volumeBindingMode: WaitForFirstConsumer + allowedTopologies: + - matchLabelExpressions: + - key: role.nodes.home.arpa/nas + values: ["true"] + + volumeSnapshotClasses: + - name: nas-zfs-local-dataset + deletionPolicy: Delete + + controller: + enabled: true + strategy: node + nodeSelector: + role.nodes.home.arpa/nas: "true" + externalProvisioner: + extraArgs: ["--leader-election=false", "--node-deployment=true", "--node-deployment-immediate-binding=false", "--feature-gates=Topology=true", "--strict-topology=true", "--enable-capacity=true", "--capacity-ownerref-level=1"] + + externalAttacher: + enabled: false + + # distributed support is not yet ready + externalResizer: + enabled: false + + externalSnapshotter: + enabled: true + extraArgs: ["--leader-election=false", "--node-deployment=true"] + + node: + nodeSelector: + role.nodes.home.arpa/nas: "true" + + driver: + config: + driver: zfs-local-dataset + zfs: + datasetParentName: bigsmoke/data + detachedSnapshotsDatasetParentName: bigsmoke/data/s + datasetProperties: + recordsize: "1M" + compression: "zstd-9" + atime: "off" + overlay: "on" + datasetEnableQuotas: true + datasetEnableReservation: false \ No newline at end of file diff --git a/kube/deploy/core/storage/democratic-csi/nas-zfs-local/app/zvol.yaml b/kube/deploy/core/storage/democratic-csi/nas-zfs-local/app/zvol.yaml new file mode 100644 index 00000000..f2a74bde --- /dev/null +++ b/kube/deploy/core/storage/democratic-csi/nas-zfs-local/app/zvol.yaml @@ -0,0 +1,76 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2beta1 +kind: HelmRelease +metadata: + name: nas-zfs-local-zvol + namespace: democratic-csi +spec: + chart: + spec: + chart: democratic-csi + version: 0.13.7 + sourceRef: + name: democratic-csi + kind: HelmRepository + namespace: flux-system + values: + csiDriver: + name: "nas-zfs-local-zvol.democratic-csi.${CLUSTER_NAME}.home.arpa" + attachRequired: false + storageCapacity: true + fsGroupPolicy: File + + storageClasses: + - name: nas-zfs-local-zvol + defaultClass: false + reclaimPolicy: Retain + # distributed support is not yet ready for expansion + allowVolumeExpansion: false + parameters: + fsType: ext4 + mountOptions: ["noatime"] + # below selects node(s) for this storageClass + volumeBindingMode: WaitForFirstConsumer + allowedTopologies: + - matchLabelExpressions: + - key: role.nodes.home.arpa/nas + values: ["true"] + + volumeSnapshotClasses: + - name: nas-zfs-local-zvol + deletionPolicy: Delete + + controller: + enabled: true + strategy: node + nodeSelector: + role.nodes.home.arpa/nas: "true" + externalProvisioner: + extraArgs: ["--leader-election=false", "--node-deployment=true", "--node-deployment-immediate-binding=false", "--feature-gates=Topology=true", "--strict-topology=true", "--enable-capacity=true", "--capacity-ownerref-level=1"] + + externalAttacher: + enabled: false + + # distributed support is not yet ready + externalResizer: + enabled: false + + externalSnapshotter: + enabled: true + extraArgs: ["--leader-election=false", "--node-deployment=true"] + + node: + nodeSelector: + role.nodes.home.arpa/nas: "true" + + driver: + config: + driver: zfs-local-zvol + zfs: + datasetParentName: bigsmoke/vol + detachedSnapshotsDatasetParentName: bigsmoke/vol/s + datasetProperties: + atime: "off" + zvolCompression: "zstd-9" + zvolEnableReservation: false + zvolBlocksize: "32k" diff --git a/kube/deploy/core/storage/democratic-csi/nas-zfs-local/ks.yaml b/kube/deploy/core/storage/democratic-csi/nas-zfs-local/ks.yaml new file mode 100644 index 00000000..69c19751 --- /dev/null +++ b/kube/deploy/core/storage/democratic-csi/nas-zfs-local/ks.yaml @@ -0,0 +1,9 @@ +--- +apiVersion: kustomize.toolkit.fluxcd.io/v1 +kind: Kustomization +metadata: + name: 1-core-storage-democratic-csi-nas-zfs-local + namespace: flux-system +spec: + path: ./kube/deploy/core/storage/democratic-csi/nas-zfs-local/app + dependsOn: [] \ No newline at end of file diff --git a/kube/deploy/core/storage/democratic-csi/nas-zfs-local/kustomization.yaml b/kube/deploy/core/storage/democratic-csi/nas-zfs-local/kustomization.yaml new file mode 100644 index 00000000..70a77029 --- /dev/null +++ b/kube/deploy/core/storage/democratic-csi/nas-zfs-local/kustomization.yaml @@ -0,0 +1,5 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ks.yaml