diff --git a/node-feature-discovery-system/kustomization.yaml b/node-feature-discovery-system/kustomization.yaml
new file mode 100644
index 0000000..6ccfd2b
--- /dev/null
+++ b/node-feature-discovery-system/kustomization.yaml
@@ -0,0 +1,13 @@
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+
+namespace: node-feature-discovery-system
+
+resources:
+  - "https://github.com/kubernetes-sigs/node-feature-discovery/deployment/overlays/default?ref=v0.17.2"
+
+configMapGenerator:
+  - name: nfd-worker-conf
+    behavior: merge
+    files:
+      - nfd-worker.conf
diff --git a/node-feature-discovery-system/nfd-worker.conf b/node-feature-discovery-system/nfd-worker.conf
new file mode 100644
index 0000000..1c7a7fd
--- /dev/null
+++ b/node-feature-discovery-system/nfd-worker.conf
@@ -0,0 +1,240 @@
+core:
+  #  labelWhiteList:
+  #  noPublish: false
+  #  noOwnerRefs: false
+  sleepInterval: 600s
+#  featureSources: [all]
+#  labelSources: [all]
+#  klog:
+#    addDirHeader: false
+#    alsologtostderr: false
+#    logBacktraceAt:
+#    logtostderr: true
+#    skipHeaders: false
+#    stderrthreshold: 2
+#    v: 0
+#    vmodule:
+##   NOTE: the following options are not dynamically run-time configurable
+##         and require a nfd-worker restart to take effect after being changed
+#    logDir:
+#    logFile:
+#    logFileMaxSize: 1800
+#    skipLogHeaders: false
+#sources:
+#  cpu:
+#    cpuid:
+##     NOTE: whitelist has priority over blacklist
+#      attributeBlacklist:
+#        - "AVX10"
+#        - "BMI1"
+#        - "BMI2"
+#        - "CLMUL"
+#        - "CMOV"
+#        - "CX16"
+#        - "ERMS"
+#        - "F16C"
+#        - "HTT"
+#        - "LZCNT"
+#        - "MMX"
+#        - "MMXEXT"
+#        - "NX"
+#        - "POPCNT"
+#        - "RDRAND"
+#        - "RDSEED"
+#        - "RDTSCP"
+#        - "SGX"
+#        - "SSE"
+#        - "SSE2"
+#        - "SSE3"
+#        - "SSE4"
+#        - "SSE42"
+#        - "SSSE3"
+#        - "TDX_GUEST"
+#      attributeWhitelist:
+#  kernel:
+#    kconfigFile: "/path/to/kconfig"
+#    configOpts:
+#      - "NO_HZ"
+#      - "X86"
+#      - "DMI"
+#  pci:
+#    deviceClassWhitelist:
+#      - "0200"
+#      - "03"
+#      - "12"
+#    deviceLabelFields:
+#      - "class"
+#      - "vendor"
+#      - "device"
+#      - "subsystem_vendor"
+#      - "subsystem_device"
+#  usb:
+#    deviceClassWhitelist:
+#      - "0e"
+#      - "ef"
+#      - "fe"
+#      - "ff"
+#    deviceLabelFields:
+#      - "class"
+#      - "vendor"
+#      - "device"
+#  custom:
+#    # The following feature demonstrates the capabilities of the matchFeatures
+#    - name: "my custom rule"
+#      labels:
+#        "vendor.io/my-ng-feature": "true"
+#      # matchFeatures implements a logical AND over all matcher terms in the
+#      # list (i.e. all of the terms, or per-feature matchers, must match)
+#      matchFeatures:
+#        - feature: cpu.cpuid
+#          matchExpressions:
+#            AVX512F: {op: Exists}
+#        - feature: cpu.cstate
+#          matchExpressions:
+#            enabled: {op: IsTrue}
+#        - feature: cpu.pstate
+#          matchExpressions:
+#            no_turbo: {op: IsFalse}
+#            scaling_governor: {op: In, value: ["performance"]}
+#        - feature: cpu.rdt
+#          matchExpressions:
+#            RDTL3CA: {op: Exists}
+#        - feature: cpu.sst
+#          matchExpressions:
+#            bf.enabled: {op: IsTrue}
+#        - feature: cpu.topology
+#          matchExpressions:
+#            hardware_multithreading: {op: IsFalse}
+#
+#        - feature: kernel.config
+#          matchExpressions:
+#            X86: {op: Exists}
+#            LSM: {op: InRegexp, value: ["apparmor"]}
+#        - feature: kernel.loadedmodule
+#          matchExpressions:
+#            e1000e: {op: Exists}
+#        - feature: kernel.selinux
+#          matchExpressions:
+#            enabled: {op: IsFalse}
+#        - feature: kernel.version
+#          matchExpressions:
+#            major: {op: In, value: ["5"]}
+#            minor: {op: Gt, value: ["10"]}
+#
+#        - feature: storage.block
+#          matchExpressions:
+#            rotational: {op: In, value: ["0"]}
+#            dax: {op: In, value: ["0"]}
+#
+#        - feature: network.device
+#          matchExpressions:
+#            operstate: {op: In, value: ["up"]}
+#            speed: {op: Gt, value: ["100"]}
+#
+#        - feature: memory.numa
+#          matchExpressions:
+#            node_count: {op: Gt, value: ["2"]}
+#        - feature: memory.nv
+#          matchExpressions:
+#            devtype: {op: In, value: ["nd_dax"]}
+#            mode: {op: In, value: ["memory"]}
+#
+#        - feature: system.osrelease
+#          matchExpressions:
+#            ID: {op: In, value: ["fedora", "centos"]}
+#        - feature: system.name
+#          matchExpressions:
+#            nodename: {op: InRegexp, value: ["^worker-X"]}
+#
+#        - feature: local.label
+#          matchExpressions:
+#            custom-feature-knob: {op: Gt, value: ["100"]}
+#
+#    # The following feature demonstrates the capabilities of the matchAny
+#    - name: "my matchAny rule"
+#      labels:
+#        "vendor.io/my-ng-feature-2": "my-value"
+#      # matchAny implements a logical IF over all elements (sub-matchers) in
+#      # the list (i.e. at least one feature matcher must match)
+#      matchAny:
+#        - matchFeatures:
+#            - feature: kernel.loadedmodule
+#              matchExpressions:
+#                driver-module-X: {op: Exists}
+#            - feature: pci.device
+#              matchExpressions:
+#                vendor: {op: In, value: ["8086"]}
+#                class: {op: In, value: ["0200"]}
+#        - matchFeatures:
+#            - feature: kernel.loadedmodule
+#              matchExpressions:
+#                driver-module-Y: {op: Exists}
+#            - feature: usb.device
+#              matchExpressions:
+#                vendor: {op: In, value: ["8086"]}
+#                class: {op: In, value: ["02"]}
+#
+#    - name: "avx wildcard rule"
+#      labels:
+#        "my-avx-feature": "true"
+#      matchFeatures:
+#        - feature: cpu.cpuid
+#          matchName: {op: InRegexp, value: ["^AVX512"]}
+#
+#    # The following features demonstreate label templating capabilities
+#    - name: "my template rule"
+#      labelsTemplate: |
+#        {{ range .system.osrelease }}vendor.io/my-system-feature.{{ .Name }}={{ .Value }}
+#        {{ end }}
+#      matchFeatures:
+#        - feature: system.osrelease
+#          matchExpressions:
+#            ID: {op: InRegexp, value: ["^open.*"]}
+#            VERSION_ID.major: {op: In, value: ["13", "15"]}
+#
+#    - name: "my template rule 2"
+#      labelsTemplate: |
+#        {{ range .pci.device }}vendor.io/my-pci-device.{{ .class }}-{{ .device }}=with-cpuid
+#        {{ end }}
+#      matchFeatures:
+#        - feature: pci.device
+#          matchExpressions:
+#            class: {op: InRegexp, value: ["^06"]}
+#            vendor: ["8086"]
+#        - feature: cpu.cpuid
+#          matchExpressions:
+#            AVX: {op: Exists}
+#
+#    # The following examples demonstrate vars field and back-referencing
+#    # previous labels and vars
+#    - name: "my dummy kernel rule"
+#      labels:
+#        "vendor.io/my.kernel.feature": "true"
+#      matchFeatures:
+#        - feature: kernel.version
+#          matchExpressions:
+#            major: {op: Gt, value: ["2"]}
+#
+#    - name: "my dummy rule with no labels"
+#      vars:
+#        "my.dummy.var": "1"
+#      matchFeatures:
+#        - feature: cpu.cpuid
+#          matchExpressions: {}
+#
+#    - name: "my rule using backrefs"
+#      labels:
+#        "vendor.io/my.backref.feature": "true"
+#      matchFeatures:
+#        - feature: rule.matched
+#          matchExpressions:
+#            vendor.io/my.kernel.feature: {op: IsTrue}
+#            my.dummy.var: {op: Gt, value: ["0"]}
+#
+#    - name: "kconfig template rule"
+#      labelsTemplate: |
+#        {{ range .kernel.config }}kconfig-{{ .Name }}={{ .Value }}
+#        {{ end }}
+#      matchFeatures:
+#        - feature: kernel.config
+#          matchName: {op: In, value: ["SWAP", "X86", "ARM"]}
diff --git a/node-feature-discovery/00-namespace.yaml b/node-feature-discovery/00-namespace.yaml
deleted file mode 100644
index 8e54de2..0000000
--- a/node-feature-discovery/00-namespace.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-apiVersion: v1
-kind: Namespace
-metadata:
-  name: node-feature-discovery