Commit graph

3497 commits

Author SHA1 Message Date
Patrick Ohly
3d36421bb7 DRA Device Taints: use V1 API, enabled by default 2026-07-06 20:20:56 +02:00
kubernetes-prow[bot]
bbdae911b8
Merge pull request #140080 from dom4ha/api-workload-ref
rename PodGroupTemplateRef to WorkloadRef
2026-07-01 16:26:27 +00:00
kubernetes-prow[bot]
f8c9f76821
Merge pull request #140006 from ahmedtd/pcr-fix
Pod Certificates: Node-restriction support for signer names
2026-07-01 16:26:19 +00:00
dom4ha
24ac5b2bd7 api: rename PodGroupTemplateRef to WorkloadRef 2026-07-01 12:18:43 +00:00
Taahir Ahmed
3a77181b21 Pod Certificates: Node-restriction support for signer names
Kubelet's ability to generate service account tokens is restricted by
the noderestriction admission plugin, which checks to make sure that the
relevant pod actually mounts a token volume with the requested audience.

This commit adds an analogous mechanism for Pod Certificates,
restricting the signer names that Kubelet can request.

The feature includes a similar authorizer-based override, where granting
the "request-podcertificate-signer" verb for a given signer name allows
bypassing the restriction.

Prepared with Claude Code.
2026-06-30 15:04:53 -07:00
Joe Betz
e89ecc6af0
generate 2026-06-30 18:02:28 -04:00
kubernetes-prow[bot]
d6bd294106
Merge pull request #139763 from pravk03/ndf-ga
Promote Node Declared Features to GA
2026-06-30 20:52:24 +00:00
Ania Borowiec
d2842d8f03
Add PreemptionPolicy field to PodGroup 2026-06-30 16:48:10 +00:00
Praveen Krishna
e81c394d30 Fix unit tests 2026-06-25 20:50:08 +00:00
Joe Betz
0850ee4a1e
Add DeprecatedServiceAccount to core.PodSpec to match core/v1 2026-06-18 22:40:58 -04:00
Joe Betz
4dde9c9311
Make ServiceAccountTokenProjection.ExpirationSeconds a *int64 to match v1 2026-06-18 20:50:59 -04:00
Maciej Skoczeń
54ca619d4b Merge GangScheduling and WorkloadAwarePreemption feature gates into GenericWorkload 2026-06-15 11:42:10 +00:00
Kubernetes Prow Robot
6664e2957f
Merge pull request #139326 from faganihajizada/cleanup/noderestriction-node-allocatable-claim-statuses
noderestriction: prevent kubelet updates to NodeAllocatableResourceClaimStatuses
2026-06-12 22:36:42 +05:30
Fagani Hajizada
5c67990933
Update plugin/pkg/admission/noderestriction/admission_test.go
Co-authored-by: Patrick Ohly <patrick.ohly@intel.com>
2026-06-02 13:16:01 +02:00
Fagani Hajizada
b676903b42 noderestriction: hand-roll NodeAllocatableResourceClaimStatuses equality
Signed-off-by: Fagani Hajizada <fhajizada@nvidia.com>
2026-05-27 17:38:13 +02:00
Fagani Hajizada
8e9dc98405
noderestriction: prevent kubelet updates to NodeAllocatableResourceClaimStatuses
The NodeRestriction admission plugin forbids the kubelet from mutating
pod.status.ResourceClaimStatuses and pod.status.ExtendedResourceClaimStatus
but not the sibling pod.status.NodeAllocatableResourceClaimStatuses field
added for DRANodeAllocatableResources.

