@@ -43,26 +43,23 @@ metadata:
4343 labels :
4444 {{- include "operator.labels" . | nindent 4 }}
4545rules :
46- # Required to maintain the CRD. The operator needs to do this, as it needs to enter e.g. it's
47- # generated certificate in the conversion webhook .
46+ # Required for maintaining the CRDs (including the conversion webhook configuration) and
47+ # for the startup condition check .
4848 {{- if .Values.maintenance.customResourceDefinitions.maintain }}
4949 - apiGroups : [apiextensions.k8s.io]
5050 resources : [customresourcedefinitions]
5151 verbs :
52+ # Required to maintain the CRD (e.g. conversion webhook certificate).
5253 - create
5354 - patch
5455 # Required for startup condition
5556 - list
5657 - watch
5758 {{- end }}
58- # Secrets: read/written by several subsystems:
59- # - autoTLS backend: reads and writes the CA Secret using the kube entry API, which issues
60- # replace() (HTTP PUT) when updating an existing entry — this requires the `update` verb
61- # in addition to the SSA verbs (create + patch). Also reads ConfigMap/Secret trust roots.
62- # - kerberosKeytab backend: reads the admin keytab Secret.
63- # - k8sSearch backend: lists Secrets by label selector.
64- # - certManager backend: reads the Secret provisioned by cert-manager.
65- # - truststore controller: applies Secrets via SSA (create + patch) and watches them via .owns().
59+ # Secrets are read and written by multiple backends (autoTLS CA storage, Kerberos keytab,
60+ # k8sSearch, cert-manager). The autoTLS backend uses replace (HTTP PUT) for CA entries,
61+ # requiring the update verb in addition to SSA verbs. The truststore controller applies
62+ # trust-store Secrets via SSA and watches them for changes.
6663 - apiGroups :
6764 - " "
6865 resources :
7471 - create
7572 - patch
7673 - update
77- # Events (core v1): required by the external-provisioner sidecar container, which runs under the
78- # same ServiceAccount and uses the legacy core/v1 events API (distinct from events.k8s.io below).
74+ # Required by the external-provisioner sidecar, which uses the legacy core/v1 events API.
7975 - apiGroups :
8076 - " "
8177 resources :
8783 - create
8884 - patch
8985 - update
90- # ConfigMaps: applied by the truststore controller via SSA (create + patch) and watched via
91- # .owns() and .watches(). Also read by the autoTLS backend for additional trust roots and
92- # by the k8sSearch backend for the trust-store ConfigMap.
86+ # ConfigMaps are applied by the truststore controller via SSA and watched for changes.
87+ # Also read by the autoTLS backend for trust roots and by the k8sSearch backend.
9388 - apiGroups :
9489 - " "
9590 resources :
@@ -100,8 +95,7 @@ rules:
10095 - get
10196 - watch
10297 - list
103- # PersistentVolumes: managed by the external-provisioner sidecar container (not the operator
104- # binary directly). The sidecar creates, patches, and deletes PVs on behalf of the CSI driver.
98+ # PersistentVolumes are managed by the external-provisioner sidecar on behalf of the CSI driver.
10599 - apiGroups :
106100 - " "
107101 resources :
@@ -127,16 +121,15 @@ rules:
127121 - get
128122 - list
129123 - watch
130- # For automatic cluster domain detection
124+ # For automatic cluster domain detection.
131125 - apiGroups :
132126 - " "
133127 resources :
134128 - nodes/proxy
135129 verbs :
136130 - get
137- # CSINodes: used by the external-provisioner sidecar and node-driver-registrar for
138- # topology-aware volume scheduling.
139- # StorageClasses: used by the external-provisioner sidecar to read provisioner configuration.
131+ # Required by the external-provisioner sidecar to discover driver topology keys (CSINodes)
132+ # and determine volume binding mode (StorageClasses).
140133 - apiGroups :
141134 - storage.k8s.io
142135 resources :
@@ -146,21 +139,18 @@ rules:
146139 - get
147140 - list
148141 - watch
149- # Pods: read by the CSI controller and node services to resolve secret scope (node IPs, service
150- # names). Patched with expiry annotations so the restarter can evict pods before their
151- # certificates expire.
142+ # Pods are read by the CSI driver to resolve secret scope. Patched with expiry annotations
143+ # so the restarter can evict pods before their certificates expire.
152144 - apiGroups :
153145 - " "
154146 resources :
155147 - pods
156148 verbs :
157149 - get
158150 - patch
159- # SecretClasses: the primary configuration CRD.
160- # - get: fetched by the CSI controller to initialize the secret backend, and by the truststore
161- # controller during reconciliation.
162- # - watch + list: watched by the truststore controller to re-reconcile when a SecretClass changes.
163- # - create + patch (when CRD maintenance is enabled): used to deploy the default "tls" SecretClass.
151+ # SecretClasses are the primary configuration CRD. Read by the CSI controller and the
152+ # truststore controller. Watched to retrigger reconciliation when a SecretClass changes.
153+ # The operator creates the default "tls" SecretClass at startup when CRD maintenance is enabled.
164154 - apiGroups :
165155 - secrets.stackable.tech
166156 resources :
@@ -173,9 +163,7 @@ rules:
173163 - get
174164 - watch
175165 - list
176- # TrustStores: the primary reconciled resource in the truststore controller
177- # (Controller::new watches this type). The operator only reconciles existing TrustStores;
178- # it never creates them, so no create/patch is needed here.
166+ # TrustStores are the primary reconciled resource in the truststore controller.
179167 - apiGroups :
180168 - secrets.stackable.tech
181169 resources :
@@ -184,9 +172,7 @@ rules:
184172 - get
185173 - watch
186174 - list
187- # ListenerClasses, Listeners, PodListeners: read during volume provisioning to resolve
188- # listener-scoped addresses (IPs/hostnames) for inclusion in TLS SANs and for topology
189- # node pinning.
175+ # Read during volume provisioning to resolve listener-scoped addresses for TLS SANs.
190176 - apiGroups :
191177 - listeners.stackable.tech
192178 resources :
@@ -195,9 +181,8 @@ rules:
195181 - podlisteners
196182 verbs :
197183 - get
198- # cert-manager Certificates: applied via SSA (create + patch) by the certManager backend
199- # when provisioning a certificate, and read back (get) to check topology node affinity for
200- # re-scheduling decisions.
184+ # cert-manager Certificates are applied via SSA by the cert-manager backend when provisioning
185+ # a certificate, and read back to check node affinity for scheduling decisions.
201186 - apiGroups :
202187 - cert-manager.io
203188 resources :
@@ -206,8 +191,7 @@ rules:
206191 - get
207192 - patch
208193 - create
209- # Events (events.k8s.io): used by the kube-rs controller event recorder (distinct from
210- # the legacy core/v1 events used by the external-provisioner sidecar above).
194+ # Publish reconciliation errors as Kubernetes Events.
211195 - apiGroups :
212196 - events.k8s.io
213197 resources :
@@ -216,9 +200,8 @@ rules:
216200 - create
217201 - patch
218202{{ if .Capabilities.APIVersions.Has "security.openshift.io/v1" }}
219- # OpenShift SecurityContextConstraints: allows the operator's ServiceAccount to use the
220- # custom SCC defined above, which grants host-path volumes and bidirectional mount propagation
221- # required by the CSI driver.
203+ # Required on OpenShift to allow the secret-operator pods to run with the custom SCC
204+ # defined above (host-path volumes and bidirectional mount propagation for the CSI driver).
222205 - apiGroups :
223206 - security.openshift.io
224207 resourceNames :
0 commit comments