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