Skip to content

Commit 747f833

Browse files
authored
fix(Traefik Hub): RBACs missing with API Gateway
1 parent 7518dfc commit 747f833

File tree

2 files changed

+96
-70
lines changed

2 files changed

+96
-70
lines changed

traefik/templates/rbac/clusterrole.yaml

Lines changed: 49 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,14 @@ rules:
3232
- networking.k8s.io
3333
resources:
3434
- ingressclasses
35-
{{- if not .Values.rbac.namespaced }}
35+
{{- if not .Values.rbac.namespaced }}
3636
- ingresses
37-
{{- end }}
37+
{{- end }}
3838
verbs:
3939
- get
4040
- list
4141
- watch
42-
{{- if (.Values.providers.kubernetesGateway).enabled }}
42+
{{- if (.Values.providers.kubernetesGateway).enabled }}
4343
- apiGroups:
4444
- ""
4545
resources:
@@ -61,8 +61,8 @@ rules:
6161
- gatewayclasses/status
6262
verbs:
6363
- update
64-
{{- end }}
65-
{{- if not .Values.rbac.namespaced }}
64+
{{- end }}
65+
{{- if not .Values.rbac.namespaced }}
6666
{{- if (semverCompare "<v3.1.0-0" $version) }}
6767
- apiGroups:
6868
- ""
@@ -87,7 +87,6 @@ rules:
8787
- apiGroups:
8888
- ""
8989
resources:
90-
- nodes
9190
- services
9291
verbs:
9392
- get
@@ -112,16 +111,22 @@ rules:
112111
- get
113112
- list
114113
- watch
115-
{{- if .Values.providers.kubernetesIngress.enabled }}
114+
{{- if and .Values.hub.token .Values.hub.apimanagement.enabled }}
115+
- update
116+
- create
117+
- delete
118+
- deletecollection
119+
{{- end }}
120+
{{- if .Values.providers.kubernetesIngress.enabled }}
116121
- apiGroups:
117122
- extensions
118123
- networking.k8s.io
119124
resources:
120125
- ingresses/status
121126
verbs:
122127
- update
123-
{{- end -}}
124-
{{- if .Values.providers.kubernetesCRD.enabled }}
128+
{{- end -}}
129+
{{- if .Values.providers.kubernetesCRD.enabled }}
125130
- apiGroups:
126131
- traefik.io
127132
resources:
@@ -139,8 +144,8 @@ rules:
139144
- get
140145
- list
141146
- watch
142-
{{- end -}}
143-
{{- if .Values.podSecurityPolicy.enabled }}
147+
{{- end -}}
148+
{{- if .Values.podSecurityPolicy.enabled }}
144149
- apiGroups:
145150
- policy
146151
resourceNames:
@@ -149,29 +154,29 @@ rules:
149154
- podsecuritypolicies
150155
verbs:
151156
- use
152-
{{- end -}}
153-
{{- if .Values.providers.kubernetesGateway.enabled }}
157+
{{- end -}}
158+
{{- if .Values.providers.kubernetesGateway.enabled }}
154159
- apiGroups:
155160
- ""
156161
resources:
157162
- services
158-
{{- if (semverCompare "<v3.1.0-0" $version) }}
163+
{{- if (semverCompare "<v3.1.0-0" $version) }}
159164
- endpoints
160-
{{- end }}
165+
{{- end }}
161166
- secrets
162167
verbs:
163168
- get
164169
- list
165170
- watch
166-
{{- if (semverCompare ">=v3.1.0-0" $version) }}
171+
{{- if (semverCompare ">=v3.1.0-0" $version) }}
167172
- apiGroups:
168173
- discovery.k8s.io
169174
resources:
170175
- endpointslices
171176
verbs:
172177
- list
173178
- watch
174-
{{- end }}
179+
{{- end }}
175180
- apiGroups:
176181
- gateway.networking.k8s.io
177182
resources:
@@ -193,74 +198,62 @@ rules:
193198
- tlsroutes/status
194199
verbs:
195200
- update
196-
{{- end -}}
197-
{{- end -}}
198-
{{- if and .Values.hub.token .Values.hub.apimanagement.enabled }}
201+
{{- end }}
202+
{{- if .Values.hub.token }}
199203
- apiGroups:
200-
- hub.traefik.io
204+
- coordination.k8s.io
201205
resources:
202-
- accesscontrolpolicies
203-
- apiaccesses
204-
- apiportals
205-
- apiratelimits
206-
- apis
207-
- apiversions
206+
- leases
208207
verbs:
208+
- get
209209
- list
210210
- watch
211211
- create
212212
- update
213213
- patch
214214
- delete
215-
- get
216-
- apiGroups:
217-
- ""
218-
resources:
219-
- namespaces
220-
- pods
221-
verbs:
222-
- list
215+
{{- end }}
216+
{{- /* not .Values.rbac.namespace */}}
217+
{{- end }}
218+
{{- if .Values.hub.token }}
223219
- apiGroups:
224220
- ""
225221
resources:
226222
- namespaces
223+
{{- if .Values.hub.apimanagement.enabled }}
227224
- pods
228-
- nodes
225+
{{- end }}
229226
verbs:
230227
- get
231228
- list
229+
{{- if .Values.hub.apimanagement.enabled }}
232230
- watch
231+
{{- end }}
232+
{{- if .Values.hub.apimanagement.enabled }}
233233
- apiGroups:
234-
- ""
235-
resources:
236-
- events
237-
verbs:
238-
- create
239-
- patch
240-
- apiGroups:
241-
- coordination.k8s.io
234+
- hub.traefik.io
242235
resources:
243-
- leases
236+
- accesscontrolpolicies
237+
- apiaccesses
238+
- apiportals
239+
- apiratelimits
240+
- apis
241+
- apiversions
244242
verbs:
245-
- get
246243
- list
247244
- watch
248245
- create
249246
- update
250247
- patch
251248
- delete
249+
- get
252250
- apiGroups:
253251
- ""
254252
resources:
255-
- secrets
253+
- events
256254
verbs:
257-
- get
258-
- list
259-
- watch
260-
- update
261255
- create
262-
- delete
263-
- deletecollection
256+
- patch
264257
- apiGroups:
265258
- apps
266259
resources:
@@ -270,14 +263,13 @@ rules:
270263
- list
271264
- watch
272265
- apiGroups:
273-
- extensions
274-
- networking.k8s.io
266+
- ""
275267
resources:
276-
- ingresses
268+
- nodes
277269
verbs:
278-
- get
279270
- list
280271
- watch
272+
{{- end -}}
281273
{{- end }}
282274
{{- end }}
283275
{{- end }}

