Skip to content

Commit 51f1219

Browse files
feat(helm)!: Allows for the CSI Provisioner Deployment and CSI Node Driver DaemonSet to be configured independently (#334)
* chore: Add docs to run modes * chore(helm)!: Rename resources, labels, and containers Note: This tries to align as well as possible to the rather scattered and vague CSI terminology. The charts should be uninstalled and reinstalled to ensure no orphaned and conflicting resources remain. This could impact monitoring setups that depend on the old resource names, labels, and container names. * chore(helm)!: Use with to set context for the Deployment/DaemonSet. BREAKING: Helm values that were under `csiNodeDriverRegistrar` are now under `csiNodeDriver`. The reason being is that the "registrar" is only one of the containers in the DaemonSet for the Node Driver. * chore(helm): Rename csi-provisioner deployment filename * chore(helm)!: Separate configs for the Provisioner Deployment * chore(helm)!: Separate configs for the NodeDriver DaemonSet * chore(helm): Show example for overriding the operator image tag * chore(helm): Remove "with" directive because Deployment/DaemonSet containers are not optional NOTE: These were incorrectly introduced in 463592a while trying to hash out the structure of the values. * feat(helm): Allow Pod priority, priorityClassName, and preemptionPolicy to be configured * chore: Update changelog * chore: Disable yamllint for comments-indentation This would be rolled out by stackabletech/operator-templating#551 * fix(helm): Remove unconfigurable Pod fields These were introduced in 010207b. Only priorityClassName is valid. * chore: Update changelog * fix(helm): Rename nodeRegistrar to nodeDriverRegistrar for consistency * Apply suggestions from code review Co-authored-by: Techassi <[email protected]> --------- Co-authored-by: Techassi <[email protected]>
1 parent cadc336 commit 51f1219

File tree

5 files changed

+163
-98
lines changed

5 files changed

+163
-98
lines changed

CHANGELOG.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,25 @@ All notable changes to this project will be documented in this file.
44

55
## [Unreleased]
66

7+
### Added
8+
9+
- New helm values for `csiProvisioner.priorityClassName` and `csiNodeDriver.priorityClassName` ([#334]).
10+
11+
### Changed
12+
13+
- BREAKING: Split helm values for independent configuration ([#334]).
14+
- `controller` values have been moved to `csiProvisioner.controllerService`.
15+
- `csiProvisioner` values have been moved to `csiProvisioner.externalProvisioner`
16+
- `csiNodeDriverRegistrar` values have been moved to `csiNodeDriver.nodeRegistrar`.
17+
- `node.driver` values have been moved to `csiNodeDriver.nodeService`.
18+
- `podAnnotations` has been split into `csiProvisioner.podAnnotations` and `csiNodeDriver.podAnnotations`.
19+
- `podSecurityContext` has been split into `csiProvisioner.podSecurityContext` and `csiNodeDriver.podSecurityContext`.
20+
- `nodeSelector` has been split into `csiProvisioner.nodeSelector` and `csiNodeDriver.nodeSelector`.
21+
- `tolerations` has been split into `csiProvisioner.tolerations` and `csiNodeDriver.tolerations`.
22+
- `affinity` has been split into `csiProvisioner.affinity` and `csiNodeDriver.affinity`.
23+
24+
[#334]: https://github.com/stackabletech/listener-operator/pull/334
25+
726
## [25.7.0] - 2025-07-23
827

928
## [25.7.0-rc1] - 2025-07-18

deploy/helm/listener-operator/templates/node-daemonset.yaml renamed to deploy/helm/listener-operator/templates/csi-node-driver-daemonset.yaml

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,22 @@
22
apiVersion: apps/v1
33
kind: DaemonSet
44
metadata:
5-
name: {{ include "operator.fullname" . }}-node-daemonset
5+
name: {{ include "operator.fullname" . }}-csi-node-driver
66
labels:
77
{{- include "operator.labels" . | nindent 4 }}
88
spec:
99
selector:
1010
matchLabels:
11-
app.kubernetes.io/role: node
11+
app.kubernetes.io/role: node-driver
1212
{{- include "operator.selectorLabels" . | nindent 6 }}
1313
template:
1414
metadata:
15-
{{- with .Values.podAnnotations }}
15+
{{- with .Values.csiNodeDriver.podAnnotations }}
1616
annotations:
1717
{{- toYaml . | nindent 8 }}
1818
{{- end }}
1919
labels:
20-
app.kubernetes.io/role: node
20+
app.kubernetes.io/role: node-driver
2121
{{- include "operator.selectorLabels" . | nindent 8 }}
2222
spec:
2323
{{- with .Values.image.pullSecrets }}
@@ -26,15 +26,15 @@ spec:
2626
{{- end }}
2727
serviceAccountName: {{ include "operator.fullname" . }}-serviceaccount
2828
securityContext:
29-
{{- toYaml .Values.podSecurityContext | nindent 8 }}
29+
{{- toYaml .Values.csiNodeDriver.podSecurityContext | nindent 8 }}
3030
containers:
31-
- name: {{ include "operator.appname" . }}
31+
- name: csi-node-service
3232
securityContext:
33-
{{- toYaml .Values.securityContext | nindent 12 }}
33+
{{- toYaml .Values.csiNodeDriver.nodeService.securityContext | nindent 12 }}
3434
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
3535
imagePullPolicy: {{ .Values.image.pullPolicy }}
3636
resources:
37-
{{ .Values.node.driver.resources | toYaml | nindent 12 }}
37+
{{ .Values.csiNodeDriver.nodeService.resources | toYaml | nindent 12 }}
3838
args:
3939
- run
4040
- node
@@ -85,10 +85,10 @@ spec:
8585
- name: mountpoint
8686
mountPath: {{ .Values.kubeletDir }}/pods
8787
- name: node-driver-registrar
88-
image: "{{ .Values.csiNodeDriverRegistrar.image.repository }}:{{ .Values.csiNodeDriverRegistrar.image.tag }}"
89-
imagePullPolicy: {{ .Values.csiNodeDriverRegistrar.image.pullPolicy }}
88+
image: "{{ .Values.csiNodeDriver.nodeDriverRegistrar.image.repository }}:{{ .Values.csiNodeDriver.nodeDriverRegistrar.image.tag }}"
89+
imagePullPolicy: {{ .Values.csiNodeDriver.nodeDriverRegistrar.image.pullPolicy }}
9090
resources:
91-
{{ .Values.csiNodeDriverRegistrar.resources | toYaml | nindent 12 }}
91+
{{ .Values.csiNodeDriver.nodeDriverRegistrar.resources | toYaml | nindent 12 }}
9292
args:
9393
- --csi-address=/csi/csi.sock
9494
- --kubelet-registration-path={{ .Values.kubeletDir }}/plugins/listeners.stackable.tech/csi.sock
@@ -109,15 +109,18 @@ spec:
109109
- name: mountpoint
110110
hostPath:
111111
path: {{ .Values.kubeletDir }}/pods/
112-
{{- with .Values.nodeSelector }}
112+
{{- with .Values.csiNodeDriver.nodeSelector }}
113113
nodeSelector:
114114
{{- toYaml . | nindent 8 }}
115115
{{- end }}
116-
{{- with .Values.affinity }}
116+
{{- with .Values.csiNodeDriver.affinity }}
117117
affinity:
118118
{{- toYaml . | nindent 8 }}
119119
{{- end }}
120-
{{- with .Values.tolerations }}
120+
{{- with .Values.csiNodeDriver.tolerations }}
121121
tolerations:
122122
{{- toYaml . | nindent 8 }}
123123
{{- end }}
124+
{{- with .Values.csiNodeDriver.priorityClassName }}
125+
priorityClassName: {{ . }}
126+
{{- end }}

deploy/helm/listener-operator/templates/controller-deployment.yaml renamed to deploy/helm/listener-operator/templates/csi-provisioner-deployment.yaml

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,23 @@
22
apiVersion: apps/v1
33
kind: Deployment
44
metadata:
5-
name: {{ include "operator.fullname" . }}-deployment
5+
name: {{ include "operator.fullname" . }}-csi-provisioner
66
labels:
77
{{- include "operator.labels" . | nindent 4 }}
88
spec:
99
selector:
1010
matchLabels:
11-
app.kubernetes.io/role: controller
11+
app.kubernetes.io/role: provisioner
1212
{{- include "operator.selectorLabels" . | nindent 6 }}
1313
template:
1414
metadata:
1515
annotations:
1616
internal.stackable.tech/image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
17-
{{- with .Values.podAnnotations }}
17+
{{- with .Values.csiProvisioner.podAnnotations }}
1818
{{- toYaml . | nindent 8 }}
1919
{{- end }}
2020
labels:
21-
app.kubernetes.io/role: controller
21+
app.kubernetes.io/role: provisioner
2222
{{- include "operator.selectorLabels" . | nindent 8 }}
2323
spec:
2424
{{- with .Values.imagePullSecrets }}
@@ -27,15 +27,15 @@ spec:
2727
{{- end }}
2828
serviceAccountName: {{ include "operator.fullname" . }}-serviceaccount
2929
securityContext:
30-
{{- toYaml .Values.podSecurityContext | nindent 8 }}
30+
{{- toYaml .Values.csiProvisioner.podSecurityContext | nindent 8 }}
3131
containers:
32-
- name: {{ include "operator.appname" . }}
32+
- name: csi-controller-service
3333
securityContext:
34-
{{- toYaml .Values.securityContext | nindent 12 }}
34+
{{- toYaml .Values.csiProvisioner.controllerService.securityContext | nindent 12 }}
3535
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
3636
imagePullPolicy: {{ .Values.image.pullPolicy }}
3737
resources:
38-
{{ .Values.controller.resources | toYaml | nindent 12 }}
38+
{{- .Values.csiProvisioner.controllerService.resources | toYaml | nindent 12 }}
3939
args:
4040
- run
4141
- controller
@@ -84,10 +84,10 @@ spec:
8484
- name: csi
8585
mountPath: /csi
8686
- name: external-provisioner
87-
image: "{{ .Values.csiProvisioner.image.repository }}:{{ .Values.csiProvisioner.image.tag }}"
88-
imagePullPolicy: {{ .Values.csiProvisioner.image.pullPolicy }}
87+
image: "{{ .Values.csiProvisioner.externalProvisioner.image.repository }}:{{ .Values.csiProvisioner.externalProvisioner.image.tag }}"
88+
imagePullPolicy: {{ .Values.csiProvisioner.externalProvisioner.image.pullPolicy }}
8989
resources:
90-
{{ .Values.csiProvisioner.resources | toYaml | nindent 12 }}
90+
{{ .Values.csiProvisioner.externalProvisioner.resources | toYaml | nindent 12 }}
9191
args:
9292
- --csi-address=/csi/csi.sock
9393
- --feature-gates=Topology=true
@@ -98,15 +98,18 @@ spec:
9898
volumes:
9999
- name: csi
100100
emptyDir: {}
101-
{{- with .Values.nodeSelector }}
101+
{{- with .Values.csiProvisioner.nodeSelector }}
102102
nodeSelector:
103103
{{- toYaml . | nindent 8 }}
104104
{{- end }}
105-
{{- with .Values.affinity }}
105+
{{- with .Values.csiProvisioner.affinity }}
106106
affinity:
107107
{{- toYaml . | nindent 8 }}
108108
{{- end }}
109-
{{- with .Values.tolerations }}
109+
{{- with .Values.csiProvisioner.tolerations }}
110110
tolerations:
111111
{{- toYaml . | nindent 8 }}
112112
{{- end }}
113+
{{- with .Values.csiProvisioner.priorityClassName }}
114+
priorityClassName: {{ . }}
115+
{{- end }}

deploy/helm/listener-operator/values.yaml

Lines changed: 107 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,117 @@
11
# Default values for listener-operator.
22
---
3+
# Used by both the Controller Service and Node Service containers
34
image:
45
repository: oci.stackable.tech/sdp/listener-operator
6+
# tag: 0.0.0-dev
57
pullPolicy: IfNotPresent
68
pullSecrets: []
79

810
csiProvisioner:
9-
image:
10-
repository: oci.stackable.tech/sdp/sig-storage/csi-provisioner
11-
tag: v5.2.0
12-
pullPolicy: IfNotPresent
13-
resources:
14-
requests:
15-
cpu: 100m
16-
memory: 128Mi
17-
limits:
18-
cpu: 100m
19-
memory: 128Mi
20-
csiNodeDriverRegistrar:
21-
image:
22-
repository: oci.stackable.tech/sdp/sig-storage/csi-node-driver-registrar
23-
tag: v2.13.0
24-
pullPolicy: IfNotPresent
25-
resources:
26-
requests:
27-
cpu: 100m
28-
memory: 128Mi
29-
limits:
30-
cpu: 100m
31-
memory: 128Mi
11+
podAnnotations: {}
12+
13+
podSecurityContext: {}
14+
# fsGroup: 2000
15+
16+
nodeSelector: {}
17+
18+
tolerations: []
19+
20+
affinity: {}
21+
22+
# priority: ...
23+
# priorityClassName: ...
24+
# preemptionPolicy: ...
25+
26+
controllerService:
27+
resources:
28+
# Resource requests and limits for the controller pod
29+
limits:
30+
cpu: 100m
31+
memory: 128Mi
32+
requests:
33+
cpu: 100m
34+
memory: 128Mi
35+
36+
securityContext:
37+
# listener-operator requires root permissions
38+
runAsUser: 0
39+
seLinuxOptions:
40+
# Run as "Super Privileged Container" to be allowed to write into
41+
# the Listener volumes
42+
type: spc_t
43+
# capabilities:
44+
# drop:
45+
# - ALL
46+
# readOnlyRootFilesystem: true
47+
# runAsNonRoot: true
48+
# runAsUser: 1000
49+
50+
externalProvisioner:
51+
image:
52+
repository: oci.stackable.tech/sdp/sig-storage/csi-provisioner
53+
tag: v5.2.0
54+
pullPolicy: IfNotPresent
55+
resources:
56+
requests:
57+
cpu: 100m
58+
memory: 128Mi
59+
limits:
60+
cpu: 100m
61+
memory: 128Mi
62+
63+
csiNodeDriver:
64+
podAnnotations: {}
65+
66+
podSecurityContext: {}
67+
# fsGroup: 2000
68+
69+
nodeSelector: {}
70+
71+
tolerations: []
72+
73+
affinity: {}
74+
75+
# priority: ...
76+
# priorityClassName: ...
77+
# preemptionPolicy: ...
78+
79+
nodeService:
80+
resources:
81+
# Resource requests and limits for the controller pod
82+
limits:
83+
cpu: 100m
84+
memory: 128Mi
85+
requests:
86+
cpu: 100m
87+
memory: 128Mi
88+
89+
securityContext:
90+
# listener-operator requires root permissions
91+
runAsUser: 0
92+
seLinuxOptions:
93+
# Run as "Super Privileged Container" to be allowed to write into
94+
# the Listener volumes
95+
type: spc_t
96+
# capabilities:
97+
# drop:
98+
# - ALL
99+
# readOnlyRootFilesystem: true
100+
# runAsNonRoot: true
101+
# runAsUser: 1000
102+
103+
nodeDriverRegistrar:
104+
image:
105+
repository: oci.stackable.tech/sdp/sig-storage/csi-node-driver-registrar
106+
tag: v2.13.0
107+
pullPolicy: IfNotPresent
108+
resources:
109+
requests:
110+
cpu: 100m
111+
memory: 128Mi
112+
limits:
113+
cpu: 100m
114+
memory: 128Mi
32115

33116
nameOverride: ""
34117
fullnameOverride: ""
@@ -42,56 +125,10 @@ serviceAccount:
42125
# If not set and create is true, a name is generated using the fullname template
43126
name: ""
44127

45-
podAnnotations: {}
46-
47128
# Provide additional labels which get attached to all deployed resources
48129
labels:
49130
stackable.tech/vendor: Stackable
50131

51-
podSecurityContext: {}
52-
# fsGroup: 2000
53-
54-
securityContext:
55-
# listener-operator requires root permissions
56-
runAsUser: 0
57-
seLinuxOptions:
58-
# Run as "Super Privileged Container" to be allowed to write into
59-
# the Listener volumes
60-
type: spc_t
61-
# capabilities:
62-
# drop:
63-
# - ALL
64-
# readOnlyRootFilesystem: true
65-
# runAsNonRoot: true
66-
# runAsUser: 1000
67-
68-
controller:
69-
resources:
70-
# Resource requests and limits for the controller pod
71-
limits:
72-
cpu: 100m
73-
memory: 128Mi
74-
requests:
75-
cpu: 100m
76-
memory: 128Mi
77-
78-
node:
79-
driver:
80-
resources:
81-
# Resource requests and limits for the per node driver container
82-
limits:
83-
cpu: 100m
84-
memory: 128Mi
85-
requests:
86-
cpu: 100m
87-
memory: 128Mi
88-
89-
nodeSelector: {}
90-
91-
tolerations: []
92-
93-
affinity: {}
94-
95132
# When running on a non-default Kubernetes cluster domain, the cluster domain can be configured here.
96133
# See the https://docs.stackable.tech/home/stable/guides/kubernetes-cluster-domain guide for details.
97134
# kubernetesClusterDomain: my-cluster.local
@@ -100,7 +137,7 @@ affinity: {}
100137
kubeletDir: /var/lib/kubelet
101138

102139
# Options: none, stable-nodes, ephemeral-nodes
103-
# none: No ListenerClasses are preinstalled, the administrator must supply them themself
140+
# none: No ListenerClasses are preinstalled, administrators must supply them themselves
104141
# stable-nodes: ListenerClasses are preinstalled that are suitable for on-prem/"pet" environments, assuming long-running Nodes but not requiring a LoadBalancer controller
105142
# ephemeral-nodes: ListenerClasses are preinstalled that are suitable for cloud/"cattle" environments with short-lived nodes, however this requires a LoadBalancer controller to be installed
106143
preset: stable-nodes

0 commit comments

Comments
 (0)