Skip to content

Commit e4a491e

Browse files
committed
Also allow for the RBAC rules to be modified
Signed-off-by: Pete Wall <[email protected]>
1 parent 626d481 commit e4a491e

File tree

51 files changed

+3630
-1507
lines changed

Some content is hidden

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

51 files changed

+3630
-1507
lines changed

operations/helm/charts/alloy/CHANGELOG.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,12 @@ changes that impact end-user behavior are listed; changes to documentation or
88
internal API changes are not present.
99

1010
Unreleased
11-
----------
12-
- Add NetworkPolicy support. (@TheRealNoob)
1311

12+
### Enhancements
13+
14+
- Add NetworkPolicy support. (@TheRealNoob)
15+
- Allow for creating Roles and RoleBindings instead of ClusterRoles and ClusterRoleBindings. (@petewall)
16+
- Allow for customizing the specific RBAC rules being created. (@petewall)
1417

1518
1.1.1 (2025-06-05)
1619
----------

operations/helm/charts/alloy/README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,12 @@ useful if just using the default DaemonSet isn't sufficient.
157157
| networkPolicy.policyTypes[1] | string | `"Egress"` | |
158158
| rbac.create | bool | `true` | Whether to create RBAC resources for Alloy. |
159159
| rbac.namespaces | list | `[]` | If set, only create Roles and RoleBindings in the given list of namespaces, rather than ClusterRoles and ClusterRoleBindings. |
160+
| rbac.rules | list | `[{"apiGroups":["","discovery.k8s.io","networking.k8s.io"],"resources":["endpoints","endpointslices","ingresses","nodes","nodes/proxy","nodes/metrics","pods","services"],"verbs":["get","list","watch"]},{"apiGroups":[""],"resources":["pods","pods/log","namespaces"],"verbs":["get","list","watch"]},{"apiGroups":["monitoring.grafana.com"],"resources":["podlogs"],"verbs":["get","list","watch"]},{"apiGroups":["monitoring.coreos.com"],"resources":["prometheusrules"],"verbs":["get","list","watch"]},{"apiGroups":["monitoring.coreos.com"],"resources":["podmonitors","servicemonitors","probes","scrapeconfigs"],"verbs":["get","list","watch"]},{"apiGroups":[""],"resources":["events"],"verbs":["get","list","watch"]},{"apiGroups":[""],"resources":["configmaps","secrets"],"verbs":["get","list","watch"]},{"apiGroups":["apps","extensions"],"resources":["replicasets"],"verbs":["get","list","watch"]}]` | The rules to create for the ClusterRole or Role objects. |
161+
| rbac.rules[0] | object | `{"apiGroups":["","discovery.k8s.io","networking.k8s.io"],"resources":["endpoints","endpointslices","ingresses","nodes","nodes/proxy","nodes/metrics","pods","services"],"verbs":["get","list","watch"]}` | Rules required for the `discovery.kubernetes` component. |
162+
| rbac.rules[1] | object | `{"apiGroups":[""],"resources":["pods","pods/log","namespaces"],"verbs":["get","list","watch"]}` | Rules required for the `loki.source.kubernetes` component. |
163+
| rbac.rules[2] | object | `{"apiGroups":["monitoring.grafana.com"],"resources":["podlogs"],"verbs":["get","list","watch"]}` | Rules required for the `loki.source.podlogs` component. |
164+
| rbac.rules[3] | object | `{"apiGroups":["monitoring.coreos.com"],"resources":["prometheusrules"],"verbs":["get","list","watch"]}` | Rules required for the `mimir.rules.kubernetes` component. |
165+
| rbac.rules[5] | object | `{"apiGroups":[""],"resources":["events"],"verbs":["get","list","watch"]}` | Rules required for the `loki.source.kubernetes_events` component. |
160166
| service.annotations | object | `{}` | |
161167
| service.clusterIP | string | `""` | Cluster IP, can be set to None, empty "" or an IP address |
162168
| service.enabled | bool | `true` | Creates a Service for the controller's pods. |
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# Specify the namespaces for Roles and RoleBindings
2+
rbac:
3+
create: true
4+
rules:
5+
# -- Rules required for the `discovery.kubernetes` component.
6+
- apiGroups: ["", "discovery.k8s.io", "networking.k8s.io"]
7+
resources: ["endpoints", "endpointslices", "ingresses", "nodes", "nodes/proxy", "nodes/metrics", "pods", "services"]
8+
verbs: ["get", "list", "watch"]
9+
# Rules for the `prometheus.operator.*` components.
10+
- apiGroups: ["monitoring.coreos.com"]
11+
resources: ["podmonitors", "servicemonitors", "probes", "scrapeconfigs"]
12+
verbs: ["get", "list", "watch"]

