Skip to content

Commit eceeaf2

Browse files
break(helm/v2-plugin): enhance RBAC support with namespace-scoped deployments, multi-namespace configuration, and dynamic Role/ClusterRole rendering
Generated-by: Claude
1 parent 7681e75 commit eceeaf2

53 files changed

Lines changed: 1426 additions & 113 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

docs/book/src/cronjob-tutorial/testdata/project/dist/chart/templates/manager/manager.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ spec:
5353
- args:
5454
{{- if .Values.metrics.enable }}
5555
- --metrics-bind-address=:{{ .Values.metrics.port }}
56+
{{- if not .Values.metrics.secure }}
57+
- --metrics-secure=false
58+
{{- end }}
5659
{{- else }}
5760
# Bind to :0 to disable the controller-runtime managed metrics server
5861
- --metrics-bind-address=0

docs/book/src/cronjob-tutorial/testdata/project/dist/chart/templates/rbac/cronjob-admin-role.yaml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
1-
{{- if .Values.rbacHelpers.enable }}
1+
{{- if .Values.rbac.helpers.enable }}
22
apiVersion: rbac.authorization.k8s.io/v1
3+
{{- if .Values.rbac.namespaced }}
4+
kind: Role
5+
{{- else }}
36
kind: ClusterRole
7+
{{- end }}
48
metadata:
9+
{{- if .Values.rbac.namespaced }}
10+
namespace: {{ .Release.Namespace }}
11+
{{- end }}
512
labels:
613
app.kubernetes.io/managed-by: {{ .Release.Service }}
714
app.kubernetes.io/name: {{ include "project.name" . }}

docs/book/src/cronjob-tutorial/testdata/project/dist/chart/templates/rbac/cronjob-editor-role.yaml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
1-
{{- if .Values.rbacHelpers.enable }}
1+
{{- if .Values.rbac.helpers.enable }}
22
apiVersion: rbac.authorization.k8s.io/v1
3+
{{- if .Values.rbac.namespaced }}
4+
kind: Role
5+
{{- else }}
36
kind: ClusterRole
7+
{{- end }}
48
metadata:
9+
{{- if .Values.rbac.namespaced }}
10+
namespace: {{ .Release.Namespace }}
11+
{{- end }}
512
labels:
613
app.kubernetes.io/managed-by: {{ .Release.Service }}
714
app.kubernetes.io/name: {{ include "project.name" . }}

docs/book/src/cronjob-tutorial/testdata/project/dist/chart/templates/rbac/cronjob-viewer-role.yaml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
1-
{{- if .Values.rbacHelpers.enable }}
1+
{{- if .Values.rbac.helpers.enable }}
22
apiVersion: rbac.authorization.k8s.io/v1
3+
{{- if .Values.rbac.namespaced }}
4+
kind: Role
5+
{{- else }}
36
kind: ClusterRole
7+
{{- end }}
48
metadata:
9+
{{- if .Values.rbac.namespaced }}
10+
namespace: {{ .Release.Namespace }}
11+
{{- end }}
512
labels:
613
app.kubernetes.io/managed-by: {{ .Release.Service }}
714
app.kubernetes.io/name: {{ include "project.name" . }}

docs/book/src/cronjob-tutorial/testdata/project/dist/chart/templates/rbac/manager-role.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
apiVersion: rbac.authorization.k8s.io/v1
2+
{{- if .Values.rbac.namespaced }}
3+
kind: Role
4+
{{- else }}
25
kind: ClusterRole
6+
{{- end }}
37
metadata:
8+
{{- if .Values.rbac.namespaced }}
9+
namespace: {{ .Release.Namespace }}
10+
{{- end }}
411
name: {{ include "project.resourceName" (dict "suffix" "manager-role" "context" $) }}
512
rules:
613
- apiGroups:

