From 7c06c6b5d3919b8e99d2f80a8fb098fd7e29a449 Mon Sep 17 00:00:00 2001 From: andyzhangx Date: Sat, 4 Jun 2022 09:14:04 +0000 Subject: [PATCH] feat: add affinity, nodeselector, runOnControlPlane in chart config update chart fix --- Makefile | 2 +- charts/README.md | 9 +++++++-- charts/latest/csi-driver-nfs-v4.1.0.tgz | Bin 3613 -> 3681 bytes .../templates/csi-nfs-controller.yaml | 10 ++++++++++ .../templates/csi-nfs-node.yaml | 7 +++++++ charts/latest/csi-driver-nfs/values.yaml | 4 ++++ test/external-e2e/run.sh | 2 +- 7 files changed, 30 insertions(+), 4 deletions(-) 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 c0cf52a3e296b25d242a10b4a83b15a41b094e71..4ed6a2ba98684175ad4a1adf1fb4855b6a63bb53 100644 GIT binary patch delta 3631 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 BGD83W delta 3562 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 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