operations/helm/charts/alloy/templates/rbac.yaml

Lines changed: 4 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,3 @@
1-
{{- define "alloy.rbac.rules.resourced" -}}
2-
# Rules which allow discovery.kubernetes to function.
3-
- apiGroups: ["", "discovery.k8s.io", "networking.k8s.io"]
4-
resources: ["endpoints", "endpointslices", "ingresses", "nodes", "nodes/proxy", "nodes/metrics", "pods", "services"]
5-
verbs: ["get", "list", "watch"]
6-
# Rules which allow loki.source.kubernetes and loki.source.podlogs to work.
7-
- apiGroups: [""]
8-
resources: ["pods", "pods/log", "namespaces"]
9-
verbs: ["get", "list", "watch"]
10-
- apiGroups: ["monitoring.grafana.com"]
11-
resources: ["podlogs"]
12-
verbs: ["get", "list", "watch"]
13-
# Rules which allow mimir.rules.kubernetes to work.
14-
- apiGroups: ["monitoring.coreos.com"]
15-
resources: ["prometheusrules"]
16-
verbs: ["get", "list", "watch"]
17-
# Rules for prometheus.kubernetes.*
18-
- apiGroups: ["monitoring.coreos.com"]
19-
resources: ["podmonitors", "servicemonitors", "probes", "scrapeconfigs"]
20-
verbs: ["get", "list", "watch"]
21-
# Rules which allow eventhandler to work.
22-
- apiGroups: [""]
23-
resources: ["events"]
24-
verbs: ["get", "list", "watch"]
25-
# needed for remote.kubernetes.*
26-
- apiGroups: [""]
27-
resources: ["configmaps", "secrets"]
28-
verbs: ["get", "list", "watch"]
29-
# needed for otelcol.processor.k8sattributes
30-
- apiGroups: ["apps"]
31-
resources: ["replicasets"]
32-
verbs: ["get", "list", "watch"]
33-
- apiGroups: ["extensions"]
34-
resources: ["replicasets"]
35-
verbs: ["get", "list", "watch"]
36-
{{- end }}
37-
38-
{{- define "alloy.rbac.rules.nonResourced" -}}
39-
- nonResourceURLs: ["/metrics"]
40-
verbs: ["get"]
41-
{{- end }}
42-
431
{{- if .Values.rbac.create }}
442
{{- if .Values.rbac.namespaces }}
453
{{- range $namespace := .Values.rbac.namespaces }}
@@ -53,7 +11,7 @@ metadata:
5311
{{- include "alloy.labels" $ | nindent 4 }}
5412
app.kubernetes.io/component: rbac
5513
rules:
56-
{{ include "alloy.rbac.rules.resourced" $ | indent 2 }}
14+
{{- $.Values.rbac.rules | toYaml | nindent 2 }}
5715
---
5816
apiVersion: rbac.authorization.k8s.io/v1
5917
kind: RoleBinding
@@ -82,8 +40,9 @@ metadata:
8240
{{- include "alloy.labels" . | nindent 4 }}
8341
app.kubernetes.io/component: rbac
8442
rules:
85-
{{ include "alloy.rbac.rules.resourced" . | indent 2 }}
86-
{{ include "alloy.rbac.rules.nonResourced" . | indent 2 }}
43+
{{- .Values.rbac.rules | toYaml | nindent 2 }}
44+
- nonResourceURLs: ["/metrics"]
45+
verbs: ["get"]
8746
---
8847
apiVersion: rbac.authorization.k8s.io/v1
8948
kind: ClusterRoleBinding

operations/helm/charts/alloy/values.yaml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,41 @@ rbac:
149149
# ClusterRoleBindings.
150150
namespaces: []
151151

