From 935f29fc129f86e0a9c744e40825fb8706eeded3 Mon Sep 17 00:00:00 2001 From: andyzhangx Date: Sun, 3 Jul 2022 00:47:15 +0000 Subject: [PATCH] doc: cut v4.1.0 release --- README.md | 5 +- charts/README.md | 2 +- charts/index.yaml | 25 ++-- charts/latest/csi-driver-nfs-v4.1.0.tgz | Bin 3706 -> 3681 bytes charts/latest/csi-driver-nfs/Chart.yaml | 2 +- charts/latest/csi-driver-nfs/values.yaml | 4 +- charts/v4.1.0/csi-driver-nfs-v4.1.0.tgz | Bin 0 -> 3681 bytes charts/v4.1.0/csi-driver-nfs/.helmignore | 22 +++ charts/v4.1.0/csi-driver-nfs/Chart.yaml | 5 + .../v4.1.0/csi-driver-nfs/templates/NOTES.txt | 5 + .../csi-driver-nfs/templates/_helpers.tpl | 19 +++ .../templates/csi-nfs-controller.yaml | 121 ++++++++++++++++ .../templates/csi-nfs-driverinfo.yaml | 15 ++ .../templates/csi-nfs-node.yaml | 134 ++++++++++++++++++ .../templates/rbac-csi-nfs.yaml | 64 +++++++++ charts/v4.1.0/csi-driver-nfs/values.yaml | 115 +++++++++++++++ deploy/csi-nfs-controller.yaml | 2 +- deploy/csi-nfs-node.yaml | 2 +- deploy/v4.1.0/csi-nfs-controller.yaml | 119 ++++++++++++++++ deploy/v4.1.0/csi-nfs-driverinfo.yaml | 11 ++ deploy/v4.1.0/csi-nfs-node.yaml | 131 +++++++++++++++++ deploy/v4.1.0/rbac-csi-nfs.yaml | 57 ++++++++ docs/install-csi-driver-v4.1.0.md | 45 ++++++ docs/install-nfs-csi-driver.md | 2 +- 24 files changed, 889 insertions(+), 18 deletions(-) create mode 100644 charts/v4.1.0/csi-driver-nfs-v4.1.0.tgz create mode 100644 charts/v4.1.0/csi-driver-nfs/.helmignore create mode 100644 charts/v4.1.0/csi-driver-nfs/Chart.yaml create mode 100644 charts/v4.1.0/csi-driver-nfs/templates/NOTES.txt create mode 100644 charts/v4.1.0/csi-driver-nfs/templates/_helpers.tpl create mode 100644 charts/v4.1.0/csi-driver-nfs/templates/csi-nfs-controller.yaml create mode 100644 charts/v4.1.0/csi-driver-nfs/templates/csi-nfs-driverinfo.yaml create mode 100644 charts/v4.1.0/csi-driver-nfs/templates/csi-nfs-node.yaml create mode 100644 charts/v4.1.0/csi-driver-nfs/templates/rbac-csi-nfs.yaml create mode 100644 charts/v4.1.0/csi-driver-nfs/values.yaml create mode 100644 deploy/v4.1.0/csi-nfs-controller.yaml create mode 100644 deploy/v4.1.0/csi-nfs-driverinfo.yaml create mode 100644 deploy/v4.1.0/csi-nfs-node.yaml create mode 100644 deploy/v4.1.0/rbac-csi-nfs.yaml create mode 100644 docs/install-csi-driver-v4.1.0.md diff --git a/README.md b/README.md index 7a4a397c2..286086a1c 100644 --- a/README.md +++ b/README.md @@ -12,10 +12,9 @@ This is a repository for [NFS](https://en.wikipedia.org/wiki/Network_File_System |driver version | supported k8s version | status | |----------------|-----------------------|--------| |master branch | 1.20+ | GA | -|v4.0.0 | 1.10+ | GA | +|v4.1.0 | 1.20+ | GA | +|v4.0.0 | 1.20+ | GA | |v3.1.0 | 1.19+ | beta | -|v3.0.0 | 1.19+ | beta | -|v2.0.0 | 1.14+ | alpha | ### Install driver on a Kubernetes cluster > [install NFS CSI driver on microk8s](https://microk8s.io/docs/nfs) diff --git a/charts/README.md b/charts/README.md index 77b62d875..685b91b28 100644 --- a/charts/README.md +++ b/charts/README.md @@ -10,7 +10,7 @@ ### install a specific version ```console helm repo add csi-driver-nfs https://raw.githubusercontent.com/kubernetes-csi/csi-driver-nfs/master/charts -helm install csi-driver-nfs csi-driver-nfs/csi-driver-nfs --namespace kube-system --version v4.0.0 +helm install csi-driver-nfs csi-driver-nfs/csi-driver-nfs --namespace kube-system --version v4.1.0 ``` ### install driver with customized driver name, deployment name diff --git a/charts/index.yaml b/charts/index.yaml index ad8b45232..a4399d2f7 100644 --- a/charts/index.yaml +++ b/charts/index.yaml @@ -2,17 +2,26 @@ apiVersion: v1 entries: csi-driver-nfs: - apiVersion: v1 - appVersion: latest - created: "2022-05-06T12:35:56.694935968Z" + appVersion: v4.1.0 + created: "2022-07-03T00:45:29.134502635Z" description: CSI NFS Driver for Kubernetes - digest: 9138032fc8c0e8188acd492bb722cd428bae5de4fd1032b60fb1ce8245e82447 + digest: f4084f923e5907708b749c7d3f4244e2e8c308b58a0f945ac4190a5120b7af53 name: csi-driver-nfs urls: - https://raw.githubusercontent.com/kubernetes-csi/csi-driver-nfs/master/charts/latest/csi-driver-nfs-v4.1.0.tgz version: v4.1.0 + - apiVersion: v1 + appVersion: v4.1.0 + created: "2022-07-03T00:45:29.139509957Z" + description: CSI NFS Driver for Kubernetes + digest: f6c513b1f58bc7508032c7609738756f8690555f0e23a3a2ba02dbbd585b7ead + name: csi-driver-nfs + urls: + - https://raw.githubusercontent.com/kubernetes-csi/csi-driver-nfs/master/charts/v4.1.0/csi-driver-nfs-v4.1.0.tgz + version: v4.1.0 - apiVersion: v1 appVersion: v4.0.0 - created: "2022-05-06T12:35:56.6991353Z" + created: "2022-07-03T00:45:29.138878454Z" description: CSI NFS Driver for Kubernetes digest: cb537287512ce9f99adaead8cd4904ed7284780bdc44c9b8d6705e66f28bfa5c name: csi-driver-nfs @@ -21,7 +30,7 @@ entries: version: v4.0.0 - apiVersion: v1 appVersion: v3.1.0 - created: "2022-05-06T12:35:56.698222193Z" + created: "2022-07-03T00:45:29.137776749Z" description: CSI NFS Driver for Kubernetes digest: 7e51bb9188b013195cafc265102fa365de9ec5513780e1dfc5363289f811a4d9 name: csi-driver-nfs @@ -30,7 +39,7 @@ entries: version: v3.1.0 - apiVersion: v1 appVersion: v3.0.0 - created: "2022-05-06T12:35:56.696122977Z" + created: "2022-07-03T00:45:29.136576644Z" description: CSI NFS Driver for Kubernetes digest: 44406231cd5cdada1c62a0541b93b4f5d5a70ccc8c50b33553a8692fe6cfae96 name: csi-driver-nfs @@ -39,11 +48,11 @@ entries: version: v3.0.0 - apiVersion: v1 appVersion: v2.0.0 - created: "2022-05-06T12:35:56.695364072Z" + created: "2022-07-03T00:45:29.135471939Z" description: CSI NFS Driver for Kubernetes digest: 1a32c6fc016526fe19a0c9e0dfbe83d0ddde67ced533bb5f5d24d713f706c613 name: csi-driver-nfs urls: - https://raw.githubusercontent.com/kubernetes-csi/csi-driver-nfs/master/charts/v2.0.0/csi-driver-nfs-v2.0.0.tgz version: v2.0.0 -generated: "2022-05-06T12:35:56.693722959Z" +generated: "2022-07-03T00:45:29.133472331Z" diff --git a/charts/latest/csi-driver-nfs-v4.1.0.tgz b/charts/latest/csi-driver-nfs-v4.1.0.tgz index 81d33c522a8bf1a2e4449a5c8dc1bfbba85fb4f0..b0eac9fb060cb37b7908c1301e845438e62fbad5 100644 GIT binary patch delta 3653 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 wNTo1N&kJabr0v>C@oz7fs7S=v{${Dc zVQyr3R8em|NM&qo0PI}rbK5wQ&u9J>ee!(B#Qq+$nouKsjP_+-nMCxEl z687ftN~hE5?CtE>znxB}{%Hmj^!7U4z3txi-kVN$r_i(yu5L6+DDV*CS~<|GE=&gN_%YiX=_7eRj}4hLcZyIJ7DQLm}apY=DxZ zM&)smUZ|}Bili5Q$`q_ zAV;N6r5NDd`6#-lrhAQxUhrX4F1U!%`P(x$7`dlR457l8cM0N(2WC9MwG@n@bXyJ|Du4dWR|K};gd_-J2>qOcoLxh%G`x_8c@WJzjNOUHx5+Nr8hM)RB zOOd68bn~HH-7#mB<5$5lGlrFh=Urw4WT+3R452+Cvd!qAoj>%vk~C(_ElS0+3d3kb zR0w97WyZho&qQe>MK@6X@W6FCWrX9rs=*@0NSGd<3aLZr{mmtPSTbK5OY-s;1Gu-V;W!!$b?X4J?NKJ1;t#x!wl~zRs4u=@&5LzdqAB{227`8T|pRZDC1pefs_zxOJq7s>mFqd4j zzh*R{y0n2Lm{>2h)9HMsUg5p|ouMkXiqb5EZYNpj)+>57I^|`9bssobX$xF7MDGDZ zcxIUv4c0t;O6y3-^>2Je$9aOP$!=ih+xIoIMs2I9)blR#@(uO{^=kVedbPC$XE;QO zJVLYE365r)ON2yF7)jJB-vrIh2UljZHk&==Bd`&mG9)ApLl|qFs<7Rz`jJ>fs;!B- zRK}$Y=_r%vry{nS4WS%m+tBkZF+Y`bLNpdp$F%KjZMjJEG-Isq7z*L{KfEpQb7N@b zT@4k-a_jZ%_~@l}{?nMGjA&HtlP~8-{Xk#qhmWxi|Jm;C)XsmqyW5@D^WSq6I3Hsj z)u9STsI~D0F{VsRF*eS^2H%m}NdnJ17Z8mxx~%t3MXW$+qBHd#QiepKi6}$Q128@$ z(hPjx*tkkbg!?x)5S*cH7n~GN;r7<>;E4IY$~Tq$mUJx_dco~&3w-~I=xF@XGX0jy zQv1IcBTG@LK&KCdg4Wo7x3^u#fA@BJulD~e<>sdS4kk1SL7|2rWvHhq?k7ep(HKK` z*S@{=JlpK(Iwd>?Jx04ln}fCa9NCDb$6+49-nRWnlYTZF(rak>b7IJ2``NL^EP!Q!gfX&Y9!^3dU#__$ z=02Oqilk}nv_!emghwVCX>vG?eGf-KziZb#^-+Uj6@b z6yNu~OUmOA4sEEHAlF_wDM->(wI^LKK}}+!$sDaP4x=#exsq__PV!bZm~%~=Vm#w3 zD34ec*BoO2P>H2vTHjz`A$zcQD z_Z)>g3mM`$ybBS$5^9B(auvfpbhJoF8> zB#tF2wg1E0kB5h6NB#bf4GkHR7^QF5kP5!O#RiA{1|oQ^CGnjP@e8lJZ#+=BG4e@$ zf=>AP1S)mlAoCDRbYuPnN<^3SbvZ31J=ckRo**rIdVq<|-Pw%S!UDJyA<<*UM~y?r zz2OVBKX;t~WsKa~T0O`v?}B;58oTfp@LZd_y)wgv&oNH;h_BBmVWO{#FEi`aB3_lf8?>Fy2RTk$tkLvO|YLormoph&4`#!3(LOD!X zu37g`oeH;WHHQz?ChB71q%}%nnk=e@!YH%8UvQ1rx+<7d(g|fa!g!WQpO=WFWI!3! z6l?MXAaNYR@2&nn`xhS%KOdj8{-`t{jESq$g7}e&2qW$uTy2!~Yj0+?Y{i?sv_Dy< zqIssS*=?HrmB#x&ygm7Hcyw`m*yO>H$El!P@Bi@jpnrUEbaHt5<@n^hsi`{~nl&zS zXN-|~Um+qNOl*iDL* zjB;Pp`iaI=x=@R-x(PjJv|-MD%^QW2RYQ!tR7B?7Y1#G`HDPmk>1m1~99r=RIb9gO zapst$dTK8!-TcSHkZbWjS4sI$JQ4oa>Fjnob^LE<@AdxwvlQR=D{xNi;sge`i#hAg#Dg=-k4ubcoS3V)$9aIJ+ivYFJX*-GZ%Q z82N3=VDY+S?s0rLO2?R>B+RQ~A}c9XE@j&0Lshw^`H3>D5Pa$NduUl}|0afc;QIh; z@c(XayMF)ULvOeDYX8qsO87s)MDRY|1OB%<^0dHzmc~S5UrVBKG<810#2=K8ezR3Y zoKU~pSZA|ZUqmP_PB<$Qyifk1CWxoX9Mp#S266^lAS4}8PMA#&M1pe{u)>wdSPTP% zffSd>Eov(=U8Vub-9~!kEJE4C`HC!J##YQPk|$_p9LUXPwP)h`Mi}#er2k7 ztxZhL%9mK}mEeu1B{SwWS|3PCZ6-~bgH3*(DQ)P#x6)a@FW;c^MiZ0++hByc^&VP` zD*M;I>S;bWv6xS>*^1EiyT^bLBQ)7~RF{xw8mpQ@Z5lam5iz3FhV$HTPB=lX?;*K- zHt(U8E*ozBv?4`~bv){X9z-w_LdKMrEud)(Yqw7$w8qtUsg$Pi{_y7cxRP=IM0rg4 z=qYTxc1PVGVVBgqsEAM^|W{^>4Tmhscx+Ei1 zfwu+cW2!)9sYQrDjgc`JF)?t-amq*UK_VlXPSBneOV0_9y)EGA&iU{*l{lo=7`yD` zfBhK17tW^kmugbS5~L`BQI3HZ9QH5zT1fP^;6Nma;PCaJ4>6U>3r1A8?f;H_FBtqO z+xGwB!Fbd*{}o@=gtzB}1|+)7Qv2?^^4*WY_f-Bb00960aC4bO09*h7AgD!7 literal 0 HcmV?d00001 diff --git a/charts/v4.1.0/csi-driver-nfs/.helmignore b/charts/v4.1.0/csi-driver-nfs/.helmignore new file mode 100644 index 000000000..50af03172 --- /dev/null +++ b/charts/v4.1.0/csi-driver-nfs/.helmignore @@ -0,0 +1,22 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/charts/v4.1.0/csi-driver-nfs/Chart.yaml b/charts/v4.1.0/csi-driver-nfs/Chart.yaml new file mode 100644 index 000000000..db247cbb9 --- /dev/null +++ b/charts/v4.1.0/csi-driver-nfs/Chart.yaml @@ -0,0 +1,5 @@ +apiVersion: v1 +appVersion: v4.1.0 +description: CSI NFS Driver for Kubernetes +name: csi-driver-nfs +version: v4.1.0 diff --git a/charts/v4.1.0/csi-driver-nfs/templates/NOTES.txt b/charts/v4.1.0/csi-driver-nfs/templates/NOTES.txt new file mode 100644 index 000000000..19e9a2ea4 --- /dev/null +++ b/charts/v4.1.0/csi-driver-nfs/templates/NOTES.txt @@ -0,0 +1,5 @@ + The CSI NFS Driver is getting deployed to your cluster. + +To check CSI NFS Driver pods status, please run: + + kubectl --namespace={{ .Release.Namespace }} get pods --selector="release={{ .Release.Name }}" --watch \ No newline at end of file diff --git a/charts/v4.1.0/csi-driver-nfs/templates/_helpers.tpl b/charts/v4.1.0/csi-driver-nfs/templates/_helpers.tpl new file mode 100644 index 000000000..901a53f19 --- /dev/null +++ b/charts/v4.1.0/csi-driver-nfs/templates/_helpers.tpl @@ -0,0 +1,19 @@ +{{/* vim: set filetype=mustache: */}} + +{{/* Expand the name of the chart.*/}} +{{- define "nfs.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* labels for helm resources */}} +{{- define "nfs.labels" -}} +labels: + app.kubernetes.io/instance: "{{ .Release.Name }}" + app.kubernetes.io/managed-by: "{{ .Release.Service }}" + app.kubernetes.io/name: "{{ template "nfs.name" . }}" + app.kubernetes.io/version: "{{ .Chart.AppVersion }}" + helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}" + {{- if .Values.customLabels }} +{{ toYaml .Values.customLabels | indent 2 -}} + {{- end }} +{{- end -}} diff --git a/charts/v4.1.0/csi-driver-nfs/templates/csi-nfs-controller.yaml b/charts/v4.1.0/csi-driver-nfs/templates/csi-nfs-controller.yaml new file mode 100644 index 000000000..5cba97581 --- /dev/null +++ b/charts/v4.1.0/csi-driver-nfs/templates/csi-nfs-controller.yaml @@ -0,0 +1,121 @@ +--- +kind: Deployment +apiVersion: apps/v1 +metadata: + name: {{ .Values.controller.name }} + namespace: {{ .Release.Namespace }} +{{ include "nfs.labels" . | indent 2 }} +spec: + replicas: {{ .Values.controller.replicas }} + selector: + matchLabels: + app: {{ .Values.controller.name }} + template: + metadata: +{{ include "nfs.labels" . | indent 6 }} + app: {{ .Values.controller.name }} + spec: + {{- if .Values.imagePullSecrets }} + imagePullSecrets: +{{ toYaml .Values.imagePullSecrets | indent 8 }} + {{- end }} + hostNetwork: true # controller also needs to mount nfs to create dir + dnsPolicy: {{ .Values.controller.dnsPolicy }} + serviceAccountName: {{ .Values.serviceAccount.controller }} +{{- with .Values.controller.affinity }} + affinity: +{{ toYaml . | indent 8 }} +{{- end }} + nodeSelector: + kubernetes.io/os: linux + {{- if .Values.controller.runOnMaster}} + node-role.kubernetes.io/master: "" + {{- end}} + {{- if .Values.controller.runOnControlPlane}} + node-role.kubernetes.io/control-plane: "" + {{- end}} +{{- with .Values.controller.nodeSelector }} +{{ toYaml . | indent 8 }} +{{- end }} + priorityClassName: system-cluster-critical +{{- with .Values.controller.tolerations }} + tolerations: +{{ toYaml . | indent 8 }} +{{- end }} + containers: + - name: csi-provisioner + image: "{{ .Values.image.csiProvisioner.repository }}:{{ .Values.image.csiProvisioner.tag }}" + args: + - "-v=2" + - "--csi-address=$(ADDRESS)" + - "--leader-election" + - "--leader-election-namespace={{ .Release.Namespace }}" + - "--extra-create-metadata=true" + env: + - name: ADDRESS + value: /csi/csi.sock + imagePullPolicy: {{ .Values.image.csiProvisioner.pullPolicy }} + volumeMounts: + - mountPath: /csi + name: socket-dir + resources: {{- toYaml .Values.controller.resources.csiProvisioner | nindent 12 }} + - name: liveness-probe + image: "{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}" + args: + - --csi-address=/csi/csi.sock + - --probe-timeout=3s + - --health-port={{ .Values.controller.livenessProbe.healthPort }} + - --v=2 + imagePullPolicy: {{ .Values.image.livenessProbe.pullPolicy }} + volumeMounts: + - name: socket-dir + mountPath: /csi + resources: {{- toYaml .Values.controller.resources.livenessProbe | nindent 12 }} + - name: nfs + image: "{{ .Values.image.nfs.repository }}:{{ .Values.image.nfs.tag }}" + securityContext: + privileged: true + capabilities: + add: ["SYS_ADMIN"] + allowPrivilegeEscalation: true + imagePullPolicy: {{ .Values.image.nfs.pullPolicy }} + args: + - "--v={{ .Values.controller.logLevel }}" + - "--nodeid=$(NODE_ID)" + - "--endpoint=$(CSI_ENDPOINT)" + - "--drivername={{ .Values.driver.name }}" + - "--mount-permissions={{ .Values.driver.mountPermissions }}" + - "--working-mount-dir={{ .Values.controller.workingMountDir }}" + env: + - name: NODE_ID + valueFrom: + fieldRef: + fieldPath: spec.nodeName + - name: CSI_ENDPOINT + value: unix:///csi/csi.sock + ports: + - containerPort: {{ .Values.controller.livenessProbe.healthPort }} + name: healthz + protocol: TCP + livenessProbe: + failureThreshold: 5 + httpGet: + path: /healthz + port: healthz + initialDelaySeconds: 30 + timeoutSeconds: 10 + periodSeconds: 30 + volumeMounts: + - name: pods-mount-dir + mountPath: {{ .Values.kubeletDir }}/pods + mountPropagation: "Bidirectional" + - mountPath: /csi + name: socket-dir + resources: {{- toYaml .Values.controller.resources.nfs | nindent 12 }} + volumes: + - name: pods-mount-dir + hostPath: + path: {{ .Values.kubeletDir }}/pods + type: Directory + - name: socket-dir + emptyDir: {} diff --git a/charts/v4.1.0/csi-driver-nfs/templates/csi-nfs-driverinfo.yaml b/charts/v4.1.0/csi-driver-nfs/templates/csi-nfs-driverinfo.yaml new file mode 100644 index 000000000..a6afd8960 --- /dev/null +++ b/charts/v4.1.0/csi-driver-nfs/templates/csi-nfs-driverinfo.yaml @@ -0,0 +1,15 @@ +--- +apiVersion: storage.k8s.io/v1 +kind: CSIDriver +metadata: + name: {{ .Values.driver.name }} +spec: + attachRequired: false + volumeLifecycleModes: + - Persistent + {{- if .Values.feature.enableInlineVolume}} + - Ephemeral + {{- end}} + {{- if .Values.feature.enableFSGroupPolicy}} + fsGroupPolicy: File + {{- end}} diff --git a/charts/v4.1.0/csi-driver-nfs/templates/csi-nfs-node.yaml b/charts/v4.1.0/csi-driver-nfs/templates/csi-nfs-node.yaml new file mode 100644 index 000000000..b9f819fc2 --- /dev/null +++ b/charts/v4.1.0/csi-driver-nfs/templates/csi-nfs-node.yaml @@ -0,0 +1,134 @@ +--- +kind: DaemonSet +apiVersion: apps/v1 +metadata: + name: {{ .Values.node.name }} + namespace: {{ .Release.Namespace }} +{{ include "nfs.labels" . | indent 2 }} +spec: + updateStrategy: + rollingUpdate: + maxUnavailable: {{ .Values.node.maxUnavailable }} + type: RollingUpdate + selector: + matchLabels: + app: {{ .Values.node.name }} + template: + metadata: +{{ include "nfs.labels" . | indent 6 }} + app: {{ .Values.node.name }} + spec: + {{- if .Values.imagePullSecrets }} + imagePullSecrets: +{{ toYaml .Values.imagePullSecrets | indent 8 }} + {{- end }} + hostNetwork: true # original nfs connection would be broken without hostNetwork setting + dnsPolicy: {{ .Values.controller.dnsPolicy }} + serviceAccountName: csi-nfs-node-sa +{{- with .Values.node.affinity }} + affinity: +{{ toYaml . | indent 8 }} +{{- end }} + nodeSelector: + kubernetes.io/os: linux +{{- with .Values.node.nodeSelector }} +{{ toYaml . | indent 8 }} +{{- end }} +{{- with .Values.node.tolerations }} + tolerations: +{{ toYaml . | indent 8 }} +{{- end }} + containers: + - name: liveness-probe + image: "{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}" + args: + - --csi-address=/csi/csi.sock + - --probe-timeout=3s + - --health-port={{ .Values.node.livenessProbe.healthPort }} + - --v=2 + imagePullPolicy: {{ .Values.image.livenessProbe.pullPolicy }} + volumeMounts: + - name: socket-dir + mountPath: /csi + resources: {{- toYaml .Values.node.resources.livenessProbe | nindent 12 }} + - name: node-driver-registrar + image: "{{ .Values.image.nodeDriverRegistrar.repository }}:{{ .Values.image.nodeDriverRegistrar.tag }}" + livenessProbe: + exec: + command: + - /csi-node-driver-registrar + - --kubelet-registration-path=$(DRIVER_REG_SOCK_PATH) + - --mode=kubelet-registration-probe + initialDelaySeconds: 30 + timeoutSeconds: 15 + args: + - --v=2 + - --csi-address=/csi/csi.sock + - --kubelet-registration-path=$(DRIVER_REG_SOCK_PATH) + env: + - name: DRIVER_REG_SOCK_PATH + value: {{ .Values.kubeletDir }}/plugins/csi-nfsplugin/csi.sock + - name: KUBE_NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + imagePullPolicy: {{ .Values.image.nodeDriverRegistrar.pullPolicy }} + volumeMounts: + - name: socket-dir + mountPath: /csi + - name: registration-dir + mountPath: /registration + resources: {{- toYaml .Values.node.resources.nodeDriverRegistrar | nindent 12 }} + - name: nfs + securityContext: + privileged: true + capabilities: + add: ["SYS_ADMIN"] + allowPrivilegeEscalation: true + image: "{{ .Values.image.nfs.repository }}:{{ .Values.image.nfs.tag }}" + args : + - "--v={{ .Values.node.logLevel }}" + - "--nodeid=$(NODE_ID)" + - "--endpoint=$(CSI_ENDPOINT)" + - "--drivername={{ .Values.driver.name }}" + - "--mount-permissions={{ .Values.driver.mountPermissions }}" + env: + - name: NODE_ID + valueFrom: + fieldRef: + fieldPath: spec.nodeName + - name: CSI_ENDPOINT + value: unix:///csi/csi.sock + ports: + - containerPort: {{ .Values.node.livenessProbe.healthPort }} + name: healthz + protocol: TCP + livenessProbe: + failureThreshold: 5 + httpGet: + path: /healthz + port: healthz + initialDelaySeconds: 30 + timeoutSeconds: 10 + periodSeconds: 30 + imagePullPolicy: {{ .Values.image.nfs.pullPolicy }} + volumeMounts: + - name: socket-dir + mountPath: /csi + - name: pods-mount-dir + mountPath: {{ .Values.kubeletDir }}/pods + mountPropagation: "Bidirectional" + resources: {{- toYaml .Values.node.resources.nfs | nindent 12 }} + volumes: + - name: socket-dir + hostPath: + path: {{ .Values.kubeletDir }}/plugins/csi-nfsplugin + type: DirectoryOrCreate + - name: pods-mount-dir + hostPath: + path: {{ .Values.kubeletDir }}/pods + type: Directory + - hostPath: + path: {{ .Values.kubeletDir }}/plugins_registry + type: Directory + name: registration-dir diff --git a/charts/v4.1.0/csi-driver-nfs/templates/rbac-csi-nfs.yaml b/charts/v4.1.0/csi-driver-nfs/templates/rbac-csi-nfs.yaml new file mode 100644 index 000000000..8478af733 --- /dev/null +++ b/charts/v4.1.0/csi-driver-nfs/templates/rbac-csi-nfs.yaml @@ -0,0 +1,64 @@ +{{- if .Values.serviceAccount.create -}} +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: csi-{{ .Values.rbac.name }}-controller-sa + namespace: {{ .Release.Namespace }} +{{ include "nfs.labels" . | indent 2 }} +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: csi-{{ .Values.rbac.name }}-node-sa + namespace: {{ .Release.Namespace }} +{{ include "nfs.labels" . | indent 2 }} +--- +{{- end -}} + +{{- if .Values.rbac.create -}} +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: {{ .Values.rbac.name }}-external-provisioner-role +{{ include "nfs.labels" . | indent 2 }} +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: ["get", "list", "watch", "create", "update", "patch"] + - apiGroups: ["storage.k8s.io"] + resources: ["csinodes"] + verbs: ["get", "list", "watch"] + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get", "list", "watch"] + - apiGroups: ["coordination.k8s.io"] + resources: ["leases"] + verbs: ["get", "list", "watch", "create", "update", "patch"] + - apiGroups: [""] + resources: ["secrets"] + verbs: ["get"] +--- +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: {{ .Values.rbac.name }}-csi-provisioner-binding +{{ include "nfs.labels" . | indent 2 }} +subjects: + - kind: ServiceAccount + name: csi-{{ .Values.rbac.name }}-controller-sa + namespace: {{ .Release.Namespace }} +roleRef: + kind: ClusterRole + name: {{ .Values.rbac.name }}-external-provisioner-role + apiGroup: rbac.authorization.k8s.io +{{- end -}} diff --git a/charts/v4.1.0/csi-driver-nfs/values.yaml b/charts/v4.1.0/csi-driver-nfs/values.yaml new file mode 100644 index 000000000..ad9a360bd --- /dev/null +++ b/charts/v4.1.0/csi-driver-nfs/values.yaml @@ -0,0 +1,115 @@ +customLabels: {} +image: + nfs: + repository: registry.k8s.io/sig-storage/nfsplugin + tag: v4.1.0 + pullPolicy: IfNotPresent + csiProvisioner: + repository: registry.k8s.io/sig-storage/csi-provisioner + tag: v3.2.0 + pullPolicy: IfNotPresent + livenessProbe: + repository: registry.k8s.io/sig-storage/livenessprobe + tag: v2.7.0 + pullPolicy: IfNotPresent + nodeDriverRegistrar: + repository: registry.k8s.io/sig-storage/csi-node-driver-registrar + tag: v2.5.1 + pullPolicy: IfNotPresent + +serviceAccount: + create: true # When true, service accounts will be created for you. Set to false if you want to use your own. + controller: csi-nfs-controller-sa # Name of Service Account to be created or used + +rbac: + create: true + name: nfs + +driver: + name: nfs.csi.k8s.io + mountPermissions: 0777 + +feature: + enableFSGroupPolicy: true + enableInlineVolume: false + +kubeletDir: /var/lib/kubelet + +controller: + name: csi-nfs-controller + replicas: 1 + runOnMaster: false + runOnControlPlane: false + livenessProbe: + healthPort: 29652 + logLevel: 5 + workingMountDir: "/tmp" + dnsPolicy: Default # available values: Default, ClusterFirstWithHostNet, ClusterFirst + affinity: {} + nodeSelector: {} + tolerations: + - key: "node-role.kubernetes.io/master" + operator: "Exists" + effect: "NoSchedule" + - key: "node-role.kubernetes.io/controlplane" + operator: "Exists" + effect: "NoSchedule" + - key: "node-role.kubernetes.io/control-plane" + operator: "Exists" + effect: "NoSchedule" + resources: + csiProvisioner: + limits: + memory: 400Mi + requests: + cpu: 10m + memory: 20Mi + livenessProbe: + limits: + memory: 100Mi + requests: + cpu: 10m + memory: 20Mi + nfs: + limits: + memory: 200Mi + requests: + cpu: 10m + memory: 20Mi + +node: + name: csi-nfs-node + dnsPolicy: Default # available values: Default, ClusterFirstWithHostNet, ClusterFirst + maxUnavailable: 1 + logLevel: 5 + livenessProbe: + healthPort: 29653 + affinity: {} + nodeSelector: {} + tolerations: + - operator: "Exists" + resources: + livenessProbe: + limits: + memory: 100Mi + requests: + cpu: 10m + memory: 20Mi + nodeDriverRegistrar: + limits: + memory: 100Mi + requests: + cpu: 10m + memory: 20Mi + nfs: + limits: + memory: 300Mi + requests: + cpu: 10m + memory: 20Mi + +## Reference to one or more secrets to be used when pulling images +## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ +## +imagePullSecrets: [] +# - name: "image-pull-secret" diff --git a/deploy/csi-nfs-controller.yaml b/deploy/csi-nfs-controller.yaml index 645b06b33..1863de312 100644 --- a/deploy/csi-nfs-controller.yaml +++ b/deploy/csi-nfs-controller.yaml @@ -68,7 +68,7 @@ spec: cpu: 10m memory: 20Mi - name: nfs - image: gcr.io/k8s-staging-sig-storage/nfsplugin:canary + image: registry.k8s.io/sig-storage/nfsplugin:v4.1.0 securityContext: privileged: true capabilities: diff --git a/deploy/csi-nfs-node.yaml b/deploy/csi-nfs-node.yaml index c4c34f42b..769cd0a1b 100644 --- a/deploy/csi-nfs-node.yaml +++ b/deploy/csi-nfs-node.yaml @@ -79,7 +79,7 @@ spec: capabilities: add: ["SYS_ADMIN"] allowPrivilegeEscalation: true - image: gcr.io/k8s-staging-sig-storage/nfsplugin:canary + image: registry.k8s.io/sig-storage/nfsplugin:v4.1.0 args: - "-v=5" - "--nodeid=$(NODE_ID)" diff --git a/deploy/v4.1.0/csi-nfs-controller.yaml b/deploy/v4.1.0/csi-nfs-controller.yaml new file mode 100644 index 000000000..1863de312 --- /dev/null +++ b/deploy/v4.1.0/csi-nfs-controller.yaml @@ -0,0 +1,119 @@ +--- +kind: Deployment +apiVersion: apps/v1 +metadata: + name: csi-nfs-controller + namespace: kube-system +spec: + replicas: 1 + selector: + matchLabels: + app: csi-nfs-controller + template: + metadata: + labels: + app: csi-nfs-controller + spec: + hostNetwork: true # controller also needs to mount nfs to create dir + dnsPolicy: Default # available values: Default, ClusterFirstWithHostNet, ClusterFirst + serviceAccountName: csi-nfs-controller-sa + nodeSelector: + kubernetes.io/os: linux # add "kubernetes.io/role: master" to run controller on master node + priorityClassName: system-cluster-critical + tolerations: + - key: "node-role.kubernetes.io/master" + operator: "Exists" + effect: "NoSchedule" + - key: "node-role.kubernetes.io/controlplane" + operator: "Exists" + effect: "NoSchedule" + - key: "node-role.kubernetes.io/control-plane" + operator: "Exists" + effect: "NoSchedule" + containers: + - name: csi-provisioner + image: registry.k8s.io/sig-storage/csi-provisioner:v3.2.0 + args: + - "-v=2" + - "--csi-address=$(ADDRESS)" + - "--leader-election" + - "--leader-election-namespace=kube-system" + - "--extra-create-metadata=true" + env: + - name: ADDRESS + value: /csi/csi.sock + volumeMounts: + - mountPath: /csi + name: socket-dir + resources: + limits: + memory: 400Mi + requests: + cpu: 10m + memory: 20Mi + - name: liveness-probe + image: registry.k8s.io/sig-storage/livenessprobe:v2.7.0 + args: + - --csi-address=/csi/csi.sock + - --probe-timeout=3s + - --health-port=29652 + - --v=2 + volumeMounts: + - name: socket-dir + mountPath: /csi + resources: + limits: + memory: 100Mi + requests: + cpu: 10m + memory: 20Mi + - name: nfs + image: registry.k8s.io/sig-storage/nfsplugin:v4.1.0 + securityContext: + privileged: true + capabilities: + add: ["SYS_ADMIN"] + allowPrivilegeEscalation: true + imagePullPolicy: IfNotPresent + args: + - "-v=5" + - "--nodeid=$(NODE_ID)" + - "--endpoint=$(CSI_ENDPOINT)" + env: + - name: NODE_ID + valueFrom: + fieldRef: + fieldPath: spec.nodeName + - name: CSI_ENDPOINT + value: unix:///csi/csi.sock + ports: + - containerPort: 29652 + name: healthz + protocol: TCP + livenessProbe: + failureThreshold: 5 + httpGet: + path: /healthz + port: healthz + initialDelaySeconds: 30 + timeoutSeconds: 10 + periodSeconds: 30 + volumeMounts: + - name: pods-mount-dir + mountPath: /var/lib/kubelet/pods + mountPropagation: "Bidirectional" + - mountPath: /csi + name: socket-dir + resources: + limits: + memory: 200Mi + requests: + cpu: 10m + memory: 20Mi + volumes: + - name: pods-mount-dir + hostPath: + path: /var/lib/kubelet/pods + type: Directory + - name: socket-dir + emptyDir: {} diff --git a/deploy/v4.1.0/csi-nfs-driverinfo.yaml b/deploy/v4.1.0/csi-nfs-driverinfo.yaml new file mode 100644 index 000000000..bb08dbc4b --- /dev/null +++ b/deploy/v4.1.0/csi-nfs-driverinfo.yaml @@ -0,0 +1,11 @@ +--- +apiVersion: storage.k8s.io/v1 +kind: CSIDriver +metadata: + name: nfs.csi.k8s.io +spec: + attachRequired: false + volumeLifecycleModes: + - Persistent + - Ephemeral + fsGroupPolicy: File diff --git a/deploy/v4.1.0/csi-nfs-node.yaml b/deploy/v4.1.0/csi-nfs-node.yaml new file mode 100644 index 000000000..769cd0a1b --- /dev/null +++ b/deploy/v4.1.0/csi-nfs-node.yaml @@ -0,0 +1,131 @@ +--- +kind: DaemonSet +apiVersion: apps/v1 +metadata: + name: csi-nfs-node + namespace: kube-system +spec: + updateStrategy: + rollingUpdate: + maxUnavailable: 1 + type: RollingUpdate + selector: + matchLabels: + app: csi-nfs-node + template: + metadata: + labels: + app: csi-nfs-node + spec: + hostNetwork: true # original nfs connection would be broken without hostNetwork setting + dnsPolicy: Default # available values: Default, ClusterFirstWithHostNet, ClusterFirst + serviceAccountName: csi-nfs-node-sa + nodeSelector: + kubernetes.io/os: linux + tolerations: + - operator: "Exists" + containers: + - name: liveness-probe + image: registry.k8s.io/sig-storage/livenessprobe:v2.7.0 + args: + - --csi-address=/csi/csi.sock + - --probe-timeout=3s + - --health-port=29653 + - --v=2 + volumeMounts: + - name: socket-dir + mountPath: /csi + resources: + limits: + memory: 100Mi + requests: + cpu: 10m + memory: 20Mi + - name: node-driver-registrar + image: registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.5.1 + args: + - --v=2 + - --csi-address=/csi/csi.sock + - --kubelet-registration-path=$(DRIVER_REG_SOCK_PATH) + livenessProbe: + exec: + command: + - /csi-node-driver-registrar + - --kubelet-registration-path=$(DRIVER_REG_SOCK_PATH) + - --mode=kubelet-registration-probe + initialDelaySeconds: 30 + timeoutSeconds: 15 + env: + - name: DRIVER_REG_SOCK_PATH + value: /var/lib/kubelet/plugins/csi-nfsplugin/csi.sock + - name: KUBE_NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + volumeMounts: + - name: socket-dir + mountPath: /csi + - name: registration-dir + mountPath: /registration + resources: + limits: + memory: 100Mi + requests: + cpu: 10m + memory: 20Mi + - name: nfs + securityContext: + privileged: true + capabilities: + add: ["SYS_ADMIN"] + allowPrivilegeEscalation: true + image: registry.k8s.io/sig-storage/nfsplugin:v4.1.0 + args: + - "-v=5" + - "--nodeid=$(NODE_ID)" + - "--endpoint=$(CSI_ENDPOINT)" + env: + - name: NODE_ID + valueFrom: + fieldRef: + fieldPath: spec.nodeName + - name: CSI_ENDPOINT + value: unix:///csi/csi.sock + ports: + - containerPort: 29653 + name: healthz + protocol: TCP + livenessProbe: + failureThreshold: 5 + httpGet: + path: /healthz + port: healthz + initialDelaySeconds: 30 + timeoutSeconds: 10 + periodSeconds: 30 + imagePullPolicy: "IfNotPresent" + volumeMounts: + - name: socket-dir + mountPath: /csi + - name: pods-mount-dir + mountPath: /var/lib/kubelet/pods + mountPropagation: "Bidirectional" + resources: + limits: + memory: 300Mi + requests: + cpu: 10m + memory: 20Mi + volumes: + - name: socket-dir + hostPath: + path: /var/lib/kubelet/plugins/csi-nfsplugin + type: DirectoryOrCreate + - name: pods-mount-dir + hostPath: + path: /var/lib/kubelet/pods + type: Directory + - hostPath: + path: /var/lib/kubelet/plugins_registry + type: Directory + name: registration-dir diff --git a/deploy/v4.1.0/rbac-csi-nfs.yaml b/deploy/v4.1.0/rbac-csi-nfs.yaml new file mode 100644 index 000000000..45c80e932 --- /dev/null +++ b/deploy/v4.1.0/rbac-csi-nfs.yaml @@ -0,0 +1,57 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: csi-nfs-controller-sa + namespace: kube-system +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: csi-nfs-node-sa + namespace: kube-system +--- + +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: nfs-external-provisioner-role +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: ["get", "list", "watch", "create", "update", "patch"] + - apiGroups: ["storage.k8s.io"] + resources: ["csinodes"] + verbs: ["get", "list", "watch"] + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get", "list", "watch"] + - apiGroups: ["coordination.k8s.io"] + resources: ["leases"] + verbs: ["get", "list", "watch", "create", "update", "patch"] + - apiGroups: [""] + resources: ["secrets"] + verbs: ["get"] +--- + +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: nfs-csi-provisioner-binding +subjects: + - kind: ServiceAccount + name: csi-nfs-controller-sa + namespace: kube-system +roleRef: + kind: ClusterRole + name: nfs-external-provisioner-role + apiGroup: rbac.authorization.k8s.io diff --git a/docs/install-csi-driver-v4.1.0.md b/docs/install-csi-driver-v4.1.0.md new file mode 100644 index 000000000..e4783d058 --- /dev/null +++ b/docs/install-csi-driver-v4.1.0.md @@ -0,0 +1,45 @@ +# Install NFS CSI driver v4.1.0 version on a kubernetes cluster + +If you have already installed Helm, you can also use it to install this driver. Please check [Installation with Helm](../charts/README.md). + +## Install with kubectl + - Option#1. remote install +```console +curl -skSL https://raw.githubusercontent.com/kubernetes-csi/csi-driver-nfs/v4.1.0/deploy/install-driver.sh | bash -s v4.1.0 -- +``` + + - Option#2. local install +```console +git clone https://github.com/kubernetes-csi/csi-driver-nfs.git +cd csi-driver-nfs +./deploy/install-driver.sh v4.1.0 local +``` + +- check pods status: +```console +kubectl -n kube-system get pod -o wide -l app=csi-nfs-controller +kubectl -n kube-system get pod -o wide -l app=csi-nfs-node +``` + +example output: + +```console +NAME READY STATUS RESTARTS AGE IP NODE +csi-nfs-controller-56bfddd689-dh5tk 4/4 Running 0 35s 10.240.0.19 k8s-agentpool-22533604-0 +csi-nfs-node-cvgbs 3/3 Running 0 35s 10.240.0.35 k8s-agentpool-22533604-1 +csi-nfs-node-dr4s4 3/3 Running 0 35s 10.240.0.4 k8s-agentpool-22533604-0 +``` + +### clean up NFS CSI driver + - Option#1. remote uninstall +```console +curl -skSL https://raw.githubusercontent.com/kubernetes-csi/csi-driver-nfs/v4.1.0/deploy/uninstall-driver.sh | bash -s v4.1.0 -- +``` + + - Option#2. local uninstall +```console +git clone https://github.com/kubernetes-csi/csi-driver-nfs.git +cd csi-driver-nfs +git checkout v4.1.0 +./deploy/uninstall-driver.sh v4.1.0 local +``` diff --git a/docs/install-nfs-csi-driver.md b/docs/install-nfs-csi-driver.md index c13a266f4..59af8c662 100644 --- a/docs/install-nfs-csi-driver.md +++ b/docs/install-nfs-csi-driver.md @@ -1,6 +1,6 @@ ## Install NFS CSI driver on a Kubernetes cluster - [install CSI driver master version](./install-csi-driver-master.md)(only for testing purpose) + - [install CSI driver v4.1.0 version](./install-csi-driver-v4.1.0.md) - [install CSI driver v4.0.0 version](./install-csi-driver-v4.0.0.md) - [install CSI driver v3.1.0 version](./install-csi-driver-v3.1.0.md) - - [install CSI driver v3.0.0 version](./install-csi-driver-v3.0.0.md)