Skip to content

Releases: kubernetes-sigs/node-feature-discovery

v0.8.1

06 Apr 15:04
v0.8.1
c8fc208
Compare
Choose a tag to compare

Changelog

This is a maintenance release fixing issues with the NFD Helm chart.

List of PR

  • release-0.8: fix helm repo update (#487)
  • release 0.8: cherry-picks from master (#493)
  • Helm chart: Fix configMap indenting (#500)

v0.8.0

18 Mar 14:00
v0.8.0
150ce38
Compare
Choose a tag to compare

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

04 Dec 20:44
v0.7.0
3cef279
Compare
Choose a tag to compare

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

28 May 18:26
v0.6.0
c2503a2
Compare
Choose a tag to compare

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 new UsbId rule type to the custom 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

13 Dec 18:34
v0.5.0
201aee8
Compare
Choose a tag to compare

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
    • automatic publishing of release container images (#259)
    • add rudimentary end-to-end tests (#181)
  • 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

29 May 14:58
v0.4.0
5ae4574
Compare
Choose a tag to compare

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>
  • 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

27 Sep 11:11
v0.3.0
Compare
Choose a tag to compare

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

26 Jun 08:39
v0.2.0
a410ed4
Compare
Choose a tag to compare

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

07 Dec 22:24
Compare
Choose a tag to compare
  • 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