152+
# -- The rules to create for the ClusterRole or Role objects.
153+
rules:
154+
# -- Rules required for the `discovery.kubernetes` component.
155+
- apiGroups: ["", "discovery.k8s.io", "networking.k8s.io"]
156+
resources: ["endpoints", "endpointslices", "ingresses", "nodes", "nodes/proxy", "nodes/metrics", "pods", "services"]
157+
verbs: ["get", "list", "watch"]
158+
# -- Rules required for the `loki.source.kubernetes` component.
159+
- apiGroups: [""]
160+
resources: ["pods", "pods/log", "namespaces"]
161+
verbs: ["get", "list", "watch"]
162+
# -- Rules required for the `loki.source.podlogs` component.
163+
- apiGroups: ["monitoring.grafana.com"]
164+
resources: ["podlogs"]
165+
verbs: ["get", "list", "watch"]
166+
# -- Rules required for the `mimir.rules.kubernetes` component.
167+
- apiGroups: ["monitoring.coreos.com"]
168+
resources: ["prometheusrules"]
169+
verbs: ["get", "list", "watch"]
170+
# Rules for the `prometheus.operator.*` components.
171+
- apiGroups: ["monitoring.coreos.com"]
172+
resources: ["podmonitors", "servicemonitors", "probes", "scrapeconfigs"]
173+
verbs: ["get", "list", "watch"]
174+
# -- Rules required for the `loki.source.kubernetes_events` component.
175+
- apiGroups: [""]
176+
resources: ["events"]
177+
verbs: ["get", "list", "watch"]
178+
# needed for the `remote.kubernetes.*` components.
179+
- apiGroups: [""]
180+
resources: ["configmaps", "secrets"]
181+
verbs: ["get", "list", "watch"]
182+
# needed for the `otelcol.processor.k8sattributes` component.
183+
- apiGroups: ["apps", "extensions"]
184+
resources: ["replicasets"]
185+
verbs: ["get", "list", "watch"]
186+
152187
serviceAccount:
153188
# -- Whether to create a service account for the Grafana Alloy deployment.
154189
create: true

operations/helm/tests/additional-serviceaccount-label/alloy/templates/rbac.yaml

Lines changed: 80 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -12,40 +12,86 @@ metadata:
1212
app.kubernetes.io/managed-by: Helm
1313
app.kubernetes.io/component: rbac
1414
rules:
15-
# Rules which allow discovery.kubernetes to function.
16-
- apiGroups: ["", "discovery.k8s.io", "networking.k8s.io"]
17-
resources: ["endpoints", "endpointslices", "ingresses", "nodes", "nodes/proxy", "nodes/metrics", "pods", "services"]
18-
verbs: ["get", "list", "watch"]
19-
# Rules which allow loki.source.kubernetes and loki.source.podlogs to work.
20-
- apiGroups: [""]
21-
resources: ["pods", "pods/log", "namespaces"]
22-
verbs: ["get", "list", "watch"]
23-
- apiGroups: ["monitoring.grafana.com"]
24-
resources: ["podlogs"]
25-
verbs: ["get", "list", "watch"]
26-
# Rules which allow mimir.rules.kubernetes to work.
27-
- apiGroups: ["monitoring.coreos.com"]
28-
resources: ["prometheusrules"]
29-
verbs: ["get", "list", "watch"]
30-
# Rules for prometheus.kubernetes.*
31-
- apiGroups: ["monitoring.coreos.com"]
32-
resources: ["podmonitors", "servicemonitors", "probes", "scrapeconfigs"]
33-
verbs: ["get", "list", "watch"]
34-
# Rules which allow eventhandler to work.
35-
- apiGroups: [""]
36-
resources: ["events"]
37-
verbs: ["get", "list", "watch"]
38-
# needed for remote.kubernetes.*
39-
- apiGroups: [""]
40-
resources: ["configmaps", "secrets"]
41-
verbs: ["get", "list", "watch"]
42-
# needed for otelcol.processor.k8sattributes
43-
- apiGroups: ["apps"]
44-
resources: ["replicasets"]
45-
verbs: ["get", "list", "watch"]
46-
- apiGroups: ["extensions"]
47-
resources: ["replicasets"]
48-
verbs: ["get", "list", "watch"]
15+
- apiGroups:
16+
- ""
17+
- discovery.k8s.io
18+
- networking.k8s.io
19+
resources:
20+
- endpoints
21+
- endpointslices
22+
- ingresses
23+
- nodes
24+
- nodes/proxy
25+
- nodes/metrics
26+
- pods
27+
- services
28+
verbs:
29+
- get
30+
- list
31+
- watch
32+
- apiGroups:
33+
- ""
34+
resources:
35+
- pods
36+
- pods/log
37+
- namespaces
38+
verbs:
39+
- get
40+
- list
41+
- watch
42+
- apiGroups:
43+
- monitoring.grafana.com
44+
resources:
45+
- podlogs
46+
verbs:
47+
- get
48+
- list
49+
- watch
50+
- apiGroups:
51+
- monitoring.coreos.com
52+
resources:
53+
- prometheusrules
54+
verbs:
55+
- get
56+
- list
57+
- watch
58+
- apiGroups:
59+
- monitoring.coreos.com
60+
resources:
61+
- podmonitors
62+
- servicemonitors
63+
- probes
64+
- scrapeconfigs
65+
verbs:
66+
- get
67+
- list
68+
- watch
69+
- apiGroups:
70+
- ""
71+
resources:
72+
- events
73+
verbs:
74+
- get
75+
- list
76+
- watch
77+
- apiGroups:
78+
- ""
79+
resources:
80+
- configmaps
81+
- secrets
82+
verbs:
83+
- get
84+
- list
85+
- watch
86+
- apiGroups:
87+
- apps
88+
- extensions
89+
resources:
90+
- replicasets
91+
verbs:
92+
- get
93+
- list
94+
- watch
4995
- nonResourceURLs: ["/metrics"]
5096
verbs: ["get"]
5197
---

