diff --git a/pkg/nfd-master/nfd-master-internal_test.go b/pkg/nfd-master/nfd-master-internal_test.go index 548fcfebdf..3f6b1fbc4e 100644 --- a/pkg/nfd-master/nfd-master-internal_test.go +++ b/pkg/nfd-master/nfd-master-internal_test.go @@ -576,6 +576,8 @@ func TestConfigParse(t *testing.T) { So(err, ShouldBeNil) master := m.(*nfdMaster) overrides := `{"noPublish": true, "enableTaints": true, "extraLabelNs": ["added.ns.io","added.kubernetes.io"], "denyLabelNs": ["denied.ns.io","denied.kubernetes.io"], "resourceLabels": ["vendor-1.com/feature-1","vendor-2.io/feature-2"], "labelWhiteList": "foo"}` + // Set fake (and invalid) apiserver address so that configuration doesn't fail in parsing the kubeconfig + os.Setenv("KUBERNETES_MASTER", ".") Convey("and no core cmdline flags have been specified", func() { So(master.configure("non-existing-file", overrides), ShouldBeNil) diff --git a/pkg/nfd-master/nfd-master.go b/pkg/nfd-master/nfd-master.go index 754fcce056..bf37bf4758 100644 --- a/pkg/nfd-master/nfd-master.go +++ b/pkg/nfd-master/nfd-master.go @@ -749,10 +749,6 @@ func (m *nfdMaster) nfdAPIUpdateOneNode(node *corev1.Node) error { return objs[i].Namespace < objs[j].Namespace }) - if m.config.NoPublish { - return nil - } - klog.V(1).InfoS("processing of node initiated by NodeFeature API", "nodeName", node.Name) features := nfdv1alpha1.NewNodeFeatureSpec() @@ -854,6 +850,11 @@ func (m *nfdMaster) refreshNodeFeatures(node *corev1.Node, labels map[string]str taints = filterTaints(crTaints) } + if m.config.NoPublish { + klog.V(1).InfoS("node update skipped, NoPublish=true", "nodeName", node.Name) + return nil + } + err := m.updateNodeObject(node, labels, annotations, extendedResources, taints) if err != nil { klog.ErrorS(err, "failed to update node", "nodeName", node.Name) @@ -1229,17 +1230,15 @@ func (m *nfdMaster) configure(filepath string, overrides string) error { return err } - if !c.NoPublish { - kubeconfig, err := utils.GetKubeconfig(m.args.Kubeconfig) - if err != nil { - return err - } - cli, err := k8sclient.NewForConfig(kubeconfig) - if err != nil { - return err - } - m.k8sClient = cli + kubeconfig, err := utils.GetKubeconfig(m.args.Kubeconfig) + if err != nil { + return err + } + cli, err := k8sclient.NewForConfig(kubeconfig) + if err != nil { + return err } + m.k8sClient = cli // Pre-process DenyLabelNS into 2 lists: one for normal ns, and the other for wildcard ns normalDeniedNs, wildcardDeniedNs := preProcessDeniedNamespaces(c.DenyLabelNs) diff --git a/pkg/nfd-worker/nfd-worker_test.go b/pkg/nfd-worker/nfd-worker_test.go index 4df97e7dbc..48ab0657a6 100644 --- a/pkg/nfd-worker/nfd-worker_test.go +++ b/pkg/nfd-worker/nfd-worker_test.go @@ -61,6 +61,8 @@ func setupTest(args *master.Args) testContext { // Run nfd-master instance, intended to be used as the server counterpart go func() { + // Set fake (and invalid) apiserver address so that nfd-master configuration doesn't fail in parsing the kubeconfig + os.Setenv("KUBERNETES_MASTER", ".") ctx.errs <- ctx.master.Run() close(ctx.errs) }()