Skip to content

Commit 5eba278

Browse files
authored
fix(chart): add rbac for default SA + server in each tenant (#513)
1 parent af6af4c commit 5eba278

File tree

4 files changed

+47
-27
lines changed

4 files changed

+47
-27
lines changed

deploy/charts/burrito/templates/config.yaml

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,14 @@ Tenant Namespaces
1515
Datastore Authorized Service Accounts
1616
*/}}
1717
{{- $datastoreAuthorizedServiceAccounts := list }}
18-
{{- range $tenant := .Values.tenants }}
19-
{{- range $sa := $tenant.serviceAccounts }}
20-
{{- $serviceAccount := printf "%s/%s" $tenant.namespace.name $sa.name }}
21-
{{- $datastoreAuthorizedServiceAccounts = append $datastoreAuthorizedServiceAccounts $serviceAccount }}
22-
{{- end }}
23-
{{- end }}
18+
{{- range $tenant := .Values.tenants }}
19+
{{- range $sa := $tenant.serviceAccounts }}
20+
{{- $serviceAccount := printf "%s/%s" $tenant.namespace.name $sa.name }}
21+
{{- $datastoreAuthorizedServiceAccounts = append $datastoreAuthorizedServiceAccounts $serviceAccount }}
22+
{{- end }}
23+
# adding also default `burrito-runner` serviceaccount created in each tenant
24+
{{- $datastoreAuthorizedServiceAccounts = append $datastoreAuthorizedServiceAccounts (printf "%s/burrito-runner" $tenant.namespace.name) }}
25+
{{- end }}
2426
{{- $controller := printf "%s/%s" .Release.Namespace "burrito-controllers" }}
2527
# check if the service account is already in the list, to prevent adding it multiple times if the config rerenders
2628
{{- if not (has $controller $config.datastore.serviceAccounts) }}
@@ -30,7 +32,7 @@ Datastore Authorized Service Accounts
3032
{{- if not (has $server $config.datastore.serviceAccounts) }}
3133
{{- $datastoreAuthorizedServiceAccounts = append $datastoreAuthorizedServiceAccounts $server }}
3234
{{- end }}
33-
{{- $_ := set $config.datastore "serviceAccounts" (concat $datastoreAuthorizedServiceAccounts $config.datastore.serviceAccounts) }}
35+
{{- $_ := set $config.datastore "serviceAccounts" ((concat $datastoreAuthorizedServiceAccounts $config.datastore.serviceAccounts) | uniq) }}
3436

3537
{{/*
3638
TLS certificates

deploy/charts/burrito/templates/tenant.yaml

Lines changed: 37 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -40,39 +40,30 @@ metadata:
4040
name: burrito-runner
4141
namespace: {{ $tenant.namespace.name }}
4242
---
43-
{{- range $serviceAccount := .serviceAccounts }}
44-
apiVersion: v1
45-
kind: ServiceAccount
46-
metadata:
47-
name: {{ $serviceAccount.name }}
48-
labels:
49-
{{- toYaml $serviceAccount.labels | nindent 4 }}
50-
annotations:
51-
{{- toYaml $serviceAccount.annotations | nindent 4 }}
52-
namespace: {{ $tenant.namespace.name }}
53-
---
43+
# Role binding for the default service account
5444
apiVersion: rbac.authorization.k8s.io/v1
5545
kind: RoleBinding
5646
metadata:
57-
name: {{ $serviceAccount.name }}-burrito-runner
58-
labels:
59-
{{- toYaml $serviceAccount.labels | nindent 4 }}
47+
name: burrito-runner
6048
namespace: {{ $tenant.namespace.name }}
6149
roleRef:
6250
apiGroup: rbac.authorization.k8s.io
6351
kind: ClusterRole
6452
name: burrito-runner
6553
subjects:
6654
- kind: ServiceAccount
67-
name: {{ $serviceAccount.name }}
55+
name: burrito-runner
6856
namespace: {{ $tenant.namespace.name }}
6957
---
58+
# Role and RoleBinding for burrito-server to access this tenant's secrets (webhook secret)
7059
apiVersion: rbac.authorization.k8s.io/v1
7160
kind: Role
7261
metadata:
7362
name: secret-access
7463
labels:
75-
app: burrito
64+
{{- toYaml $metadataControllers.labels | nindent 4 }}
65+
annotations:
66+
{{- toYaml $metadataControllers.annotations | nindent 4 }}
7667
namespace: {{ $tenant.namespace.name }}
7768
rules:
7869
- apiGroups: [""]
@@ -84,7 +75,9 @@ kind: RoleBinding
8475
metadata:
8576
name: burrito-server-secret-access
8677
labels:
87-
app: burrito
78+
{{- toYaml $metadataControllers.labels | nindent 4 }}
79+
annotations:
80+
{{- toYaml $metadataControllers.annotations | nindent 4 }}
8881
namespace: {{ $tenant.namespace.name }}
8982
roleRef:
9083
apiGroup: rbac.authorization.k8s.io
@@ -95,6 +88,33 @@ subjects:
9588
name: burrito-server
9689
namespace: {{ $.Release.Namespace }}
9790
---
91+
{{- range $serviceAccount := .serviceAccounts }}
92+
apiVersion: v1
93+
kind: ServiceAccount
94+
metadata:
95+
name: {{ $serviceAccount.name }}
96+
labels:
97+
{{- toYaml $serviceAccount.labels | nindent 4 }}
98+
annotations:
99+
{{- toYaml $serviceAccount.annotations | nindent 4 }}
100+
namespace: {{ $tenant.namespace.name }}
101+
---
102+
apiVersion: rbac.authorization.k8s.io/v1
103+
kind: RoleBinding
104+
metadata:
105+
name: {{ $serviceAccount.name }}-burrito-runner
106+
labels:
107+
{{- toYaml $serviceAccount.labels | nindent 4 }}
108+
namespace: {{ $tenant.namespace.name }}
109+
roleRef:
110+
apiGroup: rbac.authorization.k8s.io
111+
kind: ClusterRole
112+
name: burrito-runner
113+
subjects:
114+
- kind: ServiceAccount
115+
name: {{ $serviceAccount.name }}
116+
namespace: {{ $tenant.namespace.name }}
117+
---
98118
{{- range $additionalRoleBinding := $serviceAccount.additionalRoleBindings }}
99119
apiVersion: rbac.authorization.k8s.io/v1
100120
kind: RoleBinding

deploy/charts/burrito/values-dev.yaml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,3 @@ tenants:
1818
- namespace:
1919
create: true
2020
name: "burrito-project"
21-
serviceAccounts:
22-
- name: burrito-runner

deploy/charts/burrito/values.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -421,7 +421,7 @@ datastore:
421421
kind: Issuer
422422

423423
# -- List of tenants to create to manage Terraform resources
424-
tenants:
424+
tenants: []
425425
# - namespace:
426426
# create: true
427427
# name: "burrito-project-1"

0 commit comments

Comments
 (0)