Skip to content

Commit 0827106

Browse files
authored
fix: RBACs for hub and disabled namespaced RBACs
1 parent 2dff203 commit 0827106

File tree

6 files changed

+34
-210
lines changed

6 files changed

+34
-210
lines changed

traefik/templates/_helpers.tpl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,16 @@ Renders a complete tree, even values that contains template.
129129
{{- end -}}
130130

131131
{{- define "imageVersion" -}}
132+
{{/*
133+
Traefik hub is based on v3.0 of traefik proxy, so this is a hack to avoid to much complexity in RBAC management which are
134+
based on semverCompare
135+
*/}}
136+
{{- if $.Values.hub.token -}}
137+
v3.0
138+
{{- else -}}
132139
{{ (split "@" (default $.Chart.AppVersion $.Values.image.tag))._0 | replace "latest-" "" | replace "experimental-" "" }}
133140
{{- end -}}
141+
{{- end -}}
134142

135143
{{/* Generate/load self-signed certificate for admission webhooks */}}
136144
{{- define "traefik-hub.webhook_cert" -}}

traefik/templates/rbac/clusterrole.yaml

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,16 @@ rules:
7272
- get
7373
- list
7474
- watch
75+
{{- if $.Values.hub.token }}
76+
- apiGroups:
77+
- discovery.k8s.io
78+
resources:
79+
- endpointslices
80+
verbs:
81+
- get
82+
- list
83+
- watch
84+
{{- end }}
7585
{{- else }}
7686
- apiGroups:
7787
- ""
@@ -87,9 +97,6 @@ rules:
8797
resources:
8898
- endpointslices
8999
verbs:
90-
{{- if $.Values.hub.token }}
91-
- get
92-
{{- end }}
93100
- list
94101
- watch
95102
{{- end }}

traefik/templates/rbac/role.yaml

Lines changed: 0 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,6 @@ rules:
3939
resources:
4040
- endpointslices
4141
verbs:
42-
{{- if $.Values.hub.token }}
43-
- get
44-
{{- end }}
4542
- list
4643
- watch
4744
{{- end }}
@@ -156,81 +153,5 @@ rules:
156153
verbs:
157154
- update
158155
{{- end -}}
159-
{{- if $.Values.hub.token }}
160-
- apiGroups:
161-
- hub.traefik.io
162-
resources:
163-
- accesscontrolpolicies
164-
- apiaccesses
165-
- apiportals
166-
- apiratelimits
167-
- apis
168-
- apiversions
169-
verbs:
170-
- list
171-
- watch
172-
- create
173-
- update
174-
- patch
175-
- delete
176-
- get
177-
- apiGroups:
178-
- ""
179-
resources:
180-
- namespaces
181-
- pods
182-
verbs:
183-
- get
184-
- list
185-
- watch
186-
- apiGroups:
187-
- ""
188-
resources:
189-
- events
190-
verbs:
191-
- create
192-
- patch
193-
- apiGroups:
194-
- coordination.k8s.io
195-
resources:
196-
- leases
197-
verbs:
198-
- get
199-
- list
200-
- watch
201-
- create
202-
- update
203-
- patch
204-
- delete
205-
- apiGroups:
206-
- ""
207-
resources:
208-
- secrets
209-
verbs:
210-
- get
211-
- list
212-
- watch
213-
- update
214-
- create
215-
- delete
216-
- deletecollection
217-
- apiGroups:
218-
- apps
219-
resources:
220-
- replicasets
221-
verbs:
222-
- get
223-
- list
224-
- watch
225-
- apiGroups:
226-
- extensions
227-
- networking.k8s.io
228-
resources:
229-
- ingresses
230-
verbs:
231-
- get
232-
- list
233-
- watch
234-
{{- end -}}
235156
{{- end -}}
236157
{{- end -}}

traefik/templates/requirements.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,7 @@
1212
{{- if and (.Values.providers.kubernetesGateway).enabled (and (semverCompare "<3.1.0-rc3" $version) (not .Values.experimental.kubernetesGateway.enabled)) }}
1313
{{- fail "ERROR: Before traefik v3.1.0-rc3, kubernetesGateway is experimental. Enable it by setting experimental.kubernetesGateway.enabled to true" -}}
1414
{{- end }}
15+
16+
{{- if and .Values.hub.token (and .Values.rbac.enabled .Values.rbac.namespaced) }}
17+
{{- fail "ERROR: Currently traefik-hub doesn't support namespaced RBACs" -}}
18+
{{- end }}

