Releases: kubernetes-sigs/node-feature-discovery
v0.8.1
v0.8.0
Changelog
Major
NFD Helm repository
NFD now hosts a Helm chart repository as a new deployment option. Installation of the latest release can be as simple as:
helm repo add nfd http://kubernetes-sigs.github.io/node-feature-discovery/charts
helm repo update
helm install nfd/node-feature-discovery --namespace node-feature-discovery --create-namespace --generate-name
See the documentation for more detailed instructions.
Dynamic TLS certificate updates
Support for dynamic TLS certificate updates was added. This enables e.g. the usage of cert-manager for certificate rotation. See the documentation for more details.
Improved worker configuration
Now most of the nfd-worker options (e.g. sleep-interval) are dynamically configurable via the configuration file. Most of the corresponding command line flags have been marked as deprecated. See documentation of the core config options for more details.
Minimal container image variant
NFD now has a "minimal" variant of container image, based on distroless/base. The minimal image provides enhanced security and reduced image footprint, but, limits the nfd-worker hook support to statically linked binaries only. See the documentation for more details.
Support multiple parallel NFD instances
New -instance
command line flag for nfd-master was added, making it possible to run multiple deployments of NFD in parallel.
Nodename rule to custom source
A new nodename
rule was added to the quiver to enable creation of user-specific labels based on node name. See the documentation for detailed description and examples.
Additional CPU pstate and cstate features
New CPU features labels were added:
- feature.node.kubernetes.io/cpu-pstate.status
- feature.node.kubernetes.io/cpu-pstate.scaling_governor
- feature.node.kubernetes.io/cpu-cstate.enabled
Klog for logging
NFD switched to klog-based logging, greatly improving logging and debugging capabilities. Moreover, most of the logger related options in nfd-worker are dynamically adjustable through the config file, making it possible to e.g. control the verbosity of nfd-worker instances at run-time.
Miscellaneous
- Switch to flags package in command line arg parsing (#444)
- Update
klauspost/cpuid
to v2.0.2 (#421) - nfd-worker: stop masking crashes in feature discovery (#458)
List of PRs
- Cherry-pick: github: update new-release issue template (#416)
- github: workflow fixes (#419)
- README: update references to v0.7.0 (#420)
- go.mod: update to klauspost/cpuid/v2@v2.0.2 (#421)
- Set imagePullPolicy in the deployment templates to Always (#430)
- Change the worker conf update mechanism of templates (#434)
- scripts/test-infra: update golangci-lint to v1.36.0 (#436)
- Replace improper usage of filepath.Join with path.Join (#435)
- Update gogo/protobuf and golang.org/x/text (#438)
- nfd-worker: use fsnotify for watching for config file changes (#432)
- nfd-master: implement --instance flag (#431)
- Update OWNERS file (#441)
- nfd-worker: add core config (#433)
- Add helm chart for NFD (#423)
- Add NFD master '--instance' flag support to Helm chart (#443)
- Fix daemonset deployment template (#446)
- Fix NFD master chart template (#447)
- Switch to flags package in command line arg parsing (#444)
- Added nodename rule to custom source (#429)
- docs: align docs with the single-dash command line flags (#449)
- docs: enable markdown linting (#451)
- nfd-master: switch to klog (#445)
- nfd-worker: switch to klog (#450)
- test/e2e: make openshift bits optional (#452)
- Logging fixes (#453)
- scripts/test-infra: enable helm linting (#455)
- nfd-worker: stop masking crashes in feature discovery (#458)
- logs should all be lower case when possible (#454)
- source: drop stale BoolFeatureValue type (#459)
- Makefile: increase golangci-lint timeout to 7min (#461)
- nfd-worker: improve log messages of config handling (#460)
- pkg/utils: fix possible segfault in RegexpVal.Set (#462)
- github: limit gh-pages build of tags to (final) semver releases (#466)
- logging: set grpc to use klog for logging (#465)
- Dockerfile: add minimal image (#469)
- docs: unify capitalization of headings (#470)
- Support TLS certificate updates (#442)
- pkg/utils: show correct source file in gRPC logs (#475)
- Support for additional cpu features (#463)
- use cert-manager for TLS (#379)
- docs: describe deployment of the minimal image (#471)
- nfd-worker: don't log labels returned by sources by default (#474)
- docs: updates to documentation of Helm parameters (#472)
- docs: fix some internal references (#480)
- Host NFD Helm repo in gh-pages (#457)
- github: update new-release issue template assignees (#482)
- docs: document all config file options (#481)
- Remove --sleep-interval flag from worker deployment templates (#483)
- source/custom: dump config in more human-readable form (#473)
v0.7.0
For deployment and usage instructions see the Project Documentation
Changelog
With this release the NFD container image registry was changed from quay.io to k8s.gcr.io which is managed by the Kubernetes community. New images will be available under k8s.gcr.io/nfd registry.
Documentation is was converted from one monolithic README into HTML served by GitHub pages at:
https://kubernetes-sigs.github.io/node-feature-discovery
Major Changes
- Add kconfig and cpuid rules to the
custom
feature source (#334) - Support for ARM/Aarch32 cpuid (#322)
- Add
--prune
flag to nfd-master (#326) - Update cpuid, support for Intel Sapphire Rapids (#406)
Misc
- Shortcut to enable all feature sources with
--sources=all
(#356) - Fix bug in kernel version number sanitization (#402)
- Fix sporadic worker restarts (#336)
- Deployment templates create and mount a nfd-worker.conf ConfigMap (#386)
- Container image and deployment hardening (#325, #395)
- Change default namespace in the deployment specs to node-feature-discovery (#365)
- Use Kubernetes v1.19 and Golang v1.15
- Make build customization through Makefile variables more coherent (#351, #355, #404)
- Documentation moved to https://kubernetes-sigs.github.io/node-feature-discovery
- Container image hosting moved to k8s.gcr.io
- CI moved from TravisCI to Kubernetes test-infra
v0.6.0
Changelog
Major changes
- New
custom
feature source (#290). Introduces a new feature source that allows creating user-defined labels based on configurable matcher rules. See README for detailed description and examples. - Support USB device discovery (#310). Adds a new configurable
usb
feature source advertising USB devices and a newUsbId
rule type to thecustom
source. See the documentation of USB source and UsbId custom rule for more details. - Experimental support for extended resources (#291). Makes it possible to configure nfd-master to advertise specific features as extended resources instead of node labels. See README for more details.
- PCI: add
sriov.capable
attribute for PCI devices that support SR-IOV (#288) - Change suggested nfd-master deployment from Daemonset to Deployment (#294)
- Support run-time configuration file updates (#304)
- Perform network feature discovery under host sysfs (#317). Removes the need to use hostNetwork on nfd-worker pods.
- Support cpuid for ARM/Aarch32 (#322)
Miscellaneous
- Do not publish empty OS version labels (#299)
- Handle forbidden symbols in kernel version label (#309)
- Unify behaviour of
--label-whitelist
across nfd-worker and nfd-master (#307). On nfd-worker, the label namespace is now ignored, i.e. the filter is applied on the name part after/
. - Documentation improvements (#284, #285, #316, #323)
- Improved end-to-end tests and integration with the CI (#186, #292)
- Update to klauspost/cpuid to v1.2.3 for improved CPUID detecttion (#279)
- Update to Kubernetes v.1.17 (#282)
Deployment
For complete documentation see the v0.6.0 release
For quick start, you can use the provided template specs to deploy the NFD release image with the default configuration in the default namespace:
export NFD_VERSION=v0.6.0
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/node-feature-discovery/$NFD_VERSION/nfd-master.yaml.template
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/node-feature-discovery/$NFD_VERSION/nfd-worker-daemonset.yaml.template
v0.5.0
Changelog
Major changes
- support for non-binary kconfig options in kernel feature source (#197)
- detect NVDIMM DAX mode in memory source (#254)
- automatically publish "experimental/devel" container images from the master branch (#160)
- CPUID support for IBM Power LE & Z (#262)
- advertise 'false' status of cpu-pstate.turbo (#266)
- update
klauspost/cpuid
dependency in order to detect latest CPUID features (#271)
Miscellaneous
- nfd-worker doesn't (try to) connect to master when --no-publish is used (#265)
- use pod anti-affinity in the worker Job template spec (#161)
- improvements in CI pipeline
- documentation updates fixes
Deployment
For complete documentation see the v0.5.0 release
For quick start, you can use the provided template specs to deploy the NFD release image with the default configuration in the default namespace:
export NFD_VERSION=v0.5.0
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/node-feature-discovery/$NFD_VERSION/nfd-master.yaml.template
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/node-feature-discovery/$NFD_VERSION/nfd-worker-daemonset.yaml.template
v0.4.0
Changelog
Node-feature-discovery was migrated into a new repository under the kubernetes-sigs organization in Github (#175). Related to the migration, the final container image registry/repo hasn't been dediced yet (#177) – for this release we still use the old repo.
Major changes
- Split NFD into client and server (#209)
- Changes in labels:
- NFD label namespace was changed to
feature.node.kubernetes.io/
(#176)nfd-
prefix was dropped from all feature labels- NFD version label (
feature.node.kubernetes.io/node-feature-discovery.version
) was replaced by an annotation (nfd.node.kubernetes.io/version
)
- network SRIOV labels were changed (#173):
network-sriov
->network-sriov.capable
network-sriov-configured
->network-sriov.configured
- selinux detection was moved to kernel feature source
selinux
->kernel-selinux.enabled
- cpuid, pstate and RDT labels moved under cpu feature source (#217)
cpuid-<cpuid flag>
->cpu-cpuid.<cpuid flag>
pstate-turbo
->cpu-pstate.turbo
rdt-<rdt feature>
->cpu-rdt.<rdt feature>
- NFD label namespace was changed to
- Support for config file (#169). Currently with three configurable feature sources i.e. cpu (#224), kernel (#157) and pci (#168)
- Support for non-binary labels, with arbitrary values other than plain
true
- PCI device detection (#168)
- Kernel version detection (#157)
- Kernel config option detection (#146)
- Support for custom feature-detector hooks (#144)
- Support OS version detection (#149, #211)
- Detection of hardware multithreading, such as Intel Hyper-Threading Technology (#147)
- Arm64 support for CPUID detection (#194)
- Validation of feature label names and values (#199, #219)
- Detection of NVDIMM devices (#214)
- Get labels by reading from file in
local
source (#228) - Detection of Intel SST-BF (Speed Select Technology - Base Frequency) (#235)
- Make it possible to create feature labels in non-default namespace (#231). Currently possible for using the local source (hooks and files).
Miscellaneous
- Template specs converted from json to yaml
- Documentation updates fixes
Deployment
For complete documentation see the v0.4.0 release
For quick start, you can use the provided template specs to deploy the NFD release image with the default configuration in the default namespace:
export NFD_VERSION=v0.4.0
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/node-feature-discovery/$NFD_VERSION/nfd-master.yaml.template
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/node-feature-discovery/$NFD_VERSION/nfd-worker-daemonset.yaml.template
v0.3.0
Changelog
Major changes
- Implement detection of IOMMU (#136)
- NFD container image size is reduced by 94% (from ca. 1.25 GB to 76 MB), by utilizing multi-stage Docker build (#129)
- Image build tool is now configurable via
IMAGE_BUILD_CMD
make variable (e.g.buildag bud
may be used) (#166)
Misc fixes
- Skip pstate detection on Arm (#118)
- Documentation fixes and improvements (#104, #156)
- Small improvement in node counting in
label.sh
(#152)
Known issues
- Occasional restarts when run as a DaemonSet (issue #122)
v0.2.0
Changelog
New features
- Add support for Kubernetes 1.8+ (#82)
- Adding SR-IOV capability discovery to node-feature-discovery (#49)
- Enable nfd framework on Arm64 platform
- Added nonrotational storage detection
- Add memory source and NUMA detection.
- Export proxy env vars inside docker build. Makes it possible to build node-feature-discovery from behind a proxy server, e.g. in corporate networks.
- Advertise selinux status by adding labels
- Make it possible to run nfd as a DaemonSet (#105)
- Added more Intel RDT capability discovery: CMT,MBM,MBA (#120)
- Added template spec for configuring RBAC (#126)
Misc fixes
- Fix to report the correct version inside container.
- Upated RDT Discovery() to use exit status
- Clean-up RDT helper programs.
- Improved unit test coverage
- Add GoReport Card Widget
- Update Community Code of Conduct
- Improve GoReportCard metrics, both gofmt and golint (#90)
- Get node name from spec.nodeName instead of indirectly from pod. (#93)
- Remove hardcoding of nfd source path (#94)
- Use a specific released version of intel-cmt-cat
Known issues
- Occasional restarts when run as a DaemonSet (issue #122).
v0.1.0
- Use kubernetes-incubator.io in label namespace instead of intel.com.
- Graceful failure if discovery from a source fails.
- Use client-go instead of the unversioned client.
- Separate discovered features from logs in output (stdout/stderr).
- Delete non-discovered feature labels.
- Version string no longer part of published label key.
- Configure bots for repo management automation.
- Investigate and fix a number of issues from the quay.io vulnerability report.
Errata / known issues:
- The version reported by published container is
v0.1.0-dirty
. See issue #54 for more details.
Docker image:
quay.io/kubernetes_incubator/node-feature-discovery:v0.1.0