Changelog
Expression-based custom label rules
We implemented new expression-based format for writing labeling rules, greatly expanding the capabilities for vendor and application specific labeling. It covers much more features than the built-in labels reveal, supports tempating and more. See new customization guide for more details.
NodeFeatureRule custom resource
We introduce new NodeFeatureRule custom resource, enabling the deployment vendor and application specific labeling rules as Kubernetes API objects. See customization guide for details.
Detection of network, storage and nvdimm devices
NFD now discovers network, block storage and nvdimm devices. No new built-in labels are introduced but the device information is available for custom label rules to use. See available features for details.
Topology-updater daemon
NFD-Topology-Updater is a new daemon that advertises topology of available and allocatable system resources via NodeResourceTopology custom resources. See the documentation for more details.
New profile label namespace
NFD now by default allows a new profile.node.kubernetes.io
label namespace (and it's sub-namespaces). This can be used in custom labels and is intended for vendor or application specific higher level "meta features".
Label names from the local source changed
NFD stopped injecting the filename of the hook/featurefile into the name of the label.
NOTE: This breaks backwards compatibility with usage scenarios that rely on implicitly prefixing the label with the filename. However, we felt that the somewhat confusing and counter-intuitive behavior needs to be changed. The suggested way to fix existing use cases is to user fully namespaced <namespace>/<name>=<value>
format (this will retain compatibility with older versions of NFD).
TLS and cert-manager integration in Helm chart
NFD Helm chart now supports enabling TLS and cert-manager via the tls.enable
and tls.certManager
options. See the documentation for details.
IOMMU source deprecated
The IOMMU source has been deprecated and is now disabled by default. Thus, it's only feature label feature.node.kubernetes.io/iommu-enabled
is not available in the default configuration. To enable it, set the core.labelSources
option to the value [all, iommu]
in the nfd-worker configuration. See worker configuration for more details on configuring nfd-worker.
NOTE: the iommu_group/type
is now available as per PCI device attribute to be used for custom label rules. See the customization guide for details on using custom label rules.
Miscellaneous
- /usr/src is not mounted by default, anymore (#585)
- simplify nfd-worker configuration in Helm (#627)
- detect Intel SGX (#647)
- add additional IBM Z CPUID flags (#675)
- nfd-worker config
- fix kustomize sample overlay enabling cert-manager (#710)
List of PRs
- README: update deployment instructions to use v0.9.0 (#580)
- nfd-worker: split out gRPC connection handling (#552)
- gitignore: add kustomization.yaml (#583)
- source/custom: refactor kconfig rule internal representation (#543)
- Fix the typo in deployment-and-usage.md (#575)
- Only add kustomization.yaml in the root to .gitignore (#587)
- scripts/test-infra: verify buildability of kustomize overlays (#586)
- deployment: make /usr/src hostpath mount optional (#585)
- nfd-master: allow profile.node.kubernetes.io label ns (#548)
- Fix a link in deployment-and-usage.md (#589)
- Fix broken link for worker-conf example (#590)
- source/network: silence annoying/useless log message (#592)
- source: rename FeatureSource to LabelSource (#596)
- deployment: fix formatting of the worker conf sample (#599)
- source: make sources register themselves (#597)
- Introducing NFD Topology Updater exposing Resource hardware Topology info through CRs (#525)
- source: introduce FeatureSource interface (#601)
- Fix broken link on docs/get-started (#603)
- Utilize go generate (#602)
- Trim single quotes in parseOSRelease (#606)
- docs: remote wip note from worker configuration reference (#611)
- deployment: fix typo in overlay name (#609)
- Update developer-guide.md (#613)
- scripts/test-infra: bump golangci-lint to v1.42.1 (#615)
- docs: fix TOCs (#610)
- deployment: align topologyupdater overlays (#607)
- drop the topology updater job (#622)
- topology-updater:fix klog initialization (#625)
- docs: update dependencies (#624)
- deployment/helm: don't force sleep-interval in worker cmdline flags (#628)
- Bump to golang v1.17 (#629)
- source: fix gofmt errors (#631)
- Makefile: let gofmt-verify write changes back to files (#632)
- deployment: Simplify NFD worker configuration in Helm (#627)
- deployment: add topology updater helm chart (#623)
- docs: mention minimum required kubectl version (#635)
- Documentation capturing enablement of NFD-Topology-Updater in NFD (#526)
- resourcemonitor: aggregate and provide the memory and hugepages information (#593)
- pkg/resourcemonitor: fix typo in comment (#641)
- pkg/api/feature: small improvements (#642)
- test/e2e: make e2e tests run on single-node cluster (#643)
- test/e2e: drop /boot mount (#644)
- source: implement FeatureSource interface (#604)
- Topology-updater introduction typo fix (#645)
- deployment: Implicitly generate the worker ConfigMap name (#640)
- More topology updater documentation typo fixes (#648)
- source/custom: expression based label rules (#639)
- More extensive and expressive custom rules (#464)
- NFD-Topology-Updater: Bump NRT API to version v0.0.12 (#652)
- grpc: extend the API to send raw features (#646)
- specify CRD for custom labeling rules (#653)
- source/custom: move rule matching to pkg/apis/nfd (#654)
- pkg/apis/nfd: drop excess field from the CRD (#657)
- Update the link of slack channel (#659)
- Add code for interacting with CRD API (#655)
- deployment: clean up base/topologyupdater-daemonset (#608)
- topologyupdater: logs relevant message when feature-gate is disabled. (#633)
- nfd-master: implement controller for NodeFeatureRule CRs (#656)
- source/storage: implement FeatureSource (#649)
- Revert "test/e2e: drop /boot mount" (#664)
- CRD-based custom node labeling (#553)
- source/network: implement FeatureSource (#660)
- source/memory: implement FeatureSource (#661)
- Templating of custom label names (#550)
- source/cpu: detect Intel SGX (#647)
- source/kernel: don't advertise selinux.enabled=false (#665)
- source/memory: fix memory.numa label (#666)
- pkg/apis/nfd: stricter format checking for template labels (#668)
- Add variables to feature rule spec and support backrefs (#663)
- source/cpu: add additional IBM Z CPU Flags (#675)
- images: use k8s-staging-test-infra/gcb-docker-gcloud (#685)
- images: fix invalid k8s-staging-test-infra/gcb-docker-gcloud tag (#686)
- Makefile: Add make deploy rule (#679)
- docs: drop cmdline help from developer guide (#672)
- Lint fixes to pkg/apis (#687)
- Add deploy-prune makefile rule to ease devel processes (#667)
- Use single-dash format of cmdline flags (#671)
- source/kernel: ditch regexp in kconfig parsing (#683)
- nfd-worker: rename 'sources' config option (#673)
- source/kernel: drop length check of kconfig values (#682)
- source/kernel: unmangled kconfig values for custom rules (#684)
- scripts: increase e2e-test image poll timeout to 12mins (#688)
- scripts/test-infra: bump helm to v3.7.1 (#689)
- nfd-worker: disable sources more easily (#670)
- nfd-worker: add core.featureSources config option (#605)
- source: make per-source unit tests stricter (#691)
- source/fake: implement FeatureSource (#692)
- docs: fix mistake in md format (#693)
- test/e2e: revise usage of nfd command line flags (#690)
- source/usb: fix fallback to default label format (#694)
- source/local: log features per each hook and feature file (#696)
- source/local: don't prefix label names with the filename (#695)
- nfd-worker: drop 'custom-' prefix from matchFeatures custom rules (#697)
- Dockerfile: build grpc_health-probe from source (#707)
- Fix readiness and liveness checks (#709)
- Fix kustomization template to work with cert-manager (#710)
- Enable TLS and cert-manager created certs for helm chart (#712)
- deployment/helm: refactor nfd-master rbac parameters (#706)
- deployment/helm: disable nfr controller for parallel instances (#699)
- deployment: use new custom rule format in sample configs (#701)
- source/iommu: deprecate and disable by default (#677)
- Initial bash at new TLS docs (#713)
- docs: add customization guide (#704)
- docs: small tinkering on the TLS documentation (#714)
- source/pci: add iommu_group/type attribute (#705)
- docs: small fix in block and net features in customization guide (#715)