diff --git a/nfs-provisioner/deployment.yaml b/nfs-provisioner/deployment.yaml new file mode 100644 index 0000000..4b1f0c1 --- /dev/null +++ b/nfs-provisioner/deployment.yaml @@ -0,0 +1,39 @@ +kind: Deployment +apiVersion: apps/v1 +metadata: + name: nfs-client-provisioner +spec: + replicas: 1 + selector: + matchLabels: + app: nfs-client-provisioner + strategy: + type: Recreate + template: + metadata: + labels: + app: nfs-client-provisioner + spec: + serviceAccountName: nfs-client-provisioner + containers: + - name: nfs-client-provisioner + image: k8s.gcr.io/sig-storage/nfs-subdir-external-provisioner:v4.0.2 + resources: + limits: + cpu: 100m + memory: 100Mi + volumeMounts: + - name: nfs-client-root + mountPath: /persistentvolumes + env: + - name: PROVISIONER_NAME + value: k8s-sigs.io/nfs-subdir-external-provisioner + - name: NFS_SERVER + value: 192.168.0.203 + - name: NFS_PATH + value: /mnt/registry2/k8s-data + volumes: + - name: nfs-client-root + nfs: + server: 192.168.0.203 + path: /mnt/registry2/k8s-data \ No newline at end of file diff --git a/sc-provider/README.md b/sc-provider/README.md new file mode 100644 index 0000000..aa5ac18 --- /dev/null +++ b/sc-provider/README.md @@ -0,0 +1,104 @@ +# Configure Storage Class Provider with NFS + +1. Create storage class + +```yaml +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: nfs-k8s-data + annotations: + storageclass.kubernetes.io/is-default-class: "true" +provisioner: k8s/nfs +allowVolumeExpansion: true +``` + +2. Create service account and permission + +- Create service account + +```yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: nfs-client-provisioner +``` + +- Define cluster role + +```yaml +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: ["list", "watch", "create", "update", "patch"] + - apiGroups: [""] + resources: ["endpoints"] + verbs: ["get", "list", "watch", "create", "update", "patch"] +``` + +- Bind cluster to service account + +```yaml +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: run-nfs-client-provisioner +subjects: + - kind: ServiceAccount + name: nfs-client-provisioner + namespace: default +roleRef: + kind: ClusterRole + name: nfs-client-provisioner-runner + apiGroup: rbac.authorization.k8s.io +``` + +3. Deploy provisioner as pod + +```yaml +kind: Deployment +apiVersion: extensions/v1beta1 +metadata: + name: nfs-client-provisioner +spec: + replicas: 1 + strategy: + type: Recreate + template: + metadata: + labels: + app: nfs-client-provisioner + spec: + serviceAccount: nfs-client-provisioner + containers: + - name: nfs-client-provisioner + image: quay.io/external_storage/nfs-client-provisioner:v3.1.0-k8s1.11 + volumeMounts: + - name: nfs-client-root + mountPath: /persistentvolumes + env: + - name: PROVISIONER_NAME + value: k8s/nfs + - name: NFS_SERVER + value: 192.168.1.119 # nodes will need nfs-common to access nfs protocol + - name: NFS_PATH + value: /export/k8sdynamic + volumes: + - name: nfs-client-root + nfs: + server: 192.168.1.119 + path: /export/k8sdynamic +``` diff --git a/sc-provider/bind-cluster-ac.yaml b/sc-provider/bind-cluster-ac.yaml new file mode 100644 index 0000000..0e949a2 --- /dev/null +++ b/sc-provider/bind-cluster-ac.yaml @@ -0,0 +1,12 @@ +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: run-nfs-client-provisioner +subjects: + - kind: ServiceAccount + name: nfs-client-provisioner + namespace: default +roleRef: + kind: ClusterRole + name: nfs-client-provisioner-runner + apiGroup: rbac.authorization.k8s.io diff --git a/sc-provider/cluster-role.yaml b/sc-provider/cluster-role.yaml new file mode 100644 index 0000000..7f08176 --- /dev/null +++ b/sc-provider/cluster-role.yaml @@ -0,0 +1,20 @@ +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: ["list", "watch", "create", "update", "patch"] + - apiGroups: [""] + resources: ["endpoints"] + verbs: ["get", "list", "watch", "create", "update", "patch"] diff --git a/sc-provider/deployment.yaml b/sc-provider/deployment.yaml new file mode 100644 index 0000000..70732e3 --- /dev/null +++ b/sc-provider/deployment.yaml @@ -0,0 +1,39 @@ +kind: Deployment +apiVersion: apps/v1 +metadata: + name: nfs-client-provisioner +spec: + selector: + matchLabels: + app: nfs-client-provisioner + replicas: 1 + strategy: + type: Recreate + template: + metadata: + labels: + app: nfs-client-provisioner + spec: + serviceAccount: nfs-client-provisioner + containers: + - name: nfs-client-provisioner + image: quay.io/external_storage/nfs-client-provisioner:v3.1.0-k8s1.11 + resources: + limits: + cpu: 100m + memory: 100Mi + volumeMounts: + - name: nfs-client-root + mountPath: /persistentvolumes + env: + - name: PROVISIONER_NAME + value: k8s/nfs + - name: NFS_SERVER + value: 192.168.0.203 # nodes will need nfs-common to access nfs protocol + - name: NFS_PATH + value: /mnt/registry2/k8s-data + volumes: + - name: nfs-client-root + nfs: + server: 192.168.0.203 + path: /mnt/registry2/k8s-data diff --git a/sc-provider/sc.yaml b/sc-provider/sc.yaml new file mode 100644 index 0000000..3ed36e5 --- /dev/null +++ b/sc-provider/sc.yaml @@ -0,0 +1,8 @@ +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: nfs-k8s-data + annotations: + storageclass.kubernetes.io/is-default-class: "true" +provisioner: nfs-client-provisioner +allowVolumeExpansion: true \ No newline at end of file diff --git a/sc-provider/service-account-all.yaml b/sc-provider/service-account-all.yaml new file mode 100644 index 0000000..bf66669 --- /dev/null +++ b/sc-provider/service-account-all.yaml @@ -0,0 +1,40 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: nfs-client-provisioner + +--- +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: ["list", "watch", "create", "update", "patch"] + - apiGroups: [""] + resources: ["endpoints"] + verbs: ["get", "list", "watch", "create", "update", "patch"] + +--- +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: run-nfs-client-provisioner +subjects: + - kind: ServiceAccount + name: nfs-client-provisioner + namespace: default +roleRef: + kind: ClusterRole + name: nfs-client-provisioner-runner + apiGroup: rbac.authorization.k8s.io diff --git a/sc-provider/service-account.yaml b/sc-provider/service-account.yaml new file mode 100644 index 0000000..edead9a --- /dev/null +++ b/sc-provider/service-account.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: nfs-client-provisioner diff --git a/verdaccio/INSTALL.md b/verdaccio/INSTALL.md new file mode 100644 index 0000000..4cb4b31 --- /dev/null +++ b/verdaccio/INSTALL.md @@ -0,0 +1,14 @@ +# Install Verdaccio + +- Installing + +```shell +helm repo add verdaccio https://charts.verdaccio.org +helm install npm verdaccio/verdaccio +``` + +- Create pvc from existing nfs-pc + +```shell +kubectl create -f pvc.yaml +``` diff --git a/verdaccio/pvc.yaml b/verdaccio/pvc.yaml new file mode 100644 index 0000000..7a18143 --- /dev/null +++ b/verdaccio/pvc.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: npm-verdaccio +spec: + storageClassName: nfs + accessModes: + - ReadWriteMany + resources: + requests: + storage: 10Gi \ No newline at end of file