...
1apiVersion: v1
2kind: Namespace
3metadata:
4 name: nfd
5 labels:
6 workload.edge.ncr.com: platform
7 platform.edge.ncr.com/component: node-feature-discovery
8 annotations:
9 pallet.edge.ncr.com/created: "2023-02-16T21:26:39Z"
10 pallet.edge.ncr.com/name: nfd
11 pallet.edge.ncr.com/revision: 696897a3df910b6e84a88c9336907a17b18159c1
12 pallet.edge.ncr.com/source: https://github.com/ncrvoyix-swt-retail/edge-infra/tree/696897a3df910b6e84a88c9336907a17b18159c1
13 pallet.edge.ncr.com/team: '@ncrvoyix-swt-retail/sds'
14 pallet.edge.ncr.com/version: 7.7.7-rc.1676582799+commit.696897a
15---
16apiVersion: apiextensions.k8s.io/v1
17kind: CustomResourceDefinition
18metadata:
19 name: nodefeaturerules.nfd.k8s-sigs.io
20 labels:
21 platform.edge.ncr.com/component: node-feature-discovery
22 annotations:
23 controller-gen.kubebuilder.io/version: v0.9.2
24 pallet.edge.ncr.com/created: "2023-02-16T21:26:39Z"
25 pallet.edge.ncr.com/name: nfd
26 pallet.edge.ncr.com/revision: 696897a3df910b6e84a88c9336907a17b18159c1
27 pallet.edge.ncr.com/source: https://github.com/ncrvoyix-swt-retail/edge-infra/tree/696897a3df910b6e84a88c9336907a17b18159c1
28 pallet.edge.ncr.com/team: '@ncrvoyix-swt-retail/sds'
29 pallet.edge.ncr.com/version: 7.7.7-rc.1676582799+commit.696897a
30spec:
31 group: nfd.k8s-sigs.io
32 names:
33 kind: NodeFeatureRule
34 listKind: NodeFeatureRuleList
35 plural: nodefeaturerules
36 shortNames:
37 - nfr
38 singular: nodefeaturerule
39 scope: Cluster
40 versions:
41 - name: v1alpha1
42 schema:
43 openAPIV3Schema:
44 type: object
45 description: NodeFeatureRule resource specifies a configuration for feature-based customization of node objects, such as node labeling.
46 properties:
47 apiVersion:
48 type: string
49 description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
50 kind:
51 type: string
52 description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
53 metadata:
54 type: object
55 spec:
56 type: object
57 description: NodeFeatureRuleSpec describes a NodeFeatureRule.
58 properties:
59 rules:
60 type: array
61 description: Rules is a list of node customization rules.
62 items:
63 type: object
64 description: Rule defines a rule for node customization such as labeling.
65 properties:
66 name:
67 type: string
68 description: Name of the rule.
69 labels:
70 type: object
71 additionalProperties:
72 type: string
73 description: Labels to create if the rule matches.
74 labelsTemplate:
75 type: string
76 description: LabelsTemplate specifies a template to expand for dynamically generating multiple labels. Data (after template expansion) must be keys with an optional value (<key>[=<value>]) separated by newlines.
77 matchAny:
78 type: array
79 description: MatchAny specifies a list of matchers one of which must match.
80 items:
81 type: object
82 description: MatchAnyElem specifies one sub-matcher of MatchAny.
83 properties:
84 matchFeatures:
85 type: array
86 description: MatchFeatures specifies a set of matcher terms all of which must match.
87 items:
88 type: object
89 description: FeatureMatcherTerm defines requirements against one feature set. All requirements (specified as MatchExpressions) are evaluated against each element in the feature set.
90 properties:
91 feature:
92 type: string
93 matchExpressions:
94 type: object
95 additionalProperties:
96 type: object
97 description: "MatchExpression specifies an expression to evaluate against a set of input values. It contains an operator that is applied when matching the input and an array of values that the operator evaluates the input against. \n NB: CreateMatchExpression or MustCreateMatchExpression() should be used for creating new instances. \n NB: Validate() must be called if Op or Value fields are modified or if a new instance is created from scratch without using the helper functions."
98 properties:
99 value:
100 type: array
101 description: Value is the list of values that the operand evaluates the input against. Value should be empty if the operator is Exists, DoesNotExist, IsTrue or IsFalse. Value should contain exactly one element if the operator is Gt or Lt and exactly two elements if the operator is GtLt. In other cases Value should contain at least one element.
102 items:
103 type: string
104 op:
105 type: string
106 description: Op is the operator to be applied.
107 enum:
108 - In
109 - NotIn
110 - InRegexp
111 - Exists
112 - DoesNotExist
113 - Gt
114 - Lt
115 - GtLt
116 - IsTrue
117 - IsFalse
118 required:
119 - op
120 description: MatchExpressionSet contains a set of MatchExpressions, each of which is evaluated against a set of input values.
121 required:
122 - feature
123 - matchExpressions
124 required:
125 - matchFeatures
126 matchFeatures:
127 type: array
128 description: MatchFeatures specifies a set of matcher terms all of which must match.
129 items:
130 type: object
131 description: FeatureMatcherTerm defines requirements against one feature set. All requirements (specified as MatchExpressions) are evaluated against each element in the feature set.
132 properties:
133 feature:
134 type: string
135 matchExpressions:
136 type: object
137 additionalProperties:
138 type: object
139 description: "MatchExpression specifies an expression to evaluate against a set of input values. It contains an operator that is applied when matching the input and an array of values that the operator evaluates the input against. \n NB: CreateMatchExpression or MustCreateMatchExpression() should be used for creating new instances. \n NB: Validate() must be called if Op or Value fields are modified or if a new instance is created from scratch without using the helper functions."
140 properties:
141 value:
142 type: array
143 description: Value is the list of values that the operand evaluates the input against. Value should be empty if the operator is Exists, DoesNotExist, IsTrue or IsFalse. Value should contain exactly one element if the operator is Gt or Lt and exactly two elements if the operator is GtLt. In other cases Value should contain at least one element.
144 items:
145 type: string
146 op:
147 type: string
148 description: Op is the operator to be applied.
149 enum:
150 - In
151 - NotIn
152 - InRegexp
153 - Exists
154 - DoesNotExist
155 - Gt
156 - Lt
157 - GtLt
158 - IsTrue
159 - IsFalse
160 required:
161 - op
162 description: MatchExpressionSet contains a set of MatchExpressions, each of which is evaluated against a set of input values.
163 required:
164 - feature
165 - matchExpressions
166 taints:
167 type: array
168 description: Taints to create if the rule matches.
169 items:
170 type: object
171 description: The node this Taint is attached to has the "effect" on any pod that does not tolerate the Taint.
172 properties:
173 value:
174 type: string
175 description: The taint value corresponding to the taint key.
176 effect:
177 type: string
178 description: Required. The effect of the taint on pods that do not tolerate the taint. Valid effects are NoSchedule, PreferNoSchedule and NoExecute.
179 key:
180 type: string
181 description: Required. The taint key to be applied to a node.
182 timeAdded:
183 type: string
184 description: TimeAdded represents the time at which the taint was added. It is only written for NoExecute taints.
185 format: date-time
186 required:
187 - effect
188 - key
189 vars:
190 type: object
191 additionalProperties:
192 type: string
193 description: Vars is the variables to store if the rule matches. Variables do not directly inflict any changes in the node object. However, they can be referenced from other rules enabling more complex rule hierarchies, without exposing intermediary output values as labels.
194 varsTemplate:
195 type: string
196 description: VarsTemplate specifies a template to expand for dynamically generating multiple variables. Data (after template expansion) must be keys with an optional value (<key>[=<value>]) separated by newlines.
197 required:
198 - name
199 required:
200 - rules
201 required:
202 - spec
203 served: true
204 storage: true
205---
206apiVersion: apiextensions.k8s.io/v1
207kind: CustomResourceDefinition
208metadata:
209 name: nodefeatures.nfd.k8s-sigs.io
210 labels:
211 platform.edge.ncr.com/component: node-feature-discovery
212 annotations:
213 controller-gen.kubebuilder.io/version: v0.9.2
214 pallet.edge.ncr.com/created: "2023-02-16T21:26:39Z"
215 pallet.edge.ncr.com/name: nfd
216 pallet.edge.ncr.com/revision: 696897a3df910b6e84a88c9336907a17b18159c1
217 pallet.edge.ncr.com/source: https://github.com/ncrvoyix-swt-retail/edge-infra/tree/696897a3df910b6e84a88c9336907a17b18159c1
218 pallet.edge.ncr.com/team: '@ncrvoyix-swt-retail/sds'
219 pallet.edge.ncr.com/version: 7.7.7-rc.1676582799+commit.696897a
220spec:
221 group: nfd.k8s-sigs.io
222 names:
223 kind: NodeFeature
224 listKind: NodeFeatureList
225 plural: nodefeatures
226 singular: nodefeature
227 scope: Namespaced
228 versions:
229 - name: v1alpha1
230 schema:
231 openAPIV3Schema:
232 type: object
233 description: NodeFeature resource holds the features discovered for one node in the cluster.
234 properties:
235 apiVersion:
236 type: string
237 description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
238 kind:
239 type: string
240 description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
241 metadata:
242 type: object
243 spec:
244 type: object
245 description: NodeFeatureSpec describes a NodeFeature object.
246 properties:
247 labels:
248 type: object
249 additionalProperties:
250 type: string
251 description: Labels is the set of node labels that are requested to be created.
252 features:
253 type: object
254 description: Features is the full "raw" features data that has been discovered.
255 properties:
256 attributes:
257 type: object
258 additionalProperties:
259 type: object
260 description: AttributeFeatureSet is a set of features having string value.
261 properties:
262 elements:
263 type: object
264 additionalProperties:
265 type: string
266 required:
267 - elements
268 flags:
269 type: object
270 additionalProperties:
271 type: object
272 description: FlagFeatureSet is a set of simple features only containing names without values.
273 properties:
274 elements:
275 type: object
276 additionalProperties:
277 type: object
278 description: Nil is a dummy empty struct for protobuf compatibility
279 required:
280 - elements
281 instances:
282 type: object
283 additionalProperties:
284 type: object
285 description: InstanceFeatureSet is a set of features each of which is an instance having multiple attributes.
286 properties:
287 elements:
288 type: array
289 items:
290 type: object
291 description: InstanceFeature represents one instance of a complex features, e.g. a device.
292 properties:
293 attributes:
294 type: object
295 additionalProperties:
296 type: string
297 required:
298 - attributes
299 required:
300 - elements
301 required:
302 - attributes
303 - flags
304 - instances
305 required:
306 - features
307 required:
308 - spec
309 served: true
310 storage: true
311---
312apiVersion: v1
313kind: ServiceAccount
314metadata:
315 name: nfd-master
316 namespace: nfd
317 labels:
318 platform.edge.ncr.com/component: node-feature-discovery
319 annotations:
320 pallet.edge.ncr.com/created: "2023-02-16T21:26:39Z"
321 pallet.edge.ncr.com/name: nfd
322 pallet.edge.ncr.com/revision: 696897a3df910b6e84a88c9336907a17b18159c1
323 pallet.edge.ncr.com/source: https://github.com/ncrvoyix-swt-retail/edge-infra/tree/696897a3df910b6e84a88c9336907a17b18159c1
324 pallet.edge.ncr.com/team: '@ncrvoyix-swt-retail/sds'
325 pallet.edge.ncr.com/version: 7.7.7-rc.1676582799+commit.696897a
326---
327apiVersion: v1
328kind: ServiceAccount
329metadata:
330 name: nfd-worker
331 namespace: nfd
332 labels:
333 platform.edge.ncr.com/component: node-feature-discovery
334 annotations:
335 pallet.edge.ncr.com/created: "2023-02-16T21:26:39Z"
336 pallet.edge.ncr.com/name: nfd
337 pallet.edge.ncr.com/revision: 696897a3df910b6e84a88c9336907a17b18159c1
338 pallet.edge.ncr.com/source: https://github.com/ncrvoyix-swt-retail/edge-infra/tree/696897a3df910b6e84a88c9336907a17b18159c1
339 pallet.edge.ncr.com/team: '@ncrvoyix-swt-retail/sds'
340 pallet.edge.ncr.com/version: 7.7.7-rc.1676582799+commit.696897a
341---
342apiVersion: rbac.authorization.k8s.io/v1
343kind: Role
344metadata:
345 name: nfd-worker
346 namespace: nfd
347 labels:
348 platform.edge.ncr.com/component: node-feature-discovery
349 annotations:
350 pallet.edge.ncr.com/created: "2023-02-16T21:26:39Z"
351 pallet.edge.ncr.com/name: nfd
352 pallet.edge.ncr.com/revision: 696897a3df910b6e84a88c9336907a17b18159c1
353 pallet.edge.ncr.com/source: https://github.com/ncrvoyix-swt-retail/edge-infra/tree/696897a3df910b6e84a88c9336907a17b18159c1
354 pallet.edge.ncr.com/team: '@ncrvoyix-swt-retail/sds'
355 pallet.edge.ncr.com/version: 7.7.7-rc.1676582799+commit.696897a
356rules:
357- resources:
358 - nodefeatures
359 apiGroups:
360 - nfd.k8s-sigs.io
361 verbs:
362 - create
363 - get
364 - update
365---
366apiVersion: rbac.authorization.k8s.io/v1
367kind: ClusterRole
368metadata:
369 name: nfd-master
370 labels:
371 platform.edge.ncr.com/component: node-feature-discovery
372 annotations:
373 pallet.edge.ncr.com/created: "2023-02-16T21:26:39Z"
374 pallet.edge.ncr.com/name: nfd
375 pallet.edge.ncr.com/revision: 696897a3df910b6e84a88c9336907a17b18159c1
376 pallet.edge.ncr.com/source: https://github.com/ncrvoyix-swt-retail/edge-infra/tree/696897a3df910b6e84a88c9336907a17b18159c1
377 pallet.edge.ncr.com/team: '@ncrvoyix-swt-retail/sds'
378 pallet.edge.ncr.com/version: 7.7.7-rc.1676582799+commit.696897a
379rules:
380- resources:
381 - nodes
382 apiGroups:
383 - ""
384 verbs:
385 - get
386 - patch
387 - update
388 - list
389- resources:
390 - nodefeatures
391 - nodefeaturerules
392 apiGroups:
393 - nfd.k8s-sigs.io
394 verbs:
395 - get
396 - list
397 - watch
398---
399apiVersion: rbac.authorization.k8s.io/v1
400kind: RoleBinding
401metadata:
402 name: nfd-worker
403 namespace: nfd
404 labels:
405 platform.edge.ncr.com/component: node-feature-discovery
406 annotations:
407 pallet.edge.ncr.com/created: "2023-02-16T21:26:39Z"
408 pallet.edge.ncr.com/name: nfd
409 pallet.edge.ncr.com/revision: 696897a3df910b6e84a88c9336907a17b18159c1
410 pallet.edge.ncr.com/source: https://github.com/ncrvoyix-swt-retail/edge-infra/tree/696897a3df910b6e84a88c9336907a17b18159c1
411 pallet.edge.ncr.com/team: '@ncrvoyix-swt-retail/sds'
412 pallet.edge.ncr.com/version: 7.7.7-rc.1676582799+commit.696897a
413roleRef:
414 name: nfd-worker
415 kind: Role
416 apiGroup: rbac.authorization.k8s.io
417subjects:
418- name: nfd-worker
419 namespace: nfd
420 kind: ServiceAccount
421---
422apiVersion: rbac.authorization.k8s.io/v1
423kind: ClusterRoleBinding
424metadata:
425 name: nfd-master
426 labels:
427 platform.edge.ncr.com/component: node-feature-discovery
428 annotations:
429 pallet.edge.ncr.com/created: "2023-02-16T21:26:39Z"
430 pallet.edge.ncr.com/name: nfd
431 pallet.edge.ncr.com/revision: 696897a3df910b6e84a88c9336907a17b18159c1
432 pallet.edge.ncr.com/source: https://github.com/ncrvoyix-swt-retail/edge-infra/tree/696897a3df910b6e84a88c9336907a17b18159c1
433 pallet.edge.ncr.com/team: '@ncrvoyix-swt-retail/sds'
434 pallet.edge.ncr.com/version: 7.7.7-rc.1676582799+commit.696897a
435roleRef:
436 name: nfd-master
437 kind: ClusterRole
438 apiGroup: rbac.authorization.k8s.io
439subjects:
440- name: nfd-master
441 namespace: nfd
442 kind: ServiceAccount
443---
444apiVersion: v1
445kind: ConfigMap
446metadata:
447 name: edge-custom-labels
448 namespace: nfd
449 labels:
450 platform.edge.ncr.com/component: node-feature-discovery
451 annotations:
452 pallet.edge.ncr.com/created: "2023-02-16T21:26:39Z"
453 pallet.edge.ncr.com/name: nfd
454 pallet.edge.ncr.com/revision: 696897a3df910b6e84a88c9336907a17b18159c1
455 pallet.edge.ncr.com/source: https://github.com/ncrvoyix-swt-retail/edge-infra/tree/696897a3df910b6e84a88c9336907a17b18159c1
456 pallet.edge.ncr.com/team: '@ncrvoyix-swt-retail/sds'
457 pallet.edge.ncr.com/version: 7.7.7-rc.1676582799+commit.696897a
458data:
459 edge-custom-labels.sh: "#! /bin/bash\n\n# dmi labels\nfor i in /sys/devices/virtual/dmi/id/*\ndo\n if [ ! -f $i ]\n then\n continue\n fi\n\n fname=$(basename $i)\n val=$(cat $i | tr ' /' '--')\n\n if [ \"$val\" != \"\" ]\n then\n if [ \"$fname\" != \"uevent\" -a \"$fname\" != \"modalias\" ]\n then\n echo $fname=\"$val\"\n fi\n fi\n \ndone\n\n# ien version\nif [ -f /ien-version ]; then\n version=$(cat /ien-version)\n if [ \"$version\" != \"\" ]; then\n echo \"ien-version=\"$version\n else\n echo \"ien-version=v1.0.0\"\n fi\nfi"
460---
461apiVersion: v1
462kind: ConfigMap
463metadata:
464 name: nfd-worker-conf
465 namespace: nfd
466 labels:
467 platform.edge.ncr.com/component: node-feature-discovery
468 annotations:
469 pallet.edge.ncr.com/created: "2023-02-16T21:26:39Z"
470 pallet.edge.ncr.com/name: nfd
471 pallet.edge.ncr.com/revision: 696897a3df910b6e84a88c9336907a17b18159c1
472 pallet.edge.ncr.com/source: https://github.com/ncrvoyix-swt-retail/edge-infra/tree/696897a3df910b6e84a88c9336907a17b18159c1
473 pallet.edge.ncr.com/team: '@ncrvoyix-swt-retail/sds'
474 pallet.edge.ncr.com/version: 7.7.7-rc.1676582799+commit.696897a
475data:
476 nfd-worker.conf: |
477 #core:
478 # labelWhiteList:
479 # noPublish: false
480 # sleepInterval: 60s
481 # featureSources: [all]
482 # labelSources: [all]
483 # klog:
484 # addDirHeader: false
485 # alsologtostderr: false
486 # logBacktraceAt:
487 # logtostderr: true
488 # skipHeaders: false
489 # stderrthreshold: 2
490 # v: 0
491 # vmodule:
492 ## NOTE: the following options are not dynamically run-time configurable
493 ## and require a nfd-worker restart to take effect after being changed
494 # logDir:
495 # logFile:
496 # logFileMaxSize: 1800
497 # skipLogHeaders: false
498 #sources:
499 # cpu:
500 # cpuid:
501 ## NOTE: whitelist has priority over blacklist
502 # attributeBlacklist:
503 # - "BMI1"
504 # - "BMI2"
505 # - "CLMUL"
506 # - "CMOV"
507 # - "CX16"
508 # - "ERMS"
509 # - "F16C"
510 # - "HTT"
511 # - "LZCNT"
512 # - "MMX"
513 # - "MMXEXT"
514 # - "NX"
515 # - "POPCNT"
516 # - "RDRAND"
517 # - "RDSEED"
518 # - "RDTSCP"
519 # - "SGX"
520 # - "SSE"
521 # - "SSE2"
522 # - "SSE3"
523 # - "SSE4"
524 # - "SSE42"
525 # - "SSSE3"
526 # attributeWhitelist:
527 # kernel:
528 # kconfigFile: "/path/to/kconfig"
529 # configOpts:
530 # - "NO_HZ"
531 # - "X86"
532 # - "DMI"
533 # pci:
534 # deviceClassWhitelist:
535 # - "0200"
536 # - "03"
537 # - "12"
538 # deviceLabelFields:
539 # - "class"
540 # - "vendor"
541 # - "device"
542 # - "subsystem_vendor"
543 # - "subsystem_device"
544 # usb:
545 # deviceClassWhitelist:
546 # - "0e"
547 # - "ef"
548 # - "fe"
549 # - "ff"
550 # deviceLabelFields:
551 # - "class"
552 # - "vendor"
553 # - "device"
554 # local:
555 # hooksEnabled: true
556 # custom:
557 # # The following feature demonstrates the capabilities of the matchFeatures
558 # - name: "my custom rule"
559 # labels:
560 # my-ng-feature: "true"
561 # # matchFeatures implements a logical AND over all matcher terms in the
562 # # list (i.e. all of the terms, or per-feature matchers, must match)
563 # matchFeatures:
564 # - feature: cpu.cpuid
565 # matchExpressions:
566 # AVX512F: {op: Exists}
567 # - feature: cpu.cstate
568 # matchExpressions:
569 # enabled: {op: IsTrue}
570 # - feature: cpu.pstate
571 # matchExpressions:
572 # no_turbo: {op: IsFalse}
573 # scaling_governor: {op: In, value: ["performance"]}
574 # - feature: cpu.rdt
575 # matchExpressions:
576 # RDTL3CA: {op: Exists}
577 # - feature: cpu.sst
578 # matchExpressions:
579 # bf.enabled: {op: IsTrue}
580 # - feature: cpu.topology
581 # matchExpressions:
582 # hardware_multithreading: {op: IsFalse}
583 #
584 # - feature: kernel.config
585 # matchExpressions:
586 # X86: {op: Exists}
587 # LSM: {op: InRegexp, value: ["apparmor"]}
588 # - feature: kernel.loadedmodule
589 # matchExpressions:
590 # e1000e: {op: Exists}
591 # - feature: kernel.selinux
592 # matchExpressions:
593 # enabled: {op: IsFalse}
594 # - feature: kernel.version
595 # matchExpressions:
596 # major: {op: In, value: ["5"]}
597 # minor: {op: Gt, value: ["10"]}
598 #
599 # - feature: storage.block
600 # matchExpressions:
601 # rotational: {op: In, value: ["0"]}
602 # dax: {op: In, value: ["0"]}
603 #
604 # - feature: network.device
605 # matchExpressions:
606 # operstate: {op: In, value: ["up"]}
607 # speed: {op: Gt, value: ["100"]}
608 #
609 # - feature: memory.numa
610 # matchExpressions:
611 # node_count: {op: Gt, value: ["2"]}
612 # - feature: memory.nv
613 # matchExpressions:
614 # devtype: {op: In, value: ["nd_dax"]}
615 # mode: {op: In, value: ["memory"]}
616 #
617 # - feature: system.osrelease
618 # matchExpressions:
619 # ID: {op: In, value: ["fedora", "centos"]}
620 # - feature: system.name
621 # matchExpressions:
622 # nodename: {op: InRegexp, value: ["^worker-X"]}
623 #
624 # - feature: local.label
625 # matchExpressions:
626 # custom-feature-knob: {op: Gt, value: ["100"]}
627 #
628 # # The following feature demonstrates the capabilities of the matchAny
629 # - name: "my matchAny rule"
630 # labels:
631 # my-ng-feature-2: "my-value"
632 # # matchAny implements a logical IF over all elements (sub-matchers) in
633 # # the list (i.e. at least one feature matcher must match)
634 # matchAny:
635 # - matchFeatures:
636 # - feature: kernel.loadedmodule
637 # matchExpressions:
638 # driver-module-X: {op: Exists}
639 # - feature: pci.device
640 # matchExpressions:
641 # vendor: {op: In, value: ["8086"]}
642 # class: {op: In, value: ["0200"]}
643 # - matchFeatures:
644 # - feature: kernel.loadedmodule
645 # matchExpressions:
646 # driver-module-Y: {op: Exists}
647 # - feature: usb.device
648 # matchExpressions:
649 # vendor: {op: In, value: ["8086"]}
650 # class: {op: In, value: ["02"]}
651 #
652 # # The following features demonstreate label templating capabilities
653 # - name: "my template rule"
654 # labelsTemplate: |
655 # {{ range .system.osrelease }}my-system-feature.{{ .Name }}={{ .Value }}
656 # {{ end }}
657 # matchFeatures:
658 # - feature: system.osrelease
659 # matchExpressions:
660 # ID: {op: InRegexp, value: ["^open.*"]}
661 # VERSION_ID.major: {op: In, value: ["13", "15"]}
662 #
663 # - name: "my template rule 2"
664 # labelsTemplate: |
665 # {{ range .pci.device }}my-pci-device.{{ .class }}-{{ .device }}=with-cpuid
666 # {{ end }}
667 # matchFeatures:
668 # - feature: pci.device
669 # matchExpressions:
670 # class: {op: InRegexp, value: ["^06"]}
671 # vendor: ["8086"]
672 # - feature: cpu.cpuid
673 # matchExpressions:
674 # AVX: {op: Exists}
675 #
676 # # The following examples demonstrate vars field and back-referencing
677 # # previous labels and vars
678 # - name: "my dummy kernel rule"
679 # labels:
680 # "my.kernel.feature": "true"
681 # matchFeatures:
682 # - feature: kernel.version
683 # matchExpressions:
684 # major: {op: Gt, value: ["2"]}
685 #
686 # - name: "my dummy rule with no labels"
687 # vars:
688 # "my.dummy.var": "1"
689 # matchFeatures:
690 # - feature: cpu.cpuid
691 # matchExpressions: {}
692 #
693 # - name: "my rule using backrefs"
694 # labels:
695 # "my.backref.feature": "true"
696 # matchFeatures:
697 # - feature: rule.matched
698 # matchExpressions:
699 # my.kernel.feature: {op: IsTrue}
700 # my.dummy.var: {op: Gt, value: ["0"]}
701 #
702---
703apiVersion: v1
704kind: Service
705metadata:
706 name: nfd-master
707 namespace: nfd
708 labels:
709 platform.edge.ncr.com/component: node-feature-discovery
710 annotations:
711 pallet.edge.ncr.com/created: "2023-02-16T21:26:39Z"
712 pallet.edge.ncr.com/name: nfd
713 pallet.edge.ncr.com/revision: 696897a3df910b6e84a88c9336907a17b18159c1
714 pallet.edge.ncr.com/source: https://github.com/ncrvoyix-swt-retail/edge-infra/tree/696897a3df910b6e84a88c9336907a17b18159c1
715 pallet.edge.ncr.com/team: '@ncrvoyix-swt-retail/sds'
716 pallet.edge.ncr.com/version: 7.7.7-rc.1676582799+commit.696897a
717spec:
718 type: ClusterIP
719 selector:
720 app: nfd-master
721 platform.edge.ncr.com/component: node-feature-discovery
722 ports:
723 - protocol: TCP
724 port: 8080
725---
726apiVersion: apps/v1
727kind: Deployment
728metadata:
729 name: nfd-master
730 namespace: nfd
731 labels:
732 app: nfd
733 platform.edge.ncr.com/component: node-feature-discovery
734 annotations:
735 pallet.edge.ncr.com/created: "2023-02-16T21:26:39Z"
736 pallet.edge.ncr.com/name: nfd
737 pallet.edge.ncr.com/revision: 696897a3df910b6e84a88c9336907a17b18159c1
738 pallet.edge.ncr.com/source: https://github.com/ncrvoyix-swt-retail/edge-infra/tree/696897a3df910b6e84a88c9336907a17b18159c1
739 pallet.edge.ncr.com/team: '@ncrvoyix-swt-retail/sds'
740 pallet.edge.ncr.com/version: 7.7.7-rc.1676582799+commit.696897a
741spec:
742 replicas: 1
743 selector:
744 matchLabels:
745 app: nfd-master
746 platform.edge.ncr.com/component: node-feature-discovery
747 template:
748 metadata:
749 labels:
750 app: nfd-master
751 platform.edge.ncr.com/component: node-feature-discovery
752 annotations:
753 pallet.edge.ncr.com/created: "2023-02-16T21:26:39Z"
754 pallet.edge.ncr.com/name: nfd
755 pallet.edge.ncr.com/revision: 696897a3df910b6e84a88c9336907a17b18159c1
756 pallet.edge.ncr.com/source: https://github.com/ncrvoyix-swt-retail/edge-infra/tree/696897a3df910b6e84a88c9336907a17b18159c1
757 pallet.edge.ncr.com/team: '@ncrvoyix-swt-retail/sds'
758 pallet.edge.ncr.com/version: 7.7.7-rc.1676582799+commit.696897a
759 spec:
760 serviceAccount: nfd-master
761 containers:
762 - name: nfd-master
763 image: us-east1-docker.pkg.dev/ret-edge-pltf-infra/thirdparty/k8s.gcr.io/nfd/node-feature-discovery:v0.12.1
764 command:
765 - nfd-master
766 args: []
767 env:
768 - name: NODE_NAME
769 valueFrom:
770 fieldRef:
771 fieldPath: spec.nodeName
772 volumeMounts: []
773 livenessProbe:
774 exec:
775 command:
776 - /usr/bin/grpc_health_probe
777 - -addr=:8080
778 initialDelaySeconds: 10
779 periodSeconds: 10
780 readinessProbe:
781 exec:
782 command:
783 - /usr/bin/grpc_health_probe
784 - -addr=:8080
785 failureThreshold: 10
786 initialDelaySeconds: 5
787 periodSeconds: 10
788 imagePullPolicy: IfNotPresent
789 securityContext:
790 allowPrivilegeEscalation: false
791 capabilities:
792 drop:
793 - ALL
794 readOnlyRootFilesystem: true
795 runAsNonRoot: true
796 ports:
797 - containerPort: 8080
798 volumes: []
799 affinity:
800 nodeAffinity:
801 preferredDuringSchedulingIgnoredDuringExecution:
802 - preference:
803 matchExpressions:
804 - key: node-role.kubernetes.io/master
805 operator: In
806 values:
807 - ""
808 weight: 1
809 - preference:
810 matchExpressions:
811 - key: node-role.kubernetes.io/control-plane
812 operator: In
813 values:
814 - ""
815 weight: 1
816 tolerations:
817 - value: ""
818 effect: NoSchedule
819 key: node-role.kubernetes.io/master
820 operator: Equal
821 - value: ""
822 effect: NoSchedule
823 key: node-role.kubernetes.io/control-plane
824 operator: Equal
825---
826apiVersion: apps/v1
827kind: DaemonSet
828metadata:
829 name: nfd-worker
830 namespace: nfd
831 labels:
832 app: nfd
833 platform.edge.ncr.com/component: node-feature-discovery
834 annotations:
835 pallet.edge.ncr.com/created: "2023-02-16T21:26:39Z"
836 pallet.edge.ncr.com/name: nfd
837 pallet.edge.ncr.com/revision: 696897a3df910b6e84a88c9336907a17b18159c1
838 pallet.edge.ncr.com/source: https://github.com/ncrvoyix-swt-retail/edge-infra/tree/696897a3df910b6e84a88c9336907a17b18159c1
839 pallet.edge.ncr.com/team: '@ncrvoyix-swt-retail/sds'
840 pallet.edge.ncr.com/version: 7.7.7-rc.1676582799+commit.696897a
841spec:
842 selector:
843 matchLabels:
844 app: nfd-worker
845 platform.edge.ncr.com/component: node-feature-discovery
846 template:
847 metadata:
848 labels:
849 app: nfd-worker
850 platform.edge.ncr.com/component: node-feature-discovery
851 annotations:
852 pallet.edge.ncr.com/created: "2023-02-16T21:26:39Z"
853 pallet.edge.ncr.com/name: nfd
854 pallet.edge.ncr.com/revision: 696897a3df910b6e84a88c9336907a17b18159c1
855 pallet.edge.ncr.com/source: https://github.com/ncrvoyix-swt-retail/edge-infra/tree/696897a3df910b6e84a88c9336907a17b18159c1
856 pallet.edge.ncr.com/team: '@ncrvoyix-swt-retail/sds'
857 pallet.edge.ncr.com/version: 7.7.7-rc.1676582799+commit.696897a
858 spec:
859 dnsPolicy: ClusterFirstWithHostNet
860 serviceAccount: nfd-worker
861 containers:
862 - name: nfd-worker
863 image: us-east1-docker.pkg.dev/ret-edge-pltf-infra/thirdparty/k8s.gcr.io/nfd/node-feature-discovery:v0.12.1
864 command:
865 - nfd-worker
866 args:
867 - -server=nfd-master:8080
868 env:
869 - name: NODE_NAME
870 valueFrom:
871 fieldRef:
872 fieldPath: spec.nodeName
873 volumeMounts:
874 - name: ien-version
875 mountPath: /ien-version
876 - name: host-boot
877 readOnly: true
878 mountPath: /host-boot
879 - name: host-os-release
880 readOnly: true
881 mountPath: /host-etc/os-release
882 - name: host-sys
883 readOnly: true
884 mountPath: /host-sys
885 - name: host-usr-lib
886 readOnly: true
887 mountPath: /host-usr/lib
888 - name: source-d
889 readOnly: true
890 mountPath: /etc/kubernetes/node-feature-discovery/source.d/
891 - name: features-d
892 readOnly: true
893 mountPath: /etc/kubernetes/node-feature-discovery/features.d/
894 - name: nfd-worker-conf
895 readOnly: true
896 mountPath: /etc/kubernetes/node-feature-discovery
897 imagePullPolicy: IfNotPresent
898 volumes:
899 - name: ien-version
900 hostPath:
901 type: FileOrCreate
902 path: /ien-version
903 - name: source-d
904 configMap:
905 name: edge-custom-labels
906 defaultMode: 0777
907 - name: features-d
908 hostPath:
909 path: /etc/kubernetes/node-feature-discovery/features.d/
910 - name: host-boot
911 hostPath:
912 path: /boot
913 - name: host-os-release
914 hostPath:
915 path: /etc/os-release
916 - name: host-sys
917 hostPath:
918 path: /sys
919 - name: host-usr-lib
920 hostPath:
921 path: /usr/lib
922 - name: nfd-worker-conf
923 configMap:
924 name: nfd-worker-conf
View as plain text