traefik/tests/rbac-config_test.yaml

Lines changed: 47 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1160,8 +1160,42 @@ tests:
11601160
- get
11611161
- list
11621162
- watch
1163+
- it: should contain additional RBACS for hub API gateway
1164+
image:
1165+
tag: v3.1.0
1166+
set:
1167+
hub:
1168+
token: xxx
1169+
asserts:
1170+
- template: rbac/clusterrole.yaml
1171+
contains:
1172+
path: rules
1173+
content:
1174+
apiGroups:
1175+
- ""
1176+
resources:
1177+
- namespaces
1178+
verbs:
1179+
- get
1180+
- list
1181+
- template: rbac/clusterrole.yaml
1182+
contains:
1183+
path: rules
1184+
content:
1185+
apiGroups:
1186+
- coordination.k8s.io
1187+
resources:
1188+
- leases
1189+
verbs:
1190+
- get
1191+
- list
1192+
- watch
1193+
- create
1194+
- update
1195+
- patch
1196+
- delete
11631197

1164-
- it: should contain additional RBACS for hub
1198+
- it: should contain additional RBACS for hub API management
11651199
image:
11661200
tag: v3.1.0
11671201
set:
@@ -1200,18 +1234,6 @@ tests:
12001234
resources:
12011235
- namespaces
12021236
- pods
1203-
verbs:
1204-
- list
1205-
- template: rbac/clusterrole.yaml
1206-
contains:
1207-
path: rules
1208-
content:
1209-
apiGroups:
1210-
- ""
1211-
resources:
1212-
- namespaces
1213-
- pods
1214-
- nodes
12151237
verbs:
12161238
- get
12171239
- list
@@ -1291,11 +1313,23 @@ tests:
12911313
- extensions
12921314
- networking.k8s.io
12931315
resources:
1316+
- ingressclasses
12941317
- ingresses
12951318
verbs:
12961319
- get
12971320
- list
12981321
- watch
1322+
- template: rbac/clusterrole.yaml
1323+
contains:
1324+
path: rules
1325+
content:
1326+
apiGroups:
1327+
- ""
1328+
resources:
1329+
- nodes
1330+
verbs:
1331+
- list
1332+
- watch
12991333

13001334
- it: should provide expected namespace'd RBACS for version < v3.1
13011335
set:

0 commit comments

Comments
 (0)