operations/helm/tests/clustering/alloy/templates/rbac.yaml

Lines changed: 80 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -12,40 +12,86 @@ metadata:
1212
app.kubernetes.io/managed-by: Helm
1313
app.kubernetes.io/component: rbac
1414
rules:
15-
# Rules which allow discovery.kubernetes to function.
16-
- apiGroups: ["", "discovery.k8s.io", "networking.k8s.io"]
17-
resources: ["endpoints", "endpointslices", "ingresses", "nodes", "nodes/proxy", "nodes/metrics", "pods", "services"]
18-
verbs: ["get", "list", "watch"]
19-
# Rules which allow loki.source.kubernetes and loki.source.podlogs to work.
20-
- apiGroups: [""]
21-
resources: ["pods", "pods/log", "namespaces"]
22-
verbs: ["get", "list", "watch"]
23-
- apiGroups: ["monitoring.grafana.com"]
24-
resources: ["podlogs"]
25-
verbs: ["get", "list", "watch"]
26-
# Rules which allow mimir.rules.kubernetes to work.
27-
- apiGroups: ["monitoring.coreos.com"]
28-
resources: ["prometheusrules"]
29-
verbs: ["get", "list", "watch"]
30-
# Rules for prometheus.kubernetes.*
31-
- apiGroups: ["monitoring.coreos.com"]
32-
resources: ["podmonitors", "servicemonitors", "probes", "scrapeconfigs"]
33-
verbs: ["get", "list", "watch"]
34-
# Rules which allow eventhandler to work.
35-
- apiGroups: [""]
36-
resources: ["events"]
37-
verbs: ["get", "list", "watch"]
38-
# needed for remote.kubernetes.*
39-
- apiGroups: [""]
40-
resources: ["configmaps", "secrets"]
41-
verbs: ["get", "list", "watch"]
42-
# needed for otelcol.processor.k8sattributes
43-
- apiGroups: ["apps"]
44-
resources: ["replicasets"]
45-
verbs: ["get", "list", "watch"]
46-
- apiGroups: ["extensions"]
47-
resources: ["replicasets"]
48-
verbs: ["get", "list", "watch"]
15+
- apiGroups:
16+
- ""
17+
- discovery.k8s.io
18+
- networking.k8s.io
19+
resources:
20+
- endpoints
21+
- endpointslices
22+
- ingresses
23+
- nodes
24+
- nodes/proxy
25+
- nodes/metrics
26+
- pods
27+
- services
28+
verbs:
29+
- get
30+
- list
31+
- watch
32+
- apiGroups:
33+
- ""
34+
resources:
35+
- pods
36+
- pods/log
37+
- namespaces
38+
verbs:
39+
- get
40+
- list
41+
- watch
42+
- apiGroups:
43+
- monitoring.grafana.com
44+
resources:
45+
- podlogs
46+
verbs:
47+
- get
48+
- list
49+
- watch
50+
- apiGroups:
51+
- monitoring.coreos.com
52+
resources:
53+
- prometheusrules
54+
verbs:
55+
- get
56+
- list
57+
- watch
58+
- apiGroups:
59+
- monitoring.coreos.com
60+
resources:
61+
- podmonitors
62+
- servicemonitors
63+
- probes
64+
- scrapeconfigs
65+
verbs:
66+
- get
67+
- list
68+
- watch
69+
- apiGroups:
70+
- ""
71+
resources:
72+
- events
73+
verbs:
74+
- get
75+
- list
76+
- watch
77+
- apiGroups:
78+
- ""
79+
resources:
80+
- configmaps
81+
- secrets
82+
verbs:
83+
- get
84+
- list
85+
- watch
86+
- apiGroups:
87+
- apps
88+
- extensions
89+
resources:
90+
- replicasets
91+
verbs:
92+
- get
93+
- list
94+
- watch
4995
- nonResourceURLs: ["/metrics"]
5096
verbs: ["get"]
5197
---

0 commit comments

Comments
 (0)