traefik/tests/rbac-config_test.yaml

Lines changed: 3 additions & 128 deletions
Original file line numberDiff line numberDiff line change
@@ -1141,8 +1141,8 @@ tests:
11411141
- watch
11421142

11431143
- it: should contain additional RBACS for hub
1144-
chart:
1145-
appVersion: v3.1.0
1144+
image:
1145+
tag: v3.1.0
11461146
set:
11471147
hub:
11481148
token: xxx
@@ -1273,132 +1273,7 @@ tests:
12731273
- get
12741274
- list
12751275
- watch
1276-
- it: should provide namespace'd RBACS for hub
1277-
chart:
1278-
appVersion: v3.1.0
1279-
set:
1280-
hub:
1281-
token: xxx
1282-
rbac:
1283-
namespaced: true
1284-
providers:
1285-
kubernetesIngress:
1286-
enabled: false
1287-
asserts:
1288-
- template: rbac/role.yaml
1289-
contains:
1290-
path: rules
1291-
content:
1292-
apiGroups:
1293-
- hub.traefik.io
1294-
resources:
1295-
- accesscontrolpolicies
1296-
- apiaccesses
1297-
- apiportals
1298-
- apiratelimits
1299-
- apis
1300-
- apiversions
1301-
verbs:
1302-
- list
1303-
- watch
1304-
- create
1305-
- update
1306-
- patch
1307-
- delete
1308-
- get
1309-
- template: rbac/role.yaml
1310-
contains:
1311-
path: rules
1312-
content:
1313-
apiGroups:
1314-
- ""
1315-
resources:
1316-
- namespaces
1317-
- pods
1318-
verbs:
1319-
- get
1320-
- list
1321-
- watch
1322-
- template: rbac/role.yaml
1323-
contains:
1324-
path: rules
1325-
content:
1326-
apiGroups:
1327-
- ""
1328-
resources:
1329-
- events
1330-
verbs:
1331-
- create
1332-
- patch
1333-
- template: rbac/role.yaml
1334-
contains:
1335-
path: rules
1336-
content:
1337-
apiGroups:
1338-
- discovery.k8s.io
1339-
resources:
1340-
- endpointslices
1341-
verbs:
1342-
- get
1343-
- list
1344-
- watch
1345-
- template: rbac/role.yaml
1346-
contains:
1347-
path: rules
1348-
content:
1349-
apiGroups:
1350-
- coordination.k8s.io
1351-
resources:
1352-
- leases
1353-
verbs:
1354-
- get
1355-
- list
1356-
- watch
1357-
- create
1358-
- update
1359-
- patch
1360-
- delete
1361-
- template: rbac/role.yaml
1362-
contains:
1363-
path: rules
1364-
content:
1365-
apiGroups:
1366-
- ""
1367-
resources:
1368-
- secrets
1369-
verbs:
1370-
- get
1371-
- list
1372-
- watch
1373-
- update
1374-
- create
1375-
- delete
1376-
- deletecollection
1377-
- template: rbac/role.yaml
1378-
contains:
1379-
path: rules
1380-
content:
1381-
apiGroups:
1382-
- apps
1383-
resources:
1384-
- replicasets
1385-
verbs:
1386-
- get
1387-
- list
1388-
- watch
1389-
- template: rbac/role.yaml
1390-
contains:
1391-
path: rules
1392-
content:
1393-
apiGroups:
1394-
- extensions
1395-
- networking.k8s.io
1396-
resources:
1397-
- ingresses
1398-
verbs:
1399-
- get
1400-
- list
1401-
- watch
1276+
14021277
- it: should provide expected namespace'd RBACS for version < v3.1
14031278
set:
14041279
image:

traefik/tests/requirements-config_test.yaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,3 +52,12 @@ tests:
5252
enabled: true
5353
asserts:
5454
- notFailedTemplate: {}
55+
- it: should not fail when using traefik-hub with namespaced RBACs
56+
set:
57+
hub:
58+
token: xxx
59+
rbac:
60+
namespaced: true
61+
asserts:
62+
- failedTemplate:
63+
errorMessage: "ERROR: Currently traefik-hub doesn't support namespaced RBACs"

0 commit comments

Comments
 (0)