diff --git a/_sys/nfs-provisioners/class.yaml b/_sys/nfs-provisioners/class.yaml new file mode 100644 index 0000000..a26a7fd --- /dev/null +++ b/_sys/nfs-provisioners/class.yaml @@ -0,0 +1,27 @@ +--- +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: nfs-ssd +provisioner: nfs-ssd # or choose another name, must match deployment's env PROVISIONER_NAME' +parameters: + archiveOnDelete: "false" +reclaimPolicy: Retain +--- +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: nfs-ssd-ebin01 +provisioner: nfs-ssd-ebin01 # or choose another name, must match deployment's env PROVISIONER_NAME' +parameters: + archiveOnDelete: "false" +reclaimPolicy: Retain +--- +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: nfs-ssd-ebin02 +provisioner: nfs-ssd-ebin02 # or choose another name, must match deployment's env PROVISIONER_NAME' +parameters: + archiveOnDelete: "false" +reclaimPolicy: Retain diff --git a/_sys/nfs-provisioners/deployment-arm.yaml b/_sys/nfs-provisioners/deployment-arm.yaml new file mode 100644 index 0000000..544f8ed --- /dev/null +++ b/_sys/nfs-provisioners/deployment-arm.yaml @@ -0,0 +1,39 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: nfs-client-provisioner + labels: + app: nfs-client-provisioner + # replace with namespace where provisioner is deployed + namespace: default +spec: + replicas: 1 + strategy: + type: Recreate + selector: + matchLabels: + app: nfs-client-provisioner + template: + metadata: + labels: + app: nfs-client-provisioner + spec: + serviceAccountName: nfs-client-provisioner + containers: + - name: nfs-client-provisioner + image: quay.io/external_storage/nfs-client-provisioner-arm:latest + volumeMounts: + - name: nfs-client-root + mountPath: /persistentvolumes + env: + - name: PROVISIONER_NAME + value: nfs-ssd + - name: NFS_SERVER + value: ebin01 + - name: NFS_PATH + value: /data/raid1-ssd/k8s-data + volumes: + - name: nfs-client-root + nfs: + server: ebin01 + path: /data/raid1-ssd/k8s-data diff --git a/_sys/nfs-provisioners/deployment_nfs-ssd-ebin01.yaml b/_sys/nfs-provisioners/deployment_nfs-ssd-ebin01.yaml new file mode 100644 index 0000000..390d821 --- /dev/null +++ b/_sys/nfs-provisioners/deployment_nfs-ssd-ebin01.yaml @@ -0,0 +1,37 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: nfs-ssd-ebin01 + labels: + app: nfs-ssd-ebin01 +spec: + replicas: 1 + strategy: + type: Recreate + selector: + matchLabels: + app: nfs-ssd-ebin01 + template: + metadata: + labels: + app: nfs-ssd-ebin01 + spec: + serviceAccountName: nfs-client-provisioner + containers: + - name: nfs-ssd-ebin01 + image: quay.io/external_storage/nfs-client-provisioner-arm:latest + volumeMounts: + - name: nfs-client-root + mountPath: /persistentvolumes + env: + - name: PROVISIONER_NAME + value: nfs-ssd-ebin01 + - name: NFS_SERVER + value: ebin01 + - name: NFS_PATH + value: /data/raid1-ssd/k8s-data + volumes: + - name: nfs-client-root + nfs: + server: ebin01 + path: /data/raid1-ssd/k8s-data diff --git a/_sys/nfs-provisioners/deployment_nfs-ssd-ebin02.yaml b/_sys/nfs-provisioners/deployment_nfs-ssd-ebin02.yaml new file mode 100644 index 0000000..365dc53 --- /dev/null +++ b/_sys/nfs-provisioners/deployment_nfs-ssd-ebin02.yaml @@ -0,0 +1,37 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: nfs-ssd-ebin02 + labels: + app: nfs-ssd-ebin02 +spec: + replicas: 1 + strategy: + type: Recreate + selector: + matchLabels: + app: nfs-ssd-ebin02 + template: + metadata: + labels: + app: nfs-ssd-ebin02 + spec: + serviceAccountName: nfs-client-provisioner + containers: + - name: nfs-ssd-ebin02 + image: quay.io/external_storage/nfs-client-provisioner-arm:latest + volumeMounts: + - name: nfs-client-root + mountPath: /persistentvolumes + env: + - name: PROVISIONER_NAME + value: nfs-ssd-ebin02 + - name: NFS_SERVER + value: ebin02 + - name: NFS_PATH + value: /data/raid1-ssd/k8s-data + volumes: + - name: nfs-client-root + nfs: + server: ebin02 + path: /data/raid1-ssd/k8s-data diff --git a/_sys/nfs-provisioners/rbac.yaml b/_sys/nfs-provisioners/rbac.yaml new file mode 100644 index 0000000..96324f4 --- /dev/null +++ b/_sys/nfs-provisioners/rbac.yaml @@ -0,0 +1,65 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: nfs-client-provisioner + # replace with namespace where provisioner is deployed + namespace: live-infra +--- +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: nfs-client-provisioner-runner +rules: + - apiGroups: [""] + resources: ["persistentvolumes"] + verbs: ["get", "list", "watch", "create", "delete"] + - apiGroups: [""] + resources: ["persistentvolumeclaims"] + verbs: ["get", "list", "watch", "update"] + - apiGroups: ["storage.k8s.io"] + resources: ["storageclasses"] + verbs: ["get", "list", "watch"] + - apiGroups: [""] + resources: ["events"] + verbs: ["create", "update", "patch"] +--- +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: run-nfs-client-provisioner +subjects: + - kind: ServiceAccount + name: nfs-client-provisioner + # replace with namespace where provisioner is deployed + namespace: live-infra +roleRef: + kind: ClusterRole + name: nfs-client-provisioner-runner + apiGroup: rbac.authorization.k8s.io +--- +kind: Role +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: leader-locking-nfs-client-provisioner + # replace with namespace where provisioner is deployed + namespace: live-infra +rules: + - apiGroups: [""] + resources: ["endpoints"] + verbs: ["get", "list", "watch", "create", "update", "patch"] +--- +kind: RoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: leader-locking-nfs-client-provisioner + # replace with namespace where provisioner is deployed + namespace: live-infra +subjects: + - kind: ServiceAccount + name: nfs-client-provisioner + # replace with namespace where provisioner is deployed + namespace: live-infra +roleRef: + kind: Role + name: leader-locking-nfs-client-provisioner + apiGroup: rbac.authorization.k8s.io