# NFS dynamic provisioning from the Synology (192.168.1.157). # Base dir /volume1/plancknetboot/k8s-volumes; each PVC gets a subdir. apiVersion: v1 kind: ServiceAccount metadata: name: nfs-provisioner namespace: monitoring --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: nfs-provisioner rules: - apiGroups: [""] resources: [persistentvolumes] verbs: [get, list, watch, create, delete] - apiGroups: [""] resources: [persistentvolumeclaims] verbs: [get, list, watch, update] - apiGroups: ["storage.k8s.io"] resources: [storageclasses, volumeattributesclasses] verbs: [get, list, watch] - apiGroups: [""] resources: [events] verbs: [create, update, patch] - apiGroups: ["storage.k8s.io"] resources: [csidrivers] verbs: [get, list] - apiGroups: [""] resources: [nodes] verbs: [get, list, watch] - apiGroups: ["storage.k8s.io"] resources: [volumeattachments] verbs: [get, list, watch, delete] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: nfs-provisioner roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: nfs-provisioner subjects: - kind: ServiceAccount name: nfs-provisioner namespace: monitoring --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: nfs-provisioner namespace: monitoring rules: - apiGroups: [""] resources: [endpoints] verbs: [get, list, watch, create, update, patch] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: nfs-provisioner namespace: monitoring roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: nfs-provisioner subjects: - kind: ServiceAccount name: nfs-provisioner namespace: monitoring --- apiVersion: apps/v1 kind: Deployment metadata: name: nfs-provisioner namespace: monitoring spec: replicas: 1 selector: matchLabels: {app: nfs-provisioner} template: metadata: labels: {app: nfs-provisioner} spec: serviceAccountName: nfs-provisioner containers: - name: nfs-provisioner image: registry.k8s.io/sig-storage/nfs-subdir-external-provisioner:v4.0.2 volumeMounts: - {name: nfs, mountPath: /persistentvolumes} env: - {name: PROVISIONER_NAME, value: nfs-synology} - {name: NFS_SERVER, value: "192.168.1.157"} - {name: NFS_PATH, value: /volume1/plancknetboot/k8s-volumes} - {name: ENABLE_LEADER_ELECTION, value: "false"} resources: requests: {cpu: 20m, memory: 32Mi} limits: {memory: 128Mi} volumes: - name: nfs nfs: server: "192.168.1.157" path: /volume1/plancknetboot/k8s-volumes --- apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: nfs-synology provisioner: nfs-synology reclaimPolicy: Delete volumeBindingMode: Immediate parameters: archiveOnDelete: "true"