Skip to content

Commit ce16fbd

Browse files
authored
5018 dra admin access (#49929)
* update DRA adminAccess docs for 1.33 Signed-off-by: Rita Zhang <[email protected]> * address comments Signed-off-by: Rita Zhang <[email protected]> * address comments Signed-off-by: Rita Zhang <[email protected]> --------- Signed-off-by: Rita Zhang <[email protected]>
1 parent 930294a commit ce16fbd

File tree

3 files changed

+35
-78
lines changed

3 files changed

+35
-78
lines changed

content/en/docs/concepts/scheduling-eviction/dynamic-resource-allocation.md

Lines changed: 11 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -213,10 +213,10 @@ the `.spec.nodeName` field and to use a node selector instead.
213213

214214
{{< feature-state feature_gate_name="DRAAdminAccess" >}}
215215

216-
You can mark a request in a ResourceClaim or ResourceClaimTemplate as having privileged features.
217-
A request with admin access grants access to devices which are in use and
218-
may enable additional permissions when making the device available in a
219-
container:
216+
You can mark a request in a ResourceClaim or ResourceClaimTemplate as having
217+
privileged features for maintenance and troubleshooting tasks. A request with
218+
admin access grants access to in-use devices and may enable additional
219+
permissions when making the device available in a container:
220220

221221
```yaml
222222
apiVersion: resource.k8s.io/v1beta1
@@ -229,83 +229,19 @@ spec:
229229
requests:
230230
- name: req-0
231231
deviceClassName: resource.example.com
232+
allocationMode: All
232233
adminAccess: true
233234
```
234235

235236
If this feature is disabled, the `adminAccess` field will be removed
236237
automatically when creating such a ResourceClaim.
237238

238-
Admin access is a privileged mode which should not be made available to normal
239-
users in a multi-tenant cluster. Cluster administrators can restrict usage of
240-
this feature by installing a validating admission policy similar to the following
241-
example. Cluster administrators need to adapt at least the names and replace
242-
"dra.example.com".
243-
244-
```yaml
245-
# Permission to use admin access is granted only in namespaces which have the
246-
# "admin-access.dra.example.com" label. Other ways of making that decision are
247-
# also possible.
248-
249-
apiVersion: admissionregistration.k8s.io/v1
250-
kind: ValidatingAdmissionPolicy
251-
metadata:
252-
name: resourceclaim-policy.dra.example.com
253-
spec:
254-
failurePolicy: Fail
255-
matchConstraints:
256-
resourceRules:
257-
- apiGroups: ["resource.k8s.io"]
258-
apiVersions: ["v1alpha3", "v1beta1"]
259-
operations: ["CREATE", "UPDATE"]
260-
resources: ["resourceclaims"]
261-
validations:
262-
- expression: '! object.spec.devices.requests.exists(e, has(e.adminAccess) && e.adminAccess)'
263-
reason: Forbidden
264-
messageExpression: '"admin access to devices not enabled"'
265-
---
266-
apiVersion: admissionregistration.k8s.io/v1
267-
kind: ValidatingAdmissionPolicyBinding
268-
metadata:
269-
name: resourceclaim-binding.dra.example.com
270-
spec:
271-
policyName: resourceclaim-policy.dra.example.com
272-
validationActions: [Deny]
273-
matchResources:
274-
namespaceSelector:
275-
matchExpressions:
276-
- key: admin-access.dra.example.com
277-
operator: DoesNotExist
278-
---
279-
apiVersion: admissionregistration.k8s.io/v1
280-
kind: ValidatingAdmissionPolicy
281-
metadata:
282-
name: resourceclaimtemplate-policy.dra.example.com
283-
spec:
284-
failurePolicy: Fail
285-
matchConstraints:
286-
resourceRules:
287-
- apiGroups: ["resource.k8s.io"]
288-
apiVersions: ["v1alpha3", "v1beta1"]
289-
operations: ["CREATE", "UPDATE"]
290-
resources: ["resourceclaimtemplates"]
291-
validations:
292-
- expression: '! object.spec.spec.devices.requests.exists(e, has(e.adminAccess) && e.adminAccess)'
293-
reason: Forbidden
294-
messageExpression: '"admin access to devices not enabled"'
295-
---
296-
apiVersion: admissionregistration.k8s.io/v1
297-
kind: ValidatingAdmissionPolicyBinding
298-
metadata:
299-
name: resourceclaimtemplate-binding.dra.example.com
300-
spec:
301-
policyName: resourceclaimtemplate-policy.dra.example.com
302-
validationActions: [Deny]
303-
matchResources:
304-
namespaceSelector:
305-
matchExpressions:
306-
- key: admin-access.dra.example.com
307-
operator: DoesNotExist
308-
```
239+
Admin access is a privileged mode and should not be granted to regular users in
240+
multi-tenant clusters. Starting with Kubernetes v1.33, only users authorized to
241+
create ResourceClaim or ResourceClaimTemplate objects in namespaces labeled with
242+
`resource.k8s.io/admin-access: "true"` (case-sensitive) can use the
243+
`adminAccess` field. This ensures that non-admin users cannot misuse the
244+
feature.
309245

310246
## ResourceClaim Device Status
311247

content/en/docs/reference/command-line-tools-reference/feature-gates/DRAAdminAccess.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,12 @@ stages:
1111
fromVersion: "1.32"
1212
---
1313
Enables support for requesting [admin access](/docs/concepts/scheduling-eviction/dynamic-resource-allocation/#admin-access)
14-
in a ResourceClaim. A ResourceClaim
15-
with admin access grants access to devices which are in use and may enable
16-
additional access permissions when making the device available in a container.
14+
in a ResourceClaim or a ResourceClaimTemplate. Admin access grants access to
15+
in-use devices and may enable additional permissions when making the device
16+
available in a container. Starting with Kubernetes v1.33, only users authorized
17+
to create ResourceClaim or ResourceClaimTemplate objects in namespaces labeled
18+
with `resource.k8s.io/admin-access: "true"` (case-sensitive) can use the
19+
`adminAccess` field. This ensures that non-admin users cannot misuse the
20+
feature.
1721

1822
This feature gate has no effect unless you also enable the `DynamicResourceAllocation` feature gate.

content/en/docs/reference/labels-annotations-taints/_index.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2782,3 +2782,20 @@ Taint that kubeadm previously applied on control plane nodes to allow only criti
27822782
workloads to schedule on them. Replaced by the
27832783
[`node-role.kubernetes.io/control-plane`](#node-role-kubernetes-io-control-plane-taint)
27842784
taint. kubeadm no longer sets or uses this deprecated taint.
2785+
2786+
### resource.k8s.io/admin-access {resource-k8s-io-admin-access}
2787+
2788+
Type: Label
2789+
2790+
Example: `resource.k8s.io/admin-access: "true"`
2791+
2792+
Used on: Namespace
2793+
2794+
Used to grant administrative access to certain resource.k8s.io API types within
2795+
a namespace. When this label is set on a namespace with the value `"true"`
2796+
(case-sensitive), it allows the use of `adminAccess: true` in any namespaced
2797+
`resource.k8s.io` API types. Currently, this permission applies to
2798+
`ResourceClaim` and `ResourceClaimTemplate` objects.
2799+
2800+
See [Dynamic Resource Allocation Admin access](/docs/concepts/scheduling-eviction/dynamic-resource-allocation/#enabling-admin-access)
2801+
for more information.

0 commit comments

Comments
 (0)