diff --git a/Makefile b/Makefile index 0656ea59..b227d383 100644 --- a/Makefile +++ b/Makefile @@ -42,7 +42,7 @@ REGISTRY_NAME ?= $(shell echo $(REGISTRY) | sed "s/.azurecr.io//g") IMAGE_TAG = $(REGISTRY)/$(IMAGENAME):$(IMAGE_VERSION) IMAGE_TAG_LATEST = $(REGISTRY)/$(IMAGENAME):latest -E2E_HELM_OPTIONS ?= --set image.nfs.repository=$(REGISTRY)/$(IMAGENAME) --set image.nfs.tag=$(IMAGE_VERSION) --set image.nfs.pullPolicy=Always --set feature.enableInlineVolume=true --set controller.runOnMaster=true +E2E_HELM_OPTIONS ?= --set image.nfs.repository=$(REGISTRY)/$(IMAGENAME) --set image.nfs.tag=$(IMAGE_VERSION) --set image.nfs.pullPolicy=Always --set feature.enableInlineVolume=true E2E_HELM_OPTIONS += ${EXTRA_HELM_OPTIONS} # Output type of docker buildx build diff --git a/charts/README.md b/charts/README.md index a7c123f6..1911a5a7 100644 --- a/charts/README.md +++ b/charts/README.md @@ -4,7 +4,7 @@ - [install Helm](https://helm.sh/docs/intro/quickstart/#install-helm) ### Tips - - make controller only run on master node: `--set controller.runOnMaster=true` + - run controller on control plane node: `--set controller.runOnControlPlane=true` - set replica of controller as `2`: `--set controller.replicas=2` ### install a specific version @@ -57,10 +57,13 @@ The following table lists the configurable parameters of the latest NFS CSI Driv | `serviceAccount.create` | whether create service account of csi-nfs-controller | `true` | | `rbac.create` | whether create rbac of csi-nfs-controller | `true` | | `controller.replicas` | replica number of csi-nfs-controller | `1` | -| `controller.runOnMaster` | run controller on master node | `false` | +| `controller.runOnMaster` | run controller on master node(deprecated on k8s 1.25+) |`false` | +| `controller.runOnControlPlane` | run controller on control plane node |`false` | | `controller.dnsPolicy` | dnsPolicy of controller driver, available values: `Default`, `ClusterFirstWithHostNet`, `ClusterFirst` | `Default` | | `controller.logLevel` | controller driver log level |`5` | | `controller.workingMountDir` | working directory for provisioner to mount nfs shares temporarily | `/tmp` | +| `controller.affinity` | controller pod affinity | `{}` | +| `controller.nodeSelector` | controller pod node selector | `{}` | | `controller.tolerations` | controller pod tolerations | | | `controller.resources.csiProvisioner.limits.memory` | csi-provisioner memory limits | 100Mi | | `controller.resources.csiProvisioner.requests.cpu` | csi-provisioner cpu requests limits | 10m | @@ -76,6 +79,8 @@ The following table lists the configurable parameters of the latest NFS CSI Driv | `node.maxUnavailable` | `maxUnavailable` value of driver node daemonset | `1` | `node.logLevel` | node driver log level |`5` | | `node.livenessProbe.healthPort ` | the health check port for liveness probe |`29653` | +| `node.affinity` | node pod affinity | {} | +| `node.nodeSelector` | node pod node selector | `{}` | | `node.tolerations` | node pod tolerations | | | `node.resources.livenessProbe.limits.memory` | liveness-probe memory limits | 100Mi | | `node.resources.livenessProbe.requests.cpu` | liveness-probe cpu requests limits | 10m | diff --git a/charts/latest/csi-driver-nfs-v4.1.0.tgz b/charts/latest/csi-driver-nfs-v4.1.0.tgz index c0cf52a3..4ed6a2ba 100644 Binary files a/charts/latest/csi-driver-nfs-v4.1.0.tgz and b/charts/latest/csi-driver-nfs-v4.1.0.tgz differ diff --git a/charts/latest/csi-driver-nfs/templates/csi-nfs-controller.yaml b/charts/latest/csi-driver-nfs/templates/csi-nfs-controller.yaml index 349ca95b..a734ff4e 100644 --- a/charts/latest/csi-driver-nfs/templates/csi-nfs-controller.yaml +++ b/charts/latest/csi-driver-nfs/templates/csi-nfs-controller.yaml @@ -22,11 +22,21 @@ spec: 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: diff --git a/charts/latest/csi-driver-nfs/templates/csi-nfs-node.yaml b/charts/latest/csi-driver-nfs/templates/csi-nfs-node.yaml index 3a637566..b9f819fc 100644 --- a/charts/latest/csi-driver-nfs/templates/csi-nfs-node.yaml +++ b/charts/latest/csi-driver-nfs/templates/csi-nfs-node.yaml @@ -25,8 +25,15 @@ spec: 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 }} diff --git a/charts/latest/csi-driver-nfs/values.yaml b/charts/latest/csi-driver-nfs/values.yaml index eebc5d04..d1462de9 100755 --- a/charts/latest/csi-driver-nfs/values.yaml +++ b/charts/latest/csi-driver-nfs/values.yaml @@ -44,6 +44,8 @@ controller: logLevel: 5 workingMountDir: "/tmp" dnsPolicy: Default # available values: Default, ClusterFirstWithHostNet, ClusterFirst + affinity: {} + nodeSelector: {} tolerations: - key: "node-role.kubernetes.io/master" operator: "Exists" @@ -81,6 +83,8 @@ node: logLevel: 5 livenessProbe: healthPort: 29653 + affinity: {} + nodeSelector: {} tolerations: - operator: "Exists" resources: diff --git a/test/external-e2e/run.sh b/test/external-e2e/run.sh index d5737abe..fc66718e 100644 --- a/test/external-e2e/run.sh +++ b/test/external-e2e/run.sh @@ -29,7 +29,7 @@ setup_e2e_binaries() { curl -sL https://storage.googleapis.com/kubernetes-release/release/v1.24.0/kubernetes-test-linux-amd64.tar.gz --output e2e-tests.tar.gz tar -xvf e2e-tests.tar.gz && rm e2e-tests.tar.gz - export EXTRA_HELM_OPTIONS="--set driver.name=$DRIVER.csi.k8s.io --set controller.name=csi-$DRIVER-controller --set node.name=csi-$DRIVER-node --set feature.enableInlineVolume=true --set controller.runOnMaster=true" + export EXTRA_HELM_OPTIONS="--set driver.name=$DRIVER.csi.k8s.io --set controller.name=csi-$DRIVER-controller --set node.name=csi-$DRIVER-node --set feature.enableInlineVolume=true" # test on alternative driver name sed -i "s/nfs.csi.k8s.io/$DRIVER.csi.k8s.io/g" deploy/example/storageclass-nfs.yaml