docs/book/src/cronjob-tutorial/testdata/project/dist/chart/templates/rbac/manager-rolebinding.yaml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
apiVersion: rbac.authorization.k8s.io/v1
2+
{{- if .Values.rbac.namespaced }}
3+
kind: RoleBinding
4+
{{- else }}
25
kind: ClusterRoleBinding
6+
{{- end }}
37
metadata:
8+
{{- if .Values.rbac.namespaced }}
9+
namespace: {{ .Release.Namespace }}
10+
{{- end }}
411
labels:
512
app.kubernetes.io/managed-by: {{ .Release.Service }}
613
app.kubernetes.io/name: {{ include "project.name" . }}
@@ -9,7 +16,11 @@ metadata:
916
name: {{ include "project.resourceName" (dict "suffix" "manager-rolebinding" "context" $) }}
1017
roleRef:
1118
apiGroup: rbac.authorization.k8s.io
19+
{{- if .Values.rbac.namespaced }}
20+
kind: Role
21+
{{- else }}
1222
kind: ClusterRole
23+
{{- end }}
1324
name: {{ include "project.resourceName" (dict "suffix" "manager-role" "context" $) }}
1425
subjects:
1526
- kind: ServiceAccount

docs/book/src/cronjob-tutorial/testdata/project/dist/chart/templates/rbac/metrics-auth-role.yaml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
{{- if .Values.metrics.enable }}
1+
{{- if and .Values.metrics.enable .Values.metrics.secure }}
2+
{{- if .Values.rbac.namespaced }}
3+
{{- fail "Cannot enable secure metrics (metrics.secure=true) with namespace-scoped RBAC (rbac.namespaced=true). Metrics authentication requires cluster-scoped TokenReview/SubjectAccessReview permissions. Either set metrics.secure=false or rbac.namespaced=false." }}
4+
{{- end }}
25
apiVersion: rbac.authorization.k8s.io/v1
36
kind: ClusterRole
47
metadata:

docs/book/src/cronjob-tutorial/testdata/project/dist/chart/templates/rbac/metrics-auth-rolebinding.yaml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
{{- if .Values.metrics.enable }}
1+
{{- if and .Values.metrics.enable .Values.metrics.secure }}
2+
{{- if .Values.rbac.namespaced }}
3+
{{- fail "Cannot enable secure metrics (metrics.secure=true) with namespace-scoped RBAC (rbac.namespaced=true). Metrics authentication requires cluster-scoped TokenReview/SubjectAccessReview permissions. Either set metrics.secure=false or rbac.namespaced=false." }}
4+
{{- end }}
25
apiVersion: rbac.authorization.k8s.io/v1
36
kind: ClusterRoleBinding
47
metadata:

docs/book/src/cronjob-tutorial/testdata/project/dist/chart/templates/rbac/metrics-reader.yaml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
{{- if .Values.metrics.enable }}
1+
{{- if and .Values.metrics.enable .Values.metrics.secure }}
2+
{{- if .Values.rbac.namespaced }}
3+
{{- fail "Cannot enable secure metrics (metrics.secure=true) with namespace-scoped RBAC (rbac.namespaced=true). Metrics reader role requires nonResourceURLs which are only valid in ClusterRoles. Either set metrics.secure=false or rbac.namespaced=false." }}
4+
{{- end }}
25
apiVersion: rbac.authorization.k8s.io/v1
36
kind: ClusterRole
47
metadata:

docs/book/src/cronjob-tutorial/testdata/project/dist/chart/values.yaml

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,11 +87,18 @@ manager:
8787
##
8888
terminationGracePeriodSeconds: 10
8989

90-
## Helper RBAC roles for managing custom resources
90+
## RBAC configuration
9191
##
92-
rbacHelpers:
93-
# Install convenience admin/editor/viewer roles for CRDs
94-
enable: false
92+
rbac:
93+
# RBAC resource scope
94+
# - false (default): ClusterRole/ClusterRoleBinding (all namespaces)
95+
# - true: Role/RoleBinding (release namespace only)
96+
namespaced: false
97+
98+
# Helper roles for CRD management (admin/editor/viewer)
99+
helpers:
100+
# Install convenience admin/editor/viewer roles for CRDs
101+
enable: false
95102

96103
## Custom Resource Definitions
97104
##
@@ -108,6 +115,9 @@ metrics:
108115
enable: true
109116
# Metrics server port
110117
port: 8443
118+
# Secure metrics protection
119+
# Requires RBAC cluster scoped permissions
120+
secure: true
111121

112122
## Cert-manager integration for TLS certificates.
113123
## Required for webhook certificates and metrics endpoint certificates.

0 commit comments

Comments
 (0)