Skip to content

Commit 4acafff

Browse files
fix(rbac): fail fast when secretResourceNames is set without namespaced RBAC
rbac.secretResourceNames was silently ignored when rbac.namespaced is false, since Kubernetes RBAC does not support resourceNames on cluster-scoped list/watch rules. Add a requirements.yaml check to surface this at template/install time instead. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
1 parent 871406f commit 4acafff

2 files changed

Lines changed: 21 additions & 0 deletions

File tree

traefik/templates/requirements.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@
3939
{{- end }}
4040
{{- end }}
4141

42+
{{- if and (not .Values.rbac.namespaced) (not (empty .Values.rbac.secretResourceNames)) }}
43+
{{- fail "ERROR: rbac.secretResourceNames requires rbac.namespaced to be true. Kubernetes RBAC does not support resourceNames on cluster-scoped list/watch rules." }}
44+
{{- end }}
45+
4246
{{- range $name, $config := .Values.ingressRoute }}
4347
{{- if regexMatch "[A-Z]" $name }}
4448
{{- fail (printf "ERROR: ingressRoute key %q contains uppercase characters and would generate an invalid Kubernetes resource name (RFC 1123 requires lowercase)." $name) }}

traefik/tests/requirements-config_test.yaml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -424,6 +424,23 @@ tests:
424424
asserts:
425425
- failedTemplate:
426426
errorMessage: "ERROR: Kubernetes Gateway provider requires ClusterRole. RBAC cannot be namespaced."
427+
- it: should fail when setting rbac.secretResourceNames without namespaced RBAC
428+
set:
429+
rbac:
430+
namespaced: false
431+
secretResourceNames:
432+
- traefik-tls-cert
433+
asserts:
434+
- failedTemplate:
435+
errorMessage: "ERROR: rbac.secretResourceNames requires rbac.namespaced to be true. Kubernetes RBAC does not support resourceNames on cluster-scoped list/watch rules."
436+
- it: should not fail when setting rbac.secretResourceNames with namespaced RBAC
437+
set:
438+
rbac:
439+
namespaced: true
440+
secretResourceNames:
441+
- traefik-tls-cert
442+
asserts:
443+
- notFailedTemplate: {}
427444
- it: should fail when trying to use certResolvers
428445
set:
429446
certResolvers:

0 commit comments

Comments
 (0)