diff --git a/charts/cinder-csi-plugin/Chart.yaml b/charts/cinder-csi-plugin/Chart.yaml index 980f10fb0e..c21b962414 100644 --- a/charts/cinder-csi-plugin/Chart.yaml +++ b/charts/cinder-csi-plugin/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v1 appVersion: v1.31.0 description: Cinder CSI Chart for OpenStack name: openstack-cinder-csi -version: 2.31.0 +version: 2.31.3 home: https://github.com/kubernetes/cloud-provider-openstack icon: https://github.com/kubernetes/kubernetes/blob/master/logo/logo.png maintainers: diff --git a/charts/cinder-csi-plugin/templates/controllerplugin-deployment.yaml b/charts/cinder-csi-plugin/templates/controllerplugin-deployment.yaml index 542c179f5a..3ee21501a3 100644 --- a/charts/cinder-csi-plugin/templates/controllerplugin-deployment.yaml +++ b/charts/cinder-csi-plugin/templates/controllerplugin-deployment.yaml @@ -181,6 +181,11 @@ spec: {{- tpl . $ | trim | nindent 12 }} {{- end }} {{- end }} + {{- if .Values.csi.plugin.controllerPlugin.extraArgs }} + {{- with .Values.csi.plugin.controllerPlugin.extraArgs }} + {{- tpl . $ | trim | nindent 12 }} + {{- end }} + {{- end }} env: - name: CSI_ENDPOINT value: unix://csi/csi.sock diff --git a/charts/cinder-csi-plugin/templates/controllerplugin-rbac.yaml b/charts/cinder-csi-plugin/templates/controllerplugin-rbac.yaml index e8d7a909fc..72a4c544ab 100644 --- a/charts/cinder-csi-plugin/templates/controllerplugin-rbac.yaml +++ b/charts/cinder-csi-plugin/templates/controllerplugin-rbac.yaml @@ -97,13 +97,6 @@ rules: - apiGroups: [""] resources: ["events"] verbs: ["list", "watch", "create", "update", "patch"] - # Secret permission is optional. - # Enable it if your driver needs secret. - # For example, `csi.storage.k8s.io/snapshotter-secret-name` is set in VolumeSnapshotClass. - # See https://kubernetes-csi.github.io/docs/secrets-and-credentials.html for more details. - # - apiGroups: [""] - # resources: ["secrets"] - # verbs: ["get", "list"] - apiGroups: ["snapshot.storage.k8s.io"] resources: ["volumesnapshotclasses"] verbs: ["get", "list", "watch"] @@ -116,6 +109,9 @@ rules: - apiGroups: ["coordination.k8s.io"] resources: ["leases"] verbs: ["get", "watch", "list", "delete", "update", "create"] + {{- with .Values.csi.snapshotter.extraRbac }} + {{- toYaml . | nindent 2 }} + {{- end }} --- kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 @@ -135,11 +131,6 @@ apiVersion: rbac.authorization.k8s.io/v1 metadata: name: csi-resizer-role rules: - # The following rule should be uncommented for plugins that require secrets - # for provisioning. - # - apiGroups: [""] - # resources: ["secrets"] - # verbs: ["get", "list", "watch"] - apiGroups: [""] resources: ["persistentvolumes"] verbs: ["get", "list", "watch", "patch"] @@ -158,6 +149,9 @@ rules: - apiGroups: ["coordination.k8s.io"] resources: ["leases"] verbs: ["get", "watch", "list", "delete", "update", "create"] + {{- with .Values.csi.resizer.extraRbac }} + {{- toYaml . | nindent 2 }} + {{- end }} --- kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 diff --git a/charts/cinder-csi-plugin/templates/nodeplugin-daemonset.yaml b/charts/cinder-csi-plugin/templates/nodeplugin-daemonset.yaml index e55e8d69ea..e958de2d32 100644 --- a/charts/cinder-csi-plugin/templates/nodeplugin-daemonset.yaml +++ b/charts/cinder-csi-plugin/templates/nodeplugin-daemonset.yaml @@ -97,6 +97,11 @@ spec: {{- tpl . $ | trim | nindent 12 }} {{- end }} {{- end }} + {{- if .Values.csi.plugin.nodePlugin.extraArgs }} + {{- with .Values.csi.plugin.nodePlugin.extraArgs }} + {{- tpl . $ | trim | nindent 12 }} + {{- end }} + {{- end }} env: - name: CSI_ENDPOINT value: unix://csi/csi.sock diff --git a/charts/cinder-csi-plugin/values.yaml b/charts/cinder-csi-plugin/values.yaml index ec87bb341a..653a5a4603 100644 --- a/charts/cinder-csi-plugin/values.yaml +++ b/charts/cinder-csi-plugin/values.yaml @@ -30,6 +30,14 @@ csi: resources: {} extraArgs: {} extraEnv: [] + # Secret permission is optional. + # Enable it if your driver needs secret. + # For example, `csi.storage.k8s.io/snapshotter-secret-name` is set in VolumeSnapshotClass. + # See https://kubernetes-csi.github.io/docs/secrets-and-credentials.html for more details. + extraRbac: {} + # - apiGroups: [""] + # resources: ["secrets"] + # verbs: ["get", "list"] resizer: image: repository: registry.k8s.io/sig-storage/csi-resizer @@ -38,6 +46,12 @@ csi: resources: {} extraArgs: {} extraEnv: [] + # The following rule should be uncommented for plugins that require secrets + # for provisioning. + extraRbac: {} + # - apiGroups: [""] + # resources: ["secrets"] + # verbs: ["get", "list", "watch"] livenessprobe: image: repository: registry.k8s.io/sig-storage/livenessprobe @@ -88,6 +102,7 @@ csi: tolerations: - operator: Exists kubeletDir: /var/lib/kubelet + extraArgs: {} # Allow for specifying internal IP addresses for multiple hostnames # hostAliases: # - ip: "10.0.0.1" @@ -122,6 +137,7 @@ csi: affinity: {} nodeSelector: {} tolerations: [] + extraArgs: {} # Allow for specifying internal IP addresses for multiple hostnames # hostAliases: # - ip: "10.0.0.1" diff --git a/docs/cinder-csi-plugin/multi-region-clouds.md b/docs/cinder-csi-plugin/multi-region-clouds.md index e7e4430631..f7d40565c3 100644 --- a/docs/cinder-csi-plugin/multi-region-clouds.md +++ b/docs/cinder-csi-plugin/multi-region-clouds.md @@ -314,3 +314,39 @@ spec: ... ``` +### When using the cinder-csi-plugin helmchart + +When runing the cinder-csi-plugin with multi-region, you need to specify different `extraArgs` on the `cinder-csi-plugin` containers of the deployment and the daemonset. + +When using the helmchart, you need to set the different `extraArgs` on `plugin.nodePlugin.extraArgs` and `plugin.controllerPlugin.extraArgs`. + +If you set the extraArgs in `plugin.extraArgs`, the same `extraArgs` will end up on both the `cinder-csi-plugin` container of both the deployment and the daemonset. + +You will still need to manually create your additionnal daemonsets for your additionnal regions. + +```yaml +nodePlugin: + extraArgs: |- + - --cloud-name=region-one + - --additional-topology + - topology.kubernetes.io/region=region-one +controllerPlugin: + extraArgs: |- + - --cloud-name=region-one + - --cloud-name=region-two +``` + +In addition, if you use the `resizer` and the `snapshotter`, you will need them to be able to read the secrets you defined in the storage class' annotations in order to determine which cloud to address. You will need to add some `extraRbac` in YAML format, like this: + +```yaml +snapshotter: + extraRbac: + - apiGroups: [""] + resources: ["secrets"] + verbs: ["get", "list"] +resizer: + extraRbac: + - apiGroups: [""] + resources: ["secrets"] + verbs: ["get", "list", "watch"] +``` \ No newline at end of file