forked from suse-edge/Factory
98 lines
5.3 KiB
RPMSpec
98 lines
5.3 KiB
RPMSpec
#
|
|
# spec file for package node-feature-discovery
|
|
#
|
|
# Copyright (c) 2025 SUSE LLC
|
|
#
|
|
# All modifications and additions to the file contributed by third parties
|
|
# remain the property of their copyright owners, unless otherwise agreed
|
|
# upon. The license for this file, and modifications and additions to the
|
|
# file, is the same license as for the pristine package itself (unless the
|
|
# license for the pristine package is not an Open Source License, in which
|
|
# case the license is the MIT License). An "Open Source License" is a
|
|
# license that conforms to the Open Source Definition (Version 1.9)
|
|
# published by the Open Source Initiative.
|
|
|
|
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
|
#
|
|
|
|
|
|
Name: node-feature-discovery
|
|
Version: 0
|
|
Release: 0
|
|
Summary: Advertises hardware features available on each Kubernetes node using node labels
|
|
License: Apache-2.0
|
|
URL: https://github.com/kubernetes-sigs/node-feature-discovery
|
|
Source: %{name}-%{version}.tar
|
|
Source1: vendor.tar.gz
|
|
BuildRequires: glibc-static
|
|
BuildRequires: golang(API) = 1.25
|
|
ExcludeArch: s390
|
|
ExcludeArch: %{ix86}
|
|
|
|
%description
|
|
Node-Feature-Discovery (NFD) software enables node feature discovery for Kubernetes. It detects hardware features available on each node in a
|
|
Kubernetes cluster, and advertises those features using node labels and optionally node extended resources, annotations and node taints.
|
|
Node Feature Discovery is compatible with any recent version of Kubernetes (v1.21+).
|
|
|
|
NFD consists of four software components:
|
|
- nfd-master:
|
|
daemon responsible for communication towards the Kubernetes API. That is, it receives labeling requests from the worker and modifies node
|
|
objects accordingly.
|
|
- nfd-worker:
|
|
daemon responsible for feature detection. It then communicates the information to nfd-master which does the actual node labeling. One instance
|
|
of nfd-worker is supposed to be running on each node of the cluster.
|
|
- nfd-topology-updater:
|
|
daemon responsible for examining allocated resources on a worker node to account for resources available to be allocated to new pod on a per-zone
|
|
basis (where a zone can be a NUMA node). It then creates or updates a NodeResourceTopology custom resource object specific to this node. One instance
|
|
of nfd-topology-updater is supposed to be running on each node of the cluster.
|
|
- nfd-gc:
|
|
daemon responsible for cleaning obsolete NodeFeature and NodeResourceTopology objects.
|
|
One instance of nfd-gc is supposed to be running in the cluster.
|
|
- nfd:
|
|
client able to export features or labels in a generic context (e.g., compute nodes that warrant assessment, but may not have Kubernetes running,
|
|
or may not be able to or want to run a central daemon service for data).
|
|
|
|
%prep
|
|
%autosetup -a1 -n %{name}-%{version} -p1
|
|
|
|
%build
|
|
%define cgoenabled "1"
|
|
# Most of the following go-build settings, toghether the build requirement on glibc-static package (see above) come from the aim
|
|
# to get an statically linked binary (once CGO being enabled); they have been taken from upstream Makefile.
|
|
#
|
|
# Apart from that, the "host-" setting in "pathPrefix" variable in "sigs.k8s.io/node-feature-discovery/pkg/utils/hostpath" package
|
|
# (below) is required for alignment with the several mount paths set in the nfd chart's "worker" daemonset (yaml) template, for
|
|
# all the hostPath volumes defined there.
|
|
%define buildgotags "osusergo,netgo"
|
|
%define buildldflags "-linkmode=external -extldflags '-static -Wl,--fatal-warnings' -X sigs.k8s.io/node-feature-discovery/pkg/version.version=v%{version} -X sigs.k8s.io/node-feature-discovery/pkg/utils/hostpath.pathPrefix=/host- -s -w"
|
|
CGO_ENABLED=%{cgoenabled} go build -mod=vendor -trimpath -tags %{buildgotags} -ldflags %{buildldflags} -o kubectl-nfd ./cmd/kubectl-nfd
|
|
CGO_ENABLED=%{cgoenabled} go build -mod=vendor -trimpath -tags %{buildgotags} -ldflags %{buildldflags} -o nfd-gc ./cmd/nfd-gc
|
|
CGO_ENABLED=%{cgoenabled} go build -mod=vendor -trimpath -tags %{buildgotags} -ldflags %{buildldflags} -o nfd-master ./cmd/nfd-master
|
|
CGO_ENABLED=%{cgoenabled} go build -mod=vendor -trimpath -tags %{buildgotags} -ldflags %{buildldflags} -o nfd-worker ./cmd/nfd-worker
|
|
CGO_ENABLED=%{cgoenabled} go build -mod=vendor -trimpath -tags %{buildgotags} -ldflags %{buildldflags} -o nfd-topology-updater ./cmd/nfd-topology-updater
|
|
CGO_ENABLED=%{cgoenabled} go build -mod=vendor -trimpath -tags %{buildgotags} -ldflags %{buildldflags} -o nfd ./cmd/nfd
|
|
|
|
%install
|
|
install -D -m0755 kubectl-nfd %{buildroot}%{_bindir}/kubectl-nfd
|
|
install -D -m0755 nfd-gc %{buildroot}%{_bindir}/nfd-gc
|
|
install -D -m0755 nfd-master %{buildroot}%{_bindir}/nfd-master
|
|
install -D -m0755 nfd-worker %{buildroot}%{_bindir}/nfd-worker
|
|
install -D -m0755 nfd-topology-updater %{buildroot}%{_bindir}/nfd-topology-updater
|
|
install -D -m0755 nfd %{buildroot}%{_bindir}/nfd
|
|
install -D -m0644 ./deployment/components/worker-config/nfd-worker.conf.example %{buildroot}%{_sysconfdir}/kubernetes/node-feature-discovery/nfd-worker.conf
|
|
|
|
%files
|
|
%license LICENSE
|
|
%doc README.md
|
|
%{_bindir}/kubectl-nfd
|
|
%{_bindir}/nfd-gc
|
|
%{_bindir}/nfd-master
|
|
%{_bindir}/nfd-worker
|
|
%{_bindir}/nfd-topology-updater
|
|
%{_bindir}/nfd
|
|
%dir %{_sysconfdir}/kubernetes
|
|
%dir %{_sysconfdir}/kubernetes/node-feature-discovery
|
|
%{_sysconfdir}/kubernetes/node-feature-discovery/nfd-worker.conf
|
|
|
|
%changelog
|