Skip to content

Commit 3f012c2

Browse files
committed
Add support running with OwnerReferencesPermissionEnforcement
when OwnerReferencesPermissionEnforcement validating webhook is enabled additional permissions are required to set/update owner ref field. NFD worker sets/updates NodeFeature owner ref field to the worker pod and owning daemonset. owner reference can only be updated if the worker has delete permissions for NodeFeatures. if owner reference has blockOwnerDeletion (as the case for the daemonset owner reference) then it requires update permissions to the finalizers of the owner, to avoid this, we set blockOwnerDeleteion to false for all owners referenced from NFD worker pod when setting/updating NodeFeature owner ref. Signed-off-by: adrianc <[email protected]>
1 parent b81c078 commit 3f012c2

File tree

4 files changed

+8
-2
lines changed

4 files changed

+8
-2
lines changed

deployment/base/rbac/worker-role.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ rules:
1111
- create
1212
- get
1313
- update
14+
- delete
1415
- apiGroups:
1516
- ""
1617
resources:

deployment/helm/node-feature-discovery/templates/role.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ rules:
1515
- create
1616
- get
1717
- update
18+
- delete
1819
- apiGroups:
1920
- ""
2021
resources:

pkg/nfd-worker/nfd-worker.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import (
3737
"k8s.io/apimachinery/pkg/util/validation"
3838
k8sclient "k8s.io/client-go/kubernetes"
3939
"k8s.io/klog/v2"
40+
"k8s.io/utils/ptr"
4041
klogutils "sigs.k8s.io/node-feature-discovery/pkg/utils/klog"
4142
"sigs.k8s.io/yaml"
4243

@@ -280,7 +281,10 @@ func (w *nfdWorker) setOwnerReference() error {
280281
klog.ErrorS(err, "failed to get self pod, cannot inherit ownerReference for NodeFeature")
281282
return err
282283
} else {
283-
ownerReference = append(ownerReference, selfPod.OwnerReferences...)
284+
for _, owner := range selfPod.OwnerReferences {
285+
owner.BlockOwnerDeletion = ptr.To(false)
286+
ownerReference = append(ownerReference, owner)
287+
}
284288
}
285289

286290
podUID := os.Getenv("POD_UID")

test/e2e/utils/rbac.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ func createRoleWorker(ctx context.Context, cs clientset.Interface, ns string) (*
227227
{
228228
APIGroups: []string{"nfd.k8s-sigs.io"},
229229
Resources: []string{"nodefeatures"},
230-
Verbs: []string{"create", "get", "update"},
230+
Verbs: []string{"create", "get", "update", "delete"},
231231
},
232232
{
233233
APIGroups: []string{""},

0 commit comments

Comments
 (0)