Skip to content

Commit 90396de

Browse files
committed
Support RBAC for ADDITIONAL_NAMESPACES and tighten up permissions
Signed-off-by: Kevin Klues <kklues@nvidia.com>
1 parent ef45dd6 commit 90396de

8 files changed

Lines changed: 111 additions & 94 deletions

File tree

deployments/helm/nvidia-dra-driver-gpu/templates/_helpers.tpl

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,3 +138,21 @@ Filter a list by a set of valid values
138138
{{- end }}
139139
{{- $result -}}
140140
{{- end -}}
141+
142+
{{/*
143+
Get all namespaces (driver namespace + additional namespaces from environment variable)
144+
*/}}
145+
{{- define "nvidia-dra-driver-gpu.namespaces" -}}
146+
{{- $namespaces := list (include "nvidia-dra-driver-gpu.namespace" .) }}
147+
{{- if .Values.controller.containers.computeDomain.env }}
148+
{{- range .Values.controller.containers.computeDomain.env }}
149+
{{- if eq .name "ADDITIONAL_NAMESPACES" }}
150+
{{- if .value }}
151+
{{- $additionalNamespaces := splitList "," .value }}
152+
{{- $namespaces = concat $namespaces $additionalNamespaces }}
153+
{{- end }}
154+
{{- end }}
155+
{{- end }}
156+
{{- end }}
157+
{{- join "," $namespaces -}}
158+
{{- end -}}

deployments/helm/nvidia-dra-driver-gpu/templates/clusterrole.yaml

Lines changed: 0 additions & 33 deletions
This file was deleted.

deployments/helm/nvidia-dra-driver-gpu/templates/clusterrolebinding.yaml

Lines changed: 0 additions & 14 deletions
This file was deleted.

deployments/helm/nvidia-dra-driver-gpu/templates/compute-domain-daemon-service-account.yaml renamed to deployments/helm/nvidia-dra-driver-gpu/templates/compute-domain-daemon-rbac.yaml

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,31 @@
1-
apiVersion: v1
2-
kind: ServiceAccount
3-
metadata:
4-
name: compute-domain-daemon-service-account
5-
namespace: {{ include "nvidia-dra-driver-gpu.namespace" . }}
61
---
72
apiVersion: rbac.authorization.k8s.io/v1
83
kind: ClusterRole
94
metadata:
105
name: compute-domain-daemon-role
11-
namespace: {{ include "nvidia-dra-driver-gpu.namespace" . }}
126
rules:
137
- apiGroups: ["resource.nvidia.com"]
148
resources: ["computedomains", "computedomains/status"]
159
verbs: ["get", "list", "watch", "update", "patch"]
10+
11+
{{- range $namespace := splitList "," (include "nvidia-dra-driver-gpu.namespaces" .) }}
12+
---
13+
apiVersion: v1
14+
kind: ServiceAccount
15+
metadata:
16+
name: compute-domain-daemon-service-account
17+
namespace: {{ $namespace }}
1618
---
1719
apiVersion: rbac.authorization.k8s.io/v1
1820
kind: ClusterRoleBinding
1921
metadata:
20-
name: compute-domain-daemon-role-binding
21-
namespace: {{ include "nvidia-dra-driver-gpu.namespace" . }}
22+
name: compute-domain-daemon-role-binding-{{ $namespace }}
2223
subjects:
2324
- kind: ServiceAccount
2425
name: compute-domain-daemon-service-account
25-
namespace: {{ include "nvidia-dra-driver-gpu.namespace" . }}
26+
namespace: {{ $namespace }}
2627
roleRef:
2728
kind: ClusterRole
2829
name: compute-domain-daemon-role
29-
apiGroup: rbac.authorization.k8s.io
30+
apiGroup: rbac.authorization.k8s.io
31+
{{- end }}
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
{{- if .Values.serviceAccount.create -}}
2+
---
3+
apiVersion: rbac.authorization.k8s.io/v1
4+
kind: ClusterRole
5+
metadata:
6+
name: {{ include "nvidia-dra-driver-gpu.name" . }}-clusterrole
7+
rules:
8+
- apiGroups: ["resource.nvidia.com"]
9+
resources: ["computedomains"]
10+
verbs: ["get", "list", "watch", "update"]
11+
- apiGroups: ["resource.nvidia.com"]
12+
resources: ["computedomains/status"]
13+
verbs: ["update"]
14+
- apiGroups: ["resource.k8s.io"]
15+
resources: ["resourceclaims"]
16+
verbs: ["get", "list", "watch"]
17+
- apiGroups: ["resource.k8s.io"]
18+
resources: ["resourceclaimtemplates"]
19+
verbs: ["get", "list", "watch", "create", "update", "delete"]
20+
- apiGroups: ["resource.k8s.io"]
21+
resources: ["resourceslices"]
22+
verbs: ["get", "list", "watch", "create", "update", "delete"]
23+
- apiGroups: ["resource.k8s.io"]
24+
resources: ["resourceclaims/status"]
25+
verbs: ["update"]
26+
- apiGroups: [""]
27+
resources: ["nodes"]
28+
verbs: ["get", "list", "watch", "update"]
29+
30+
{{- range $namespace := splitList "," (include "nvidia-dra-driver-gpu.namespaces" .) }}
31+
---
32+
apiVersion: v1
33+
kind: ServiceAccount
34+
metadata:
35+
name: {{ include "nvidia-dra-driver-gpu.serviceAccountName" $ }}
36+
namespace: {{ $namespace }}
37+
labels:
38+
{{- include "nvidia-dra-driver-gpu.labels" $ | nindent 4 }}
39+
{{- with $.Values.serviceAccount.annotations }}
40+
annotations:
41+
{{- toYaml . | nindent 4 }}
42+
{{- end }}
43+
---
44+
apiVersion: rbac.authorization.k8s.io/v1
45+
kind: Role
46+
metadata:
47+
name: {{ include "nvidia-dra-driver-gpu.name" $ }}-role
48+
namespace: {{ $namespace }}
49+
rules:
50+
- apiGroups: ["apps"]
51+
resources: ["daemonsets", "deployments"]
52+
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
53+
---
54+
apiVersion: rbac.authorization.k8s.io/v1
55+
kind: RoleBinding
56+
metadata:
57+
name: {{ include "nvidia-dra-driver-gpu.name" $ }}-role-binding
58+
namespace: {{ $namespace }}
59+
subjects:
60+
- kind: ServiceAccount
61+
name: {{ include "nvidia-dra-driver-gpu.serviceAccountName" $ }}
62+
namespace: {{ include "nvidia-dra-driver-gpu.namespace" $ }}
63+
roleRef:
64+
kind: Role
65+
name: {{ include "nvidia-dra-driver-gpu.name" $ }}-role
66+
apiGroup: rbac.authorization.k8s.io
67+
---
68+
apiVersion: rbac.authorization.k8s.io/v1
69+
kind: ClusterRoleBinding
70+
metadata:
71+
name: {{ include "nvidia-dra-driver-gpu.name" $ }}-clusterrole-binding-{{ $namespace }}
72+
subjects:
73+
- kind: ServiceAccount
74+
name: {{ include "nvidia-dra-driver-gpu.serviceAccountName" $ }}
75+
namespace: {{ $namespace }}
76+
roleRef:
77+
kind: ClusterRole
78+
name: {{ include "nvidia-dra-driver-gpu.name" $ }}-clusterrole
79+
apiGroup: rbac.authorization.k8s.io
80+
{{- end }}
81+
{{- end }}

deployments/helm/nvidia-dra-driver-gpu/templates/role.yaml

Lines changed: 0 additions & 10 deletions
This file was deleted.

deployments/helm/nvidia-dra-driver-gpu/templates/rolebinding.yaml

Lines changed: 0 additions & 14 deletions
This file was deleted.

deployments/helm/nvidia-dra-driver-gpu/templates/serviceaccount.yaml

Lines changed: 0 additions & 13 deletions
This file was deleted.

0 commit comments

Comments
 (0)