From a269bf4d2521f5c989a84edaf0f117df1a78c1da Mon Sep 17 00:00:00 2001 From: Markus Lehtonen Date: Wed, 10 Jul 2024 14:09:37 +0300 Subject: [PATCH] Drop the -enable-nodefeature-api flag Was marked to be removed in v0.17. --- cmd/nfd-master/main.go | 5 ---- cmd/nfd-worker/main.go | 5 ---- .../templates/clusterrole.yaml | 2 +- .../templates/clusterrolebinding.yaml | 2 +- .../templates/master.yaml | 2 +- .../templates/nfd-gc.yaml | 2 +- .../templates/service.yaml | 2 +- .../templates/serviceaccount.yaml | 2 +- .../templates/worker.yaml | 2 +- .../helm/node-feature-discovery/values.yaml | 2 -- docs/deployment/helm.md | 1 - .../reference/master-commandline-reference.md | 21 -------------- pkg/nfd-master/nfd-master.go | 27 +++++++++-------- pkg/nfd-worker/nfd-worker.go | 29 +++++++++---------- 14 files changed, 34 insertions(+), 70 deletions(-) diff --git a/cmd/nfd-master/main.go b/cmd/nfd-master/main.go index a51309b4a..08a35324f 100644 --- a/cmd/nfd-master/main.go +++ b/cmd/nfd-master/main.go @@ -81,8 +81,6 @@ func main() { args.Overrides.ResyncPeriod = overrides.ResyncPeriod case "nfd-api-parallelism": args.Overrides.NfdApiParallelism = overrides.NfdApiParallelism - case "enable-nodefeature-api": - klog.InfoS("-enable-nodefeature-api is deprecated and will be removed in the next release, use -feature-gate NodeFeatureAPI instead") case "ca-file": klog.InfoS("-ca-file is deprecated, will be removed in a future release along with the deprecated gRPC API") case "cert-file": @@ -141,9 +139,6 @@ func initFlags(flagset *flag.FlagSet) (*master.Args, *master.ConfigOverrideArgs) "Config file to use.") flagset.StringVar(&args.Kubeconfig, "kubeconfig", "", "Kubeconfig to use") - flagset.BoolVar(&args.EnableNodeFeatureApi, "enable-nodefeature-api", true, - "Enable the NodeFeature CRD API for receiving node features. This will automatically disable the gRPC communication."+ - " DEPRECATED: will be removed in NFD v0.17. Use -feature-gate NodeFeatureAPI instead.") flagset.BoolVar(&args.CrdController, "featurerules-controller", true, "Enable NFD CRD API controller. DEPRECATED: use -crd-controller instead") flagset.BoolVar(&args.CrdController, "crd-controller", true, diff --git a/cmd/nfd-worker/main.go b/cmd/nfd-worker/main.go index 20a259381..5c204aea4 100644 --- a/cmd/nfd-worker/main.go +++ b/cmd/nfd-worker/main.go @@ -69,8 +69,6 @@ func main() { klog.InfoS("-cert-file is deprecated, will be removed in a future release along with the deprecated gRPC API") case "key-file": klog.InfoS("-key-file is deprecated, will be removed in a future release along with the deprecated gRPC API") - case "enable-nodefeature-api": - klog.InfoS("-enable-nodefeature-api is deprecated and will be removed in the next release, use -feature-gate NodeFeatureAPI instead") case "server": klog.InfoS("-server is deprecated, will be removed in a future release along with the deprecated gRPC API") case "server-name-override": @@ -134,9 +132,6 @@ func initFlags(flagset *flag.FlagSet) (*worker.Args, *worker.ConfigOverrideArgs) flagset.StringVar(&args.KeyFile, "key-file", "", "Private key matching -cert-file."+ " DEPRECATED: will be removed in a future release along with the deprecated gRPC API.") - flagset.BoolVar(&args.EnableNodeFeatureApi, "enable-nodefeature-api", true, - "Enable the NodeFeature CRD API for communicating with nfd-master. This will automatically disable the gRPC communication."+ - " DEPRECATED: will be removed in NFD v0.17. Use -feature-gate NodeFeatureAPI instead.") flagset.StringVar(&args.Kubeconfig, "kubeconfig", "", "Kubeconfig to use") flagset.BoolVar(&args.Oneshot, "oneshot", false, diff --git a/deployment/helm/node-feature-discovery/templates/clusterrole.yaml b/deployment/helm/node-feature-discovery/templates/clusterrole.yaml index f935cfe41..958f043fe 100644 --- a/deployment/helm/node-feature-discovery/templates/clusterrole.yaml +++ b/deployment/helm/node-feature-discovery/templates/clusterrole.yaml @@ -94,7 +94,7 @@ rules: - update {{- end }} -{{- if and .Values.gc.enable .Values.gc.rbac.create (or (and .Values.featureGates.NodeFeatureAPI .Values.enableNodeFeatureApi) .Values.topologyUpdater.enable) }} +{{- if and .Values.gc.enable .Values.gc.rbac.create (or .Values.featureGates.NodeFeatureAPI .Values.topologyUpdater.enable) }} --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole diff --git a/deployment/helm/node-feature-discovery/templates/clusterrolebinding.yaml b/deployment/helm/node-feature-discovery/templates/clusterrolebinding.yaml index 3f717988b..8623de606 100644 --- a/deployment/helm/node-feature-discovery/templates/clusterrolebinding.yaml +++ b/deployment/helm/node-feature-discovery/templates/clusterrolebinding.yaml @@ -33,7 +33,7 @@ subjects: namespace: {{ include "node-feature-discovery.namespace" . }} {{- end }} -{{- if and .Values.gc.enable .Values.gc.rbac.create (or (and .Values.featureGates.NodeFeatureAPI .Values.enableNodeFeatureApi) .Values.topologyUpdater.enable) }} +{{- if and .Values.gc.enable .Values.gc.rbac.create (or .Values.featureGates.NodeFeatureAPI .Values.topologyUpdater.enable) }} --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding diff --git a/deployment/helm/node-feature-discovery/templates/master.yaml b/deployment/helm/node-feature-discovery/templates/master.yaml index 496a443f9..a15467c83 100644 --- a/deployment/helm/node-feature-discovery/templates/master.yaml +++ b/deployment/helm/node-feature-discovery/templates/master.yaml @@ -73,7 +73,7 @@ spec: {{- if .Values.master.instance | empty | not }} - "-instance={{ .Values.master.instance }}" {{- end }} - {{- if not (and .Values.featureGates.NodeFeatureAPI .Values.enableNodeFeatureApi) }} + {{- if not .Values.featureGates.NodeFeatureAPI }} - "-port={{ .Values.master.port | default "8080" }}" {{- else if gt (int .Values.master.replicaCount) 1 }} - "-enable-leader-election" diff --git a/deployment/helm/node-feature-discovery/templates/nfd-gc.yaml b/deployment/helm/node-feature-discovery/templates/nfd-gc.yaml index 19dd4e192..e23a25ad0 100644 --- a/deployment/helm/node-feature-discovery/templates/nfd-gc.yaml +++ b/deployment/helm/node-feature-discovery/templates/nfd-gc.yaml @@ -1,4 +1,4 @@ -{{- if and .Values.gc.enable (or (and .Values.featureGates.NodeFeatureAPI .Values.enableNodeFeatureApi) .Values.topologyUpdater.enable) -}} +{{- if and .Values.gc.enable (or .Values.featureGates.NodeFeatureAPI .Values.topologyUpdater.enable) -}} apiVersion: apps/v1 kind: Deployment metadata: diff --git a/deployment/helm/node-feature-discovery/templates/service.yaml b/deployment/helm/node-feature-discovery/templates/service.yaml index 7191dca70..a6e7678fb 100644 --- a/deployment/helm/node-feature-discovery/templates/service.yaml +++ b/deployment/helm/node-feature-discovery/templates/service.yaml @@ -1,4 +1,4 @@ -{{- if and (not (and .Values.featureGates.NodeFeatureAPI .Values.enableNodeFeatureApi)) .Values.master.enable }} +{{- if and (not .Values.featureGates.NodeFeatureAPI) .Values.master.enable }} apiVersion: v1 kind: Service metadata: diff --git a/deployment/helm/node-feature-discovery/templates/serviceaccount.yaml b/deployment/helm/node-feature-discovery/templates/serviceaccount.yaml index 59edc5e6c..740160284 100644 --- a/deployment/helm/node-feature-discovery/templates/serviceaccount.yaml +++ b/deployment/helm/node-feature-discovery/templates/serviceaccount.yaml @@ -27,7 +27,7 @@ metadata: {{- end }} {{- end }} -{{- if and .Values.gc.enable .Values.gc.serviceAccount.create (or (and .Values.featureGates.NodeFeatureAPI .Values.enableNodeFeatureApi) .Values.topologyUpdater.enable) }} +{{- if and .Values.gc.enable .Values.gc.serviceAccount.create (or .Values.featureGates.NodeFeatureAPI .Values.topologyUpdater.enable) }} --- apiVersion: v1 kind: ServiceAccount diff --git a/deployment/helm/node-feature-discovery/templates/worker.yaml b/deployment/helm/node-feature-discovery/templates/worker.yaml index d775debca..684681324 100644 --- a/deployment/helm/node-feature-discovery/templates/worker.yaml +++ b/deployment/helm/node-feature-discovery/templates/worker.yaml @@ -72,7 +72,7 @@ spec: command: - "nfd-worker" args: -{{- if not (and .Values.featureGates.NodeFeatureAPI .Values.enableNodeFeatureApi) }} +{{- if not .Values.featureGates.NodeFeatureAPI }} - "-server={{ include "node-feature-discovery.fullname" . }}-master:{{ .Values.master.service.port }}" {{- end }} {{- if .Values.tls.enable }} diff --git a/deployment/helm/node-feature-discovery/values.yaml b/deployment/helm/node-feature-discovery/values.yaml index e3574ac23..a5f94df37 100644 --- a/deployment/helm/node-feature-discovery/values.yaml +++ b/deployment/helm/node-feature-discovery/values.yaml @@ -10,8 +10,6 @@ nameOverride: "" fullnameOverride: "" namespaceOverride: "" -enableNodeFeatureApi: true - featureGates: NodeFeatureAPI: true NodeFeatureGroupAPI: false diff --git a/docs/deployment/helm.md b/docs/deployment/helm.md index 2c56e0e54..de727eae4 100644 --- a/docs/deployment/helm.md +++ b/docs/deployment/helm.md @@ -101,7 +101,6 @@ Chart parameters are available. | `featureGates.NodeFeatureAPI` | bool | true | Enable the [NodeFeature](../usage/custom-resources.md#nodefeature) CRD API for communicating node features. This will automatically disable the gRPC communication. | | `featureGates.NodeFeatureGroupAPI` | bool | false | Enable the [NodeFeatureGroup](../usage/custom-resources.md#nodefeaturegroup) CRD API. | | `featureGates.DisableAutoPrefix` | bool | false | Enable [DisableAutoPrefix](../reference/feature-gates.md#disableautoprefix) feature gate. Disables automatic prefixing of unprefixed labels, annotations and extended resources. | -| `enableNodeFeatureApi`| bool | true | Enable the [NodeFeature](../usage/custom-resources.md#nodefeature) CRD API for communicating node features. This will automatically disable the gRPC communication. **DEPRECATED**: will be removed in NFD v0.17, use `featureGates.NodeFeatureAPI` instead. | | `prometheus.enable` | bool | false | Specifies whether to expose metrics using prometheus operator | | `prometheus.labels` | dict | {} | Specifies labels for use with the prometheus operator to control how it is selected | | `prometheus.scrapeInterval` | string | 10s | Specifies the interval by which metrics are scraped | diff --git a/docs/reference/master-commandline-reference.md b/docs/reference/master-commandline-reference.md index a64670e3a..ffdd07e90 100644 --- a/docs/reference/master-commandline-reference.md +++ b/docs/reference/master-commandline-reference.md @@ -175,27 +175,6 @@ nfd-master -verify-node-name -ca-file=/opt/nfd/ca.crt \ -cert-file=/opt/nfd/master.crt -key-file=/opt/nfd/master.key ``` -### -enable-nodefeature-api - -**DEPRECATED**: will be removed in NFD v0.17. Use' -[`-feature-gates`](#-feature-gates) -[NodeFeatureAPI](feature-gates.md#nodefeatureapi) instead. - -> **NOTE** the gRPC API is deprecated and will be removed in a future release. - -The `-enable-nodefeature-api` flag enables/disables the -[NodeFeature](../usage/custom-resources.md#nodefeature) CRD API for receiving -feature requests. This will also automatically disable/enable the gRPC -interface. - -Default: true - -Example: - -```bash -nfd-master -enable-nodefeature-api=false -``` - ### -enable-leader-election The `-enable-leader-election` flag enables leader election for NFD-Master. diff --git a/pkg/nfd-master/nfd-master.go b/pkg/nfd-master/nfd-master.go index b9a1de156..e34bb3e5f 100644 --- a/pkg/nfd-master/nfd-master.go +++ b/pkg/nfd-master/nfd-master.go @@ -111,16 +111,15 @@ type ConfigOverrideArgs struct { // Args holds command line arguments type Args struct { - CaFile string - CertFile string - ConfigFile string - Instance string - KeyFile string - Klog map[string]*utils.KlogFlagVal - Kubeconfig string - CrdController bool - EnableNodeFeatureApi bool - Port int + CaFile string + CertFile string + ConfigFile string + Instance string + KeyFile string + Klog map[string]*utils.KlogFlagVal + Kubeconfig string + CrdController bool + Port int // GrpcHealthPort is only needed to avoid races between tests (by skipping the health server). // Could be removed when gRPC labler service is dropped (when nfd-worker tests stop running nfd-master). GrpcHealthPort int @@ -337,7 +336,7 @@ func (m *nfdMaster) Run() error { grpcErr := make(chan error) // If the NodeFeature API is enabled, don'tregister the labeler API // server. Otherwise, register the labeler server. - if !nfdfeatures.NFDFeatureGate.Enabled(nfdfeatures.NodeFeatureAPI) || !m.args.EnableNodeFeatureApi { + if !nfdfeatures.NFDFeatureGate.Enabled(nfdfeatures.NodeFeatureAPI) { go m.runGrpcServer(grpcErr) } @@ -392,7 +391,7 @@ func (m *nfdMaster) Run() error { m.updaterPool.start(m.config.NfdApiParallelism) // Update all nodes when the configuration changes - if m.nfdController != nil && nfdfeatures.NFDFeatureGate.Enabled(nfdfeatures.NodeFeatureAPI) && m.args.EnableNodeFeatureApi { + if m.nfdController != nil && nfdfeatures.NFDFeatureGate.Enabled(nfdfeatures.NodeFeatureAPI) { m.nfdController.updateAllNodesChan <- struct{}{} } @@ -490,7 +489,7 @@ func (m *nfdMaster) runGrpcServer(errChan chan<- error) { func (m *nfdMaster) nfdAPIUpdateHandler() { // We want to unconditionally update all nodes at startup if gRPC is // disabled (i.e. NodeFeature API is enabled) - updateAll := nfdfeatures.NFDFeatureGate.Enabled(nfdfeatures.NodeFeatureAPI) && m.args.EnableNodeFeatureApi + updateAll := nfdfeatures.NFDFeatureGate.Enabled(nfdfeatures.NodeFeatureAPI) updateNodes := make(map[string]struct{}) nodeFeatureGroup := make(map[string]struct{}) updateAllNodeFeatureGroups := false @@ -1512,7 +1511,7 @@ func (m *nfdMaster) startNfdApiController() error { } klog.InfoS("starting the nfd api controller") m.nfdController, err = newNfdController(kubeconfig, nfdApiControllerOptions{ - DisableNodeFeature: !nfdfeatures.NFDFeatureGate.Enabled(nfdfeatures.NodeFeatureAPI) || !m.args.EnableNodeFeatureApi, + DisableNodeFeature: !nfdfeatures.NFDFeatureGate.Enabled(nfdfeatures.NodeFeatureAPI), ResyncPeriod: m.config.ResyncPeriod.Duration, }) if err != nil { diff --git a/pkg/nfd-worker/nfd-worker.go b/pkg/nfd-worker/nfd-worker.go index b9bb87f60..460041850 100644 --- a/pkg/nfd-worker/nfd-worker.go +++ b/pkg/nfd-worker/nfd-worker.go @@ -97,19 +97,18 @@ type Labels map[string]string // Args are the command line arguments of NfdWorker. type Args struct { - CaFile string - CertFile string - ConfigFile string - EnableNodeFeatureApi bool - KeyFile string - Klog map[string]*utils.KlogFlagVal - Kubeconfig string - Oneshot bool - Options string - Server string - ServerNameOverride string - MetricsPort int - GrpcHealthPort int + CaFile string + CertFile string + ConfigFile string + KeyFile string + Klog map[string]*utils.KlogFlagVal + Kubeconfig string + Oneshot bool + Options string + Server string + ServerNameOverride string + MetricsPort int + GrpcHealthPort int Overrides ConfigOverrideArgs } @@ -391,7 +390,7 @@ func (w *nfdWorker) Run() error { return err } // Manage connection to master - if w.config.Core.NoPublish || !features.NFDFeatureGate.Enabled(features.NodeFeatureAPI) || !w.args.EnableNodeFeatureApi { + if w.config.Core.NoPublish || !features.NFDFeatureGate.Enabled(features.NodeFeatureAPI) { w.grpcDisconnect() } @@ -735,7 +734,7 @@ func getFeatureLabels(source source.LabelSource, labelWhiteList regexp.Regexp) ( // advertiseFeatures advertises the features of a Kubernetes node func (w *nfdWorker) advertiseFeatures(labels Labels) error { - if features.NFDFeatureGate.Enabled(features.NodeFeatureAPI) && w.args.EnableNodeFeatureApi { + if features.NFDFeatureGate.Enabled(features.NodeFeatureAPI) { // Create/update NodeFeature CR object if err := w.updateNodeFeatureObject(labels); err != nil { return fmt.Errorf("failed to advertise features (via CRD API): %w", err)