The kubelet status manager already treats the field as not-kubelet-owned
and preserves it across status syncs (see "kubelet: do not destroy
nodeAllocatableResourceClaimStatuses"). Mirror that boundary in admission
so a kubelet cannot stomp on a value the scheduler is responsible for.

Use apiequality.Semantic.DeepEqual inline rather than introducing a third
hand-rolled helper next to resourceClaimStatusesEqual and
extendedResourceClaimStatusEqual: NodeAllocatableResourceClaimStatus.Resources
is a map[ResourceName]resource.Quantity, and Semantic.DeepEqual already
canonicalises resource.Quantity comparisons.

DRANodeAllocatableResources is alpha and default-off, so this is
future-proofing rather than a fix for an observed bug.

Signed-off-by: Fagani Hajizada <fhajizada@nvidia.com>
2026-05-27 15:29:23 +02:00
Kubernetes Prow Robot
48ba469549
Merge pull request #137204 from luxas/authorizer-decision-to-struct
Conditional Authz [1/n]: Add conditional capabilities to the authorizer interface
2026-05-27 02:32:00 +05:30
dom4ha
88948acc38 Remove v1alpha2 API definitions
Update client-go lister and informer imports to v1alpha3
2026-05-22 12:50:19 +00:00
dom4ha
8a52fb2ea9 Migrate references to v1alpha3 in tests, controllers, and remaining files 2026-05-22 12:50:19 +00:00
dom4ha
43ebd00b66 Migrate internal references from v1alpha2 to v1alpha3 in scheduler and admission plugins 2026-05-22 12:50:19 +00:00
Anish Ramasekar
7262edeb59
fix(admission): reword NodeRestriction audience authorization error
The previous error message said the audience was "not found in pod
spec volume", which led users to mount a spurious projected service
account token volume in the pod spec to satisfy the check. That is
not the intended remedy: kubelets should be authorized via RBAC to
request tokens for the configured audience.

Reword the error to a generic "is not authorized to request tokens
for audience %q" so users are not pushed toward modifying pod specs.
The valid authorization paths (pod spec volume, CSIDriver tokenRequests,
or the request-serviceaccounts-token-audience verb) are documented
in the kubelet credential provider task page.

Update the unit and integration test expectations to match.
2026-05-13 16:30:51 -07:00
Lucas Käldström
69a8b4dd7a Adapt the codebase to the Authorizer interface change 2026-05-13 18:34:51 +03:00
Jordan Liggitt
bed4a34ad8
Drop meaningless ,inline from json tags 2026-05-13 11:24:04 -04:00
Kubernetes Prow Robot
cc9fd614c4
Merge pull request #139008 from wojtek-t/revert_pod_group_admission
Revert "KEP-5832: Implement PodGroup admission (#137464)
2026-05-13 19:01:48 +05:30
Kubernetes Prow Robot
f01363b491
Merge pull request #138792 from dims/fix/graph-populator-extended-resource-claim
node: future proof graph populator fast-path to check ExtendedResourceClaimStatus
2026-05-13 12:40:28 +05:30
Wojciech Tyczyński
17460de7bd Revert "KEP-5832: Implement PodGroup admission (#137464) 2026-05-12 21:00:23 +02:00
Davanum Srinivas
a26aef9d0e
node: address yliaog test review comments
- Refine doc comment to note ExtendedResourceClaimStatus may change under
  rare condition after a pod is bound to a node.
- Seed the initial pod with ExtendedResourceClaimStatus{extended-claim-0}
  and RequestMappings so the test exercises the change scenario yliaog
  described rather than nil-to-set.
- Update the inline comment and assertion messages to reflect the swap
  from extended-claim-0 to extended-claim-1.
2026-05-12 08:20:12 -04:00
Joe Betz
f79a4d72f2
Generate model names 2026-05-11 12:27:55 -04:00
Kubernetes Prow Robot
d9fb718434
Merge pull request #138874 from michaelasp/svmPatch
Switch to regular merge patch for SVM
2026-05-08 09:21:16 +05:30
Michael Aspinwall
7847ab6b00 Switch to regular merge patch for SVM 2026-05-08 00:31:26 +00:00
Lucas Käldström
7e3c734947 Add the Unconditional prefix to Authorizer and WantsAuthorizer interfaces 2026-05-07 22:22:14 +03:00
Kubernetes Prow Robot
74f4ad5e38
Merge pull request #138698 from michaelasp/circuitBreaker
Ensure leases are not stale in node controller before marking unhealthy
2026-05-05 23:34:21 +05:30
Davanum Srinivas
2490cfa4f5
node: fix graph populator fast-path to check ExtendedResourceClaimStatus
Pods using DRAExtendedResource (e.g. nvidia.com/gpu) have no
Spec.ResourceClaims, so ResourceClaimStatuses stays nil. The updatePod
fast-path skipped AddPod when only ExtendedResourceClaimStatus changed,
leaving the synthesized claim→pod→node edge out of the authorization graph.

Add PodExtendedStatusEqual to the fast-path guard, matching what the
scheduler event handler already does in events.go.
2026-05-05 11:50:20 -04:00
Michael Aspinwall
9991d72c6b Add circuit breaker approach to ensure leases are not stale in node controller 2026-05-04 22:14:10 +00:00
Anish Ramasekar
b2e27e8986
Drop AuthorizeWithSelectors feature gate
Signed-off-by: Anish Ramasekar <anish.ramasekar@gmail.com>
2026-04-28 13:32:29 -07:00
Anish Ramasekar
b1c8bf1e32
Drop AuthorizeNodeWithSelectors feature gate
Signed-off-by: Anish Ramasekar <anish.ramasekar@gmail.com>
2026-04-28 10:10:52 -07:00
Mujib Ahasan
b9b0ff440d remove accidently commited file
Signed-off-by: Mujib Ahasan <ahasanmujib8@gmail.com>
2026-04-04 12:53:30 +05:30
Antonio Ojea
adbf3b5aa5
Add granular authorization for DRA ResourceClaim status updates
This commit introduces the DRAResourceClaimGranularStatusAuthorization
feature gate (Beta in 1.36) to enforce fine-grained authorization checks
on ResourceClaim status updates.

Previously, 'update' permission on 'resourceclaims/status' allowed modifying
the entire status. To enforce the principle of least privilege for DRA
drivers and the scheduler, this change introduces synthetic subresources and
verb prefixes:

- 'resourceclaims/binding': Required to update 'status.allocation' and
  'status.reservedFor'.
- 'resourceclaims/driver': Required to update 'status.devices'. Evaluated
  on a per-driver basis using 'associated-node:<verb>' (for node-local
  ServiceAccounts) or 'arbitrary-node:<verb>' (for cluster-wide controllers).
2026-03-26 13:22:09 +00:00
Antoni Zawodny
59c9f75133 Add Workload-Aware Preemption fields to Workload and PodGroup APIs
Co-authored-by: Omar Sayed <omarsayed@google.com>
2026-03-24 09:03:50 +01:00
Jon Huhn
d80f384b70 Workload API: PodGroup ResourceClaims (KEP-5729) 2026-03-22 14:52:45 -05:00
Kubernetes Prow Robot
15eaed180f
Merge pull request #137028 from nmn3m/feature/dra-resource-pool-status
KEP-5677: Add ResourcePoolStatusRequest API for DRA resource availability visibility
2026-03-21 08:16:13 +05:30
Heba
cf5ba01d13
KEP-5832: Implement PodGroup admission (#137464)
* Add admission for podGroup

Signed-off-by: helayoty <heelayot@microsoft.com>

* Create workload object before podgroup

Signed-off-by: helayoty <heelayot@microsoft.com>

---------

Signed-off-by: helayoty <heelayot@microsoft.com>
2026-03-19 21:32:34 +05:30
Nour
30fe79df21
Add ResourcePoolStatusRequest controller, registry, and RBAC
Implement the RPSR controller that watches ResourcePoolStatusRequest
objects and aggregates pool status from DRA drivers. Add the API server
registry (strategy, storage), handwritten validation, RBAC bootstrap
policy for the controller, kube-controller-manager wiring, table
printer columns, and storage factory registration.
2026-03-19 16:50:02 +02:00
Kubernetes Prow Robot
9d02f5f918
Merge pull request #137032 from helayoty/helayoty/5547-workload-job-integration
KEP-5547: Implement Workload APIs integration with Job controller
2026-03-19 17:10:31 +05:30
helayoty
981a333927
Add admission plugin for update parallelism
Signed-off-by: helayoty <heelayot@microsoft.com>
2026-03-18 22:32:57 +00:00
Roman Bednar
6c087b2724 add unused condition to persistent volume claims 2026-03-18 17:08:08 -04:00
helayoty
68e30095de
Implement Workload and PodGroup integration with Job controller
Signed-off-by: helayoty <heelayot@microsoft.com>
2026-03-18 20:32:37 +00:00
helayoty
fc88e37288
Add admission plugin for PodGroup to add finalizer to every new object
Signed-off-by: helayoty <heelayot@microsoft.com>
2026-03-18 15:28:14 +00:00
helayoty
0ef8d78d1d
Add new protection controller for PodGroup
Signed-off-by: helayoty <heelayot@microsoft.com>
2026-03-18 15:27:17 +00:00
Kubernetes Prow Robot
e1be691e7f
Merge pull request #136043 from natasha41575/os_feasibility
[InPlacePodVerticalScaling] create an admission plugin to perform the OS and node capacity checks
2026-03-18 03:23:39 +05:30