2 repository: cgr.dev/chainguard-private/node-feature-discovery-fips
3 # This should be set to 'IfNotPresent' for released version
4 pullPolicy: IfNotPresent
5 # tag, if defined will use the given image tag, else Chart.AppVersion will be used
8 tag: 0.18@sha256:ebd88e7cd5d862ae38c968c07133829700fe672d1af9b2452dab1e8e6ec01839
14 NodeFeatureGroupAPI: false
16postDeleteCleanup: true
22 dnsPolicy: ClusterFirstWithHostNet
23 config: ### <NFD-MASTER-CONF-START-DO-NOT-REMOVE>
25 # extraLabelNs: ["added.ns.io","added.kubernets.io"]
26 # denyLabelNs: ["denied.ns.io","denied.kubernetes.io"]
28 # informerPageSize: 200
29 # labelWhiteList: "foo"
34 # disableExtendedResources: true
35 # disableAnnotations: true
36 # allowOverwrite: false
37 # denyNodeFeatureLabels: true
38 # nodeFeatureNamespaceSelector:
40 # kubernetes.io/metadata.name: "node-feature-discovery"
42 # - key: "kubernetes.io/metadata.name"
45 # - "node-feature-discovery"
48 # alsologtostderr: false
55 ## NOTE: the following options are not dynamically run-time configurable
56 ## and require a nfd-master restart to take effect after being changed
59 # logFileMaxSize: 1800
60 # skipLogHeaders: false
63 # # this value has to be lower than leaseDuration and greater than retryPeriod*1.2
65 # # this value has to be greater than 0
67 # nfdApiParallelism: 10
68 ### <NFD-MASTER-CONF-END-DO-NOT-REMOVE>
75 nfdApiParallelism: null
76 deploymentAnnotations: {}
78 podSecurityContext: {}
82 allowPrivilegeEscalation: false
85 readOnlyRootFilesystem: true
89 # Specifies whether a service account should be created
91 # Annotations to add to the service account
93 # The name of the service account to use.
94 # If not set and create is true, a name is generated using the fullname template
96 # specify how many old ReplicaSets for the Deployment to retain.
105 # You may want to use the same value for `requests.memory` and `limits.memory`. The “requests” value affects scheduling to accommodate pods on nodes.
106 # If there is a large difference between “requests” and “limits” and nodes experience memory pressure, the kernel may invoke
107 # the OOM Killer, even if the memory does not exceed the “limits” threshold. This can cause unexpected pod evictions. Memory
108 # cannot be compressed and once allocated to a pod, it can only be reclaimed by killing the pod.
109 # Natan Yellin 22/09/2022 https://home.robusta.dev/blog/kubernetes-memory-limit
113 - key: "node-role.kubernetes.io/control-plane"
120 unhealthyPodEvictionPolicy: AlwaysAllow
124 preferredDuringSchedulingIgnoredDuringExecution:
128 - key: "node-role.kubernetes.io/control-plane"
135 # failureThreshold: 3
136 # initialDelaySeconds: 0
141 # initialDelaySeconds: 0
144 # successThreshold: 1
150 dnsPolicy: ClusterFirstWithHostNet
151 config: ### <NFD-WORKER-CONF-START-DO-NOT-REMOVE>
157 # featureSources: [all]
158 # labelSources: [all]
160 # addDirHeader: false
161 # alsologtostderr: false
168 ## NOTE: the following options are not dynamically run-time configurable
169 ## and require a nfd-worker restart to take effect after being changed
172 # logFileMaxSize: 1800
173 # skipLogHeaders: false
177 ## NOTE: whitelist has priority over blacklist
178 # attributeBlacklist:
204 # attributeWhitelist:
206 # kconfigFile: "/path/to/kconfig"
212 # deviceClassWhitelist:
220 # - "subsystem_vendor"
221 # - "subsystem_device"
223 # deviceClassWhitelist:
233 # # The following feature demonstrates the capabilities of the matchFeatures
234 # - name: "my custom rule"
236 # "vendor.io/my-ng-feature": "true"
237 # # matchFeatures implements a logical AND over all matcher terms in the
238 # # list (i.e. all of the terms, or per-feature matchers, must match)
240 # - feature: cpu.cpuid
242 # AVX512F: {op: Exists}
243 # - feature: cpu.cstate
245 # enabled: {op: IsTrue}
246 # - feature: cpu.pstate
248 # no_turbo: {op: IsFalse}
249 # scaling_governor: {op: In, value: ["performance"]}
252 # RDTL3CA: {op: Exists}
255 # bf.enabled: {op: IsTrue}
256 # - feature: cpu.topology
258 # hardware_multithreading: {op: IsFalse}
260 # - feature: kernel.config
263 # LSM: {op: InRegexp, value: ["apparmor"]}
264 # - feature: kernel.loadedmodule
266 # e1000e: {op: Exists}
267 # - feature: kernel.selinux
269 # enabled: {op: IsFalse}
270 # - feature: kernel.version
272 # major: {op: In, value: ["5"]}
273 # minor: {op: Gt, value: ["10"]}
275 # - feature: storage.block
277 # rotational: {op: In, value: ["0"]}
278 # dax: {op: In, value: ["0"]}
280 # - feature: network.device
282 # operstate: {op: In, value: ["up"]}
283 # speed: {op: Gt, value: ["100"]}
285 # - feature: memory.numa
287 # node_count: {op: Gt, value: ["2"]}
288 # - feature: memory.nv
290 # devtype: {op: In, value: ["nd_dax"]}
291 # mode: {op: In, value: ["memory"]}
293 # - feature: system.osrelease
295 # ID: {op: In, value: ["fedora", "centos"]}
296 # - feature: system.name
298 # nodename: {op: InRegexp, value: ["^worker-X"]}
300 # - feature: local.label
302 # custom-feature-knob: {op: Gt, value: ["100"]}
304 # # The following feature demonstrates the capabilities of the matchAny
305 # - name: "my matchAny rule"
307 # "vendor.io/my-ng-feature-2": "my-value"
308 # # matchAny implements a logical IF over all elements (sub-matchers) in
309 # # the list (i.e. at least one feature matcher must match)
312 # - feature: kernel.loadedmodule
314 # driver-module-X: {op: Exists}
315 # - feature: pci.device
317 # vendor: {op: In, value: ["8086"]}
318 # class: {op: In, value: ["0200"]}
320 # - feature: kernel.loadedmodule
322 # driver-module-Y: {op: Exists}
323 # - feature: usb.device
325 # vendor: {op: In, value: ["8086"]}
326 # class: {op: In, value: ["02"]}
328 # - name: "avx wildcard rule"
330 # "my-avx-feature": "true"
332 # - feature: cpu.cpuid
333 # matchName: {op: InRegexp, value: ["^AVX512"]}
335 # # The following features demonstreate label templating capabilities
336 # - name: "my template rule"
338 # {{ range .system.osrelease }}vendor.io/my-system-feature.{{ .Name }}={{ .Value }}
341 # - feature: system.osrelease
343 # ID: {op: InRegexp, value: ["^open.*"]}
344 # VERSION_ID.major: {op: In, value: ["13", "15"]}
346 # - name: "my template rule 2"
348 # {{ range .pci.device }}vendor.io/my-pci-device.{{ .class }}-{{ .device }}=with-cpuid
351 # - feature: pci.device
353 # class: {op: InRegexp, value: ["^06"]}
355 # - feature: cpu.cpuid
359 # # The following examples demonstrate vars field and back-referencing
360 # # previous labels and vars
361 # - name: "my dummy kernel rule"
363 # "vendor.io/my.kernel.feature": "true"
365 # - feature: kernel.version
367 # major: {op: Gt, value: ["2"]}
369 # - name: "my dummy rule with no labels"
371 # "my.dummy.var": "1"
373 # - feature: cpu.cpuid
374 # matchExpressions: {}
376 # - name: "my rule using backrefs"
378 # "vendor.io/my.backref.feature": "true"
380 # - feature: rule.matched
382 # vendor.io/my.kernel.feature: {op: IsTrue}
383 # my.dummy.var: {op: Gt, value: ["0"]}
385 # - name: "kconfig template rule"
387 # {{ range .kernel.config }}kconfig-{{ .Name }}={{ .Value }}
390 # - feature: kernel.config
391 # matchName: {op: In, value: ["SWAP", "X86", "ARM"]}
392 ### <NFD-WORKER-CONF-END-DO-NOT-REMOVE>
394 daemonsetAnnotations: {}
395 podSecurityContext: {}
399 allowPrivilegeEscalation: false
402 readOnlyRootFilesystem: true
406 initialDelaySeconds: 10
407 # failureThreshold: 3
411 initialDelaySeconds: 5
415 # successThreshold: 1
417 # Specifies whether a service account should be created.
418 # We create this by default to make it easier for downstream users to apply PodSecurityPolicies.
420 # Annotations to add to the service account
422 # The name of the service account to use.
423 # If not set and create is true, a name is generated using the fullname template
425 # specify how many old ControllerRevisions for the DaemonSet to retain.
426 revisionHistoryLimit:
429 # Allow users to mount the hostPath /usr/src, useful for RHCOS on s390x
430 # Does not work on systems without /usr/src AND a read-only /usr, such as Talos
442 priorityClassName: ""
444 # type: RollingUpdate
447 # maxUnavailable: "10%"
449 config: ### <NFD-TOPOLOGY-UPDATER-CONF-START-DO-NOT-REMOVE>
450 ## key = node name, value = list of resources to be excluded.
451 ## use * to exclude from all nodes.
452 ## an example for how the exclude list should looks like
455 # node2: [memory, example/deviceA]
457 ### <NFD-TOPOLOGY-UPDATER-CONF-END-DO-NOT-REMOVE>
463 dnsPolicy: ClusterFirstWithHostNet
468 # specify how many old ControllerRevisions for the DaemonSet to retain.
469 revisionHistoryLimit:
474 kubeletPodResourcesSockPath:
477 kubeletStateDir: /var/lib/kubelet
478 podSecurityContext: {}
480 allowPrivilegeEscalation: false
483 readOnlyRootFilesystem: true
486 initialDelaySeconds: 10
487 # failureThreshold: 3
491 initialDelaySeconds: 5
495 # successThreshold: 1
505 daemonsetAnnotations: {}
507 podSetFingerprint: true
514 dnsPolicy: ClusterFirstWithHostNet
522 podSecurityContext: {}
524 initialDelaySeconds: 10
525 # failureThreshold: 3
529 initialDelaySeconds: 5
530 # failureThreshold: 3
533 # successThreshold: 1
544 deploymentAnnotations: {}
549 unhealthyPodEvictionPolicy: AlwaysAllow
550 # specify how many old ReplicaSets for the Deployment to retain.
551 revisionHistoryLimit: