blob: d4919bca84c0d7e8f7472dad794982e6c9c05b46 [file] [log] [blame]
Mohammed Naser9ad0d462023-01-15 20:36:37 -05001image:
Mohammed Naser65cda132024-05-02 14:34:08 -04002 repository: registry.k8s.io/nfd/node-feature-discovery
Mohammed Naser9ad0d462023-01-15 20:36:37 -05003 # 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
6 # tag
7imagePullSecrets: []
8
9nameOverride: ""
10fullnameOverride: ""
Mohammed Naser65cda132024-05-02 14:34:08 -040011namespaceOverride: ""
Mohammed Naser9ad0d462023-01-15 20:36:37 -050012
Mohammed Naser65cda132024-05-02 14:34:08 -040013enableNodeFeatureApi: true
Mohammed Naser9ad0d462023-01-15 20:36:37 -050014
15master:
Mohammed Naser65cda132024-05-02 14:34:08 -040016 enable: true
17 config: ### <NFD-MASTER-CONF-START-DO-NOT-REMOVE>
18 # noPublish: false
19 # autoDefaultNs: true
20 # extraLabelNs: ["added.ns.io","added.kubernets.io"]
21 # denyLabelNs: ["denied.ns.io","denied.kubernetes.io"]
22 # resourceLabels: ["vendor-1.com/feature-1","vendor-2.io/feature-2"]
23 # enableTaints: false
24 # labelWhiteList: "foo"
25 # resyncPeriod: "2h"
26 # klog:
27 # addDirHeader: false
28 # alsologtostderr: false
29 # logBacktraceAt:
30 # logtostderr: true
31 # skipHeaders: false
32 # stderrthreshold: 2
33 # v: 0
34 # vmodule:
35 ## NOTE: the following options are not dynamically run-time configurable
36 ## and require a nfd-master restart to take effect after being changed
37 # logDir:
38 # logFile:
39 # logFileMaxSize: 1800
40 # skipLogHeaders: false
41 # leaderElection:
42 # leaseDuration: 15s
43 # # this value has to be lower than leaseDuration and greater than retryPeriod*1.2
44 # renewDeadline: 10s
45 # # this value has to be greater than 0
46 # retryPeriod: 2s
47 # nfdApiParallelism: 10
48 ### <NFD-MASTER-CONF-END-DO-NOT-REMOVE>
49 # The TCP port that nfd-master listens for incoming requests. Default: 8080
50 # Deprecated this parameter is related to the deprecated gRPC API and will
51 # be removed with it in a future release
52 port: 8080
53 metricsPort: 8081
Mohammed Naser9ad0d462023-01-15 20:36:37 -050054 instance:
Mohammed Naser65cda132024-05-02 14:34:08 -040055 featureApi:
56 resyncPeriod:
57 denyLabelNs: []
Mohammed Naser9ad0d462023-01-15 20:36:37 -050058 extraLabelNs: []
59 resourceLabels: []
Mohammed Naser65cda132024-05-02 14:34:08 -040060 enableTaints: false
61 crdController: null
Mohammed Naser9ad0d462023-01-15 20:36:37 -050062 featureRulesController: null
Mohammed Naser65cda132024-05-02 14:34:08 -040063 nfdApiParallelism: null
Mohammed Naser9ad0d462023-01-15 20:36:37 -050064 deploymentAnnotations: {}
65 replicaCount: 1
66
67 podSecurityContext: {}
68 # fsGroup: 2000
69
70 securityContext:
71 allowPrivilegeEscalation: false
72 capabilities:
73 drop: [ "ALL" ]
74 readOnlyRootFilesystem: true
75 runAsNonRoot: true
76 # runAsUser: 1000
77
78 serviceAccount:
79 # Specifies whether a service account should be created
80 create: true
81 # Annotations to add to the service account
82 annotations: {}
83 # The name of the service account to use.
84 # If not set and create is true, a name is generated using the fullname template
85 name:
86
87 rbac:
88 create: true
89
90 service:
91 type: ClusterIP
92 port: 8080
93
94 resources: {}
95 # We usually recommend not to specify default resources and to leave this as a conscious
96 # choice for the user. This also increases chances charts run on environments with little
97 # resources, such as Minikube. If you do want to specify resources, uncomment the following
98 # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
99 # limits:
100 # cpu: 100m
101 # memory: 128Mi
102 # requests:
103 # cpu: 100m
104 # memory: 128Mi
105
106 nodeSelector: {}
107
108 tolerations:
109 - key: "node-role.kubernetes.io/master"
110 operator: "Equal"
111 value: ""
112 effect: "NoSchedule"
113 - key: "node-role.kubernetes.io/control-plane"
114 operator: "Equal"
115 value: ""
116 effect: "NoSchedule"
117
118 annotations: {}
119
120 affinity:
121 nodeAffinity:
122 preferredDuringSchedulingIgnoredDuringExecution:
123 - weight: 1
124 preference:
125 matchExpressions:
126 - key: "node-role.kubernetes.io/master"
127 operator: In
128 values: [""]
129 - weight: 1
130 preference:
131 matchExpressions:
132 - key: "node-role.kubernetes.io/control-plane"
133 operator: In
134 values: [""]
135
136worker:
Mohammed Naser65cda132024-05-02 14:34:08 -0400137 enable: true
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500138 config: ### <NFD-WORKER-CONF-START-DO-NOT-REMOVE>
139 #core:
140 # labelWhiteList:
141 # noPublish: false
142 # sleepInterval: 60s
143 # featureSources: [all]
144 # labelSources: [all]
145 # klog:
146 # addDirHeader: false
147 # alsologtostderr: false
148 # logBacktraceAt:
149 # logtostderr: true
150 # skipHeaders: false
151 # stderrthreshold: 2
152 # v: 0
153 # vmodule:
154 ## NOTE: the following options are not dynamically run-time configurable
155 ## and require a nfd-worker restart to take effect after being changed
156 # logDir:
157 # logFile:
158 # logFileMaxSize: 1800
159 # skipLogHeaders: false
160 #sources:
161 # cpu:
162 # cpuid:
163 ## NOTE: whitelist has priority over blacklist
164 # attributeBlacklist:
165 # - "BMI1"
166 # - "BMI2"
167 # - "CLMUL"
168 # - "CMOV"
169 # - "CX16"
170 # - "ERMS"
171 # - "F16C"
172 # - "HTT"
173 # - "LZCNT"
174 # - "MMX"
175 # - "MMXEXT"
176 # - "NX"
177 # - "POPCNT"
178 # - "RDRAND"
179 # - "RDSEED"
180 # - "RDTSCP"
181 # - "SGX"
182 # - "SSE"
183 # - "SSE2"
184 # - "SSE3"
185 # - "SSE4"
186 # - "SSE42"
187 # - "SSSE3"
Mohammed Naser65cda132024-05-02 14:34:08 -0400188 # - "TDX_GUEST"
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500189 # attributeWhitelist:
190 # kernel:
191 # kconfigFile: "/path/to/kconfig"
192 # configOpts:
193 # - "NO_HZ"
194 # - "X86"
195 # - "DMI"
196 # pci:
197 # deviceClassWhitelist:
198 # - "0200"
199 # - "03"
200 # - "12"
201 # deviceLabelFields:
202 # - "class"
203 # - "vendor"
204 # - "device"
205 # - "subsystem_vendor"
206 # - "subsystem_device"
207 # usb:
208 # deviceClassWhitelist:
209 # - "0e"
210 # - "ef"
211 # - "fe"
212 # - "ff"
213 # deviceLabelFields:
214 # - "class"
215 # - "vendor"
216 # - "device"
Mohammed Naser65cda132024-05-02 14:34:08 -0400217 # local:
218 # hooksEnabled: false
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500219 # custom:
220 # # The following feature demonstrates the capabilities of the matchFeatures
221 # - name: "my custom rule"
222 # labels:
Mohammed Naser65cda132024-05-02 14:34:08 -0400223 # "vendor.io/my-ng-feature": "true"
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500224 # # matchFeatures implements a logical AND over all matcher terms in the
225 # # list (i.e. all of the terms, or per-feature matchers, must match)
226 # matchFeatures:
227 # - feature: cpu.cpuid
228 # matchExpressions:
229 # AVX512F: {op: Exists}
230 # - feature: cpu.cstate
231 # matchExpressions:
232 # enabled: {op: IsTrue}
233 # - feature: cpu.pstate
234 # matchExpressions:
235 # no_turbo: {op: IsFalse}
236 # scaling_governor: {op: In, value: ["performance"]}
237 # - feature: cpu.rdt
238 # matchExpressions:
239 # RDTL3CA: {op: Exists}
240 # - feature: cpu.sst
241 # matchExpressions:
242 # bf.enabled: {op: IsTrue}
243 # - feature: cpu.topology
244 # matchExpressions:
245 # hardware_multithreading: {op: IsFalse}
246 #
247 # - feature: kernel.config
248 # matchExpressions:
249 # X86: {op: Exists}
250 # LSM: {op: InRegexp, value: ["apparmor"]}
251 # - feature: kernel.loadedmodule
252 # matchExpressions:
253 # e1000e: {op: Exists}
254 # - feature: kernel.selinux
255 # matchExpressions:
256 # enabled: {op: IsFalse}
257 # - feature: kernel.version
258 # matchExpressions:
259 # major: {op: In, value: ["5"]}
260 # minor: {op: Gt, value: ["10"]}
261 #
262 # - feature: storage.block
263 # matchExpressions:
264 # rotational: {op: In, value: ["0"]}
265 # dax: {op: In, value: ["0"]}
266 #
267 # - feature: network.device
268 # matchExpressions:
269 # operstate: {op: In, value: ["up"]}
270 # speed: {op: Gt, value: ["100"]}
271 #
272 # - feature: memory.numa
273 # matchExpressions:
274 # node_count: {op: Gt, value: ["2"]}
275 # - feature: memory.nv
276 # matchExpressions:
277 # devtype: {op: In, value: ["nd_dax"]}
278 # mode: {op: In, value: ["memory"]}
279 #
280 # - feature: system.osrelease
281 # matchExpressions:
282 # ID: {op: In, value: ["fedora", "centos"]}
283 # - feature: system.name
284 # matchExpressions:
285 # nodename: {op: InRegexp, value: ["^worker-X"]}
286 #
287 # - feature: local.label
288 # matchExpressions:
289 # custom-feature-knob: {op: Gt, value: ["100"]}
290 #
291 # # The following feature demonstrates the capabilities of the matchAny
292 # - name: "my matchAny rule"
293 # labels:
Mohammed Naser65cda132024-05-02 14:34:08 -0400294 # "vendor.io/my-ng-feature-2": "my-value"
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500295 # # matchAny implements a logical IF over all elements (sub-matchers) in
296 # # the list (i.e. at least one feature matcher must match)
297 # matchAny:
298 # - matchFeatures:
299 # - feature: kernel.loadedmodule
300 # matchExpressions:
301 # driver-module-X: {op: Exists}
302 # - feature: pci.device
303 # matchExpressions:
304 # vendor: {op: In, value: ["8086"]}
305 # class: {op: In, value: ["0200"]}
306 # - matchFeatures:
307 # - feature: kernel.loadedmodule
308 # matchExpressions:
309 # driver-module-Y: {op: Exists}
310 # - feature: usb.device
311 # matchExpressions:
312 # vendor: {op: In, value: ["8086"]}
313 # class: {op: In, value: ["02"]}
314 #
Mohammed Naser65cda132024-05-02 14:34:08 -0400315 # - name: "avx wildcard rule"
316 # labels:
317 # "my-avx-feature": "true"
318 # matchFeatures:
319 # - feature: cpu.cpuid
320 # matchName: {op: InRegexp, value: ["^AVX512"]}
321 #
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500322 # # The following features demonstreate label templating capabilities
323 # - name: "my template rule"
324 # labelsTemplate: |
Mohammed Naser65cda132024-05-02 14:34:08 -0400325 # {{ range .system.osrelease }}vendor.io/my-system-feature.{{ .Name }}={{ .Value }}
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500326 # {{ end }}
327 # matchFeatures:
328 # - feature: system.osrelease
329 # matchExpressions:
330 # ID: {op: InRegexp, value: ["^open.*"]}
331 # VERSION_ID.major: {op: In, value: ["13", "15"]}
332 #
333 # - name: "my template rule 2"
334 # labelsTemplate: |
Mohammed Naser65cda132024-05-02 14:34:08 -0400335 # {{ range .pci.device }}vendor.io/my-pci-device.{{ .class }}-{{ .device }}=with-cpuid
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500336 # {{ end }}
337 # matchFeatures:
338 # - feature: pci.device
339 # matchExpressions:
340 # class: {op: InRegexp, value: ["^06"]}
341 # vendor: ["8086"]
342 # - feature: cpu.cpuid
343 # matchExpressions:
344 # AVX: {op: Exists}
345 #
346 # # The following examples demonstrate vars field and back-referencing
347 # # previous labels and vars
348 # - name: "my dummy kernel rule"
349 # labels:
Mohammed Naser65cda132024-05-02 14:34:08 -0400350 # "vendor.io/my.kernel.feature": "true"
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500351 # matchFeatures:
352 # - feature: kernel.version
353 # matchExpressions:
354 # major: {op: Gt, value: ["2"]}
355 #
356 # - name: "my dummy rule with no labels"
357 # vars:
358 # "my.dummy.var": "1"
359 # matchFeatures:
360 # - feature: cpu.cpuid
361 # matchExpressions: {}
362 #
363 # - name: "my rule using backrefs"
364 # labels:
Mohammed Naser65cda132024-05-02 14:34:08 -0400365 # "vendor.io/my.backref.feature": "true"
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500366 # matchFeatures:
367 # - feature: rule.matched
368 # matchExpressions:
Mohammed Naser65cda132024-05-02 14:34:08 -0400369 # vendor.io/my.kernel.feature: {op: IsTrue}
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500370 # my.dummy.var: {op: Gt, value: ["0"]}
371 #
Mohammed Naser65cda132024-05-02 14:34:08 -0400372 # - name: "kconfig template rule"
373 # labelsTemplate: |
374 # {{ range .kernel.config }}kconfig-{{ .Name }}={{ .Value }}
375 # {{ end }}
376 # matchFeatures:
377 # - feature: kernel.config
378 # matchName: {op: In, value: ["SWAP", "X86", "ARM"]}
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500379### <NFD-WORKER-CONF-END-DO-NOT-REMOVE>
380
Mohammed Naser65cda132024-05-02 14:34:08 -0400381 metricsPort: 8081
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500382 daemonsetAnnotations: {}
383 podSecurityContext: {}
384 # fsGroup: 2000
385
386 securityContext:
387 allowPrivilegeEscalation: false
388 capabilities:
389 drop: [ "ALL" ]
390 readOnlyRootFilesystem: true
391 runAsNonRoot: true
392 # runAsUser: 1000
393
394 serviceAccount:
395 # Specifies whether a service account should be created.
396 # We create this by default to make it easier for downstream users to apply PodSecurityPolicies.
397 create: true
398 # Annotations to add to the service account
399 annotations: {}
400 # The name of the service account to use.
401 # If not set and create is true, a name is generated using the fullname template
402 name:
403
Mohammed Naser65cda132024-05-02 14:34:08 -0400404 rbac:
405 create: true
406
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500407 # Allow users to mount the hostPath /usr/src, useful for RHCOS on s390x
408 # Does not work on systems without /usr/src AND a read-only /usr, such as Talos
409 mountUsrSrc: false
410
411 resources: {}
412 # We usually recommend not to specify default resources and to leave this as a conscious
413 # choice for the user. This also increases chances charts run on environments with little
414 # resources, such as Minikube. If you do want to specify resources, uncomment the following
415 # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
416 # limits:
417 # cpu: 100m
418 # memory: 128Mi
419 # requests:
420 # cpu: 100m
421 # memory: 128Mi
422
423 nodeSelector: {}
424
425 tolerations: []
426
427 annotations: {}
428
429 affinity: {}
430
Mohammed Naser65cda132024-05-02 14:34:08 -0400431 priorityClassName: ""
432
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500433topologyUpdater:
Mohammed Naser65cda132024-05-02 14:34:08 -0400434 config: ### <NFD-TOPOLOGY-UPDATER-CONF-START-DO-NOT-REMOVE>
435 ## key = node name, value = list of resources to be excluded.
436 ## use * to exclude from all nodes.
437 ## an example for how the exclude list should looks like
438 #excludeList:
439 # node1: [cpu]
440 # node2: [memory, example/deviceA]
441 # *: [hugepages-2Mi]
442### <NFD-TOPOLOGY-UPDATER-CONF-END-DO-NOT-REMOVE>
443
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500444 enable: false
445 createCRDs: false
446
447 serviceAccount:
Mohammed Naser65cda132024-05-02 14:34:08 -0400448 create: true
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500449 annotations: {}
450 name:
451 rbac:
Mohammed Naser65cda132024-05-02 14:34:08 -0400452 create: true
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500453
Mohammed Naser65cda132024-05-02 14:34:08 -0400454 metricsPort: 8081
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500455 kubeletConfigPath:
456 kubeletPodResourcesSockPath:
457 updateInterval: 60s
458 watchNamespace: "*"
Mohammed Naser65cda132024-05-02 14:34:08 -0400459 kubeletStateDir: /var/lib/kubelet
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500460
461 podSecurityContext: {}
462 securityContext:
463 allowPrivilegeEscalation: false
464 capabilities:
465 drop: [ "ALL" ]
466 readOnlyRootFilesystem: true
467 runAsUser: 0
468
469 resources: {}
470 # We usually recommend not to specify default resources and to leave this as a conscious
471 # choice for the user. This also increases chances charts run on environments with little
472 # resources, such as Minikube. If you do want to specify resources, uncomment the following
473 # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
474 # limits:
475 # cpu: 100m
476 # memory: 128Mi
477 # requests:
478 # cpu: 100m
479 # memory: 128Mi
480
481 nodeSelector: {}
482 tolerations: []
483 annotations: {}
Mohammed Naser65cda132024-05-02 14:34:08 -0400484 daemonsetAnnotations: {}
485 affinity: {}
486 podSetFingerprint: true
487
488gc:
489 enable: true
490 replicaCount: 1
491
492 serviceAccount:
493 create: true
494 annotations: {}
495 name:
496 rbac:
497 create: true
498
499 interval: 1h
500
501 podSecurityContext: {}
502
503 resources: {}
504 # We usually recommend not to specify default resources and to leave this as a conscious
505 # choice for the user. This also increases chances charts run on environments with little
506 # resources, such as Minikube. If you do want to specify resources, uncomment the following
507 # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
508 # limits:
509 # cpu: 100m
510 # memory: 128Mi
511 # requests:
512 # cpu: 100m
513 # memory: 128Mi
514
515 metricsPort: 8081
516
517 nodeSelector: {}
518 tolerations: []
519 annotations: {}
520 deploymentAnnotations: {}
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500521 affinity: {}
522
523# Optionally use encryption for worker <--> master comms
524# TODO: verify hostname is not yet supported
525#
526# If you do not enable certManager (and have it installed) you will
527# need to manually, or otherwise, provision the TLS certs as secrets
528tls:
529 enable: false
530 certManager: false
Mohammed Naser65cda132024-05-02 14:34:08 -0400531
532prometheus:
533 enable: false
